編寫一個函數,作用是把一個char組成的字串迴圈右移n個。
比如原來是 abcdefghi
如果n=2,移位後應該是 hiabcdefg
函數頭是這樣的:
void LoopMove(char * pStr,int steps)
{
//請填充...
//pStr是指向以'/0'結尾的字串的指標,
//steps是要求移動的n。
}
****************************************************************************
#i nclude<iostream>
using namespace std;
void LoopMove(char* pstr, int steps)
{
char ch;
int len = strlen(pstr);//求傳入數組的長度
steps% = len; //考慮steps大於字串長度的情況
len = len - 1;//求數組最後一個下標的值
for(int i=1; i <= steps; i++)//迴圈steps次
{
ch = pstr[len];//把數組最後一個元素賦給ch
for(int k=len; k>=1;k--)
{
pstr[k] = pstr[k-1];//從最後一個元素開始把前一個數組元素賦給自己
}
pstr[0] = ch;//最後一元素到了第一個元素的位置
}
}
main()
{
char yes[] = "abcdefghi";
LoopMove(yes, 12);//
cout<<yes<<endl;
system("pause");
}
將字串逆序:
* Reverse strings */
/* li58 2005-10-27 */
#i nclude <stdio.h>
main()
{
int len,i;
char ch;
char str[100];
clrscr();
printf("input the string:");
gets(str);
len = strlen(str);
for (i=0; i<len/2; i++)
{
ch = str[i];
str[i] = str[len-i-1];
str[len-i-1] = ch;
}
puts(str);
getch();
}
*********************************************************************
1) Please write the code required to count the number of bits set in a byte.?The function should have the
prototype: int Count(unsigned char Byte);
2) Please write the code to implement the following C function:
void ReverseString(char* pString);
The argument should be a null terminated string which should be
reversed.i.e. if Hello/0 is passed in it comes out as olleH/0.
*****************************
void reverseString(char* pString)
{
int i, len;
char temp;
for (int i = 0; i < len / 2; i++)
{
temp = pString[i];
pString[i] = pString[len - i - 1];
pString[len - i - 1] = temp;
}
}
void ReverseString(char* pString)
{
int i,j;
char temp;
j = strlen(pString) - 1;
for(i = 0;i < j;i++,j--)
{
temp = pString[i];
pString[i] = pString[j];
pString[j] = pString[i];
}
}
3) Given a singly forward linked list i.e.
A->B->C->D
describe the algorithm that could efficiently reverse the order
of the list:
D->C->B->A
****************************************
1。請實現一個類型,該類型只能在棧上分配,不能從堆上分配
2。請實現一個類型,該類型只能在堆上分配,不能從棧上分配
1。重載一個private的operator new
說明:new操作符變為私人,不能這樣構造對象了:
CMyClass* pmyObj = new CMyClass(); // 堆上
只能這樣:
CMyClass myObj;// 棧上
2。將ctor作為private,寫一個public的static的CreateObject方法,在其中用new
建立object。
說明:ctor變為私人,不能這樣構造對象了
CMyClass myObj;// 棧上
只能這樣:
CMyClass* pmyObj = new CMyClass(); // 堆上
******************************************
1。在C++中有沒有純虛建構函式?
2。在c++的一個類中聲明一個static成員變數有沒有用?
3。在C++的一個類中聲明一個靜態成員函數有沒有用?
4。如何?一個非阻塞的socket?
5。setsockopt, ioctl都可以對socket的屬性進行設定,他們有什麼不同?
6。解釋一下進程和線程的區別?
7。解釋一下多播(組播)和廣播的含義?
8。多播採用的協議是什嗎?
9。在c++中純虛解構函式的作用是什嗎?請舉例說明。
10。編程,請實現一個c語言中類似atoi的函數功能(輸入可能包含非數字和空格)
1:沒有,但有虛建構函式
2:有用,簡單的說,你可以在你的類聲明一個static int i;用i來記錄在整個程式中你建立這
個類對象的個數!
3:有。
比如:effive C++上的一個例子
class Month {
public:
static const Month Jan() { return 1; }
static const Month Feb() { return 2; }
...
static const Month Dec() { return 12; }
int asInt() const // 為了方便,使Month
{ return monthNumber; } // 可以被轉換為int
private:
4 非同步選擇,
6:一個程式,進程只用一個,線程可以有多個。
7.多播是一對多點的通訊,資料報交付到一組電腦中的每一個.而廣播就是整個區域網路中的每一個電腦了.
多播是一種將報文發往多個接收者的通訊方式。在許多應用中,它比廣播更好,因為多播降低了不參與通訊的主機的負擔。簡單的主機成員報告協議( IGMP )是多播的基本模組。
廣播通常局限在單個區域網路中,對目前許多使用廣播的應用來說,可採用多播來替代廣播
9:用在基類,可以防止衍生類別對象被正確調用其解構函式
class Base{
virtual ~Base()
}
class Derind:public Base()
{
}
10:這個就非常簡單了
首先,如果字串中存在字元或者空格,就返回0,
剩下的也就非常簡單了!以下代碼經過測試
需要包含#i nclude "math.h"
int myatoi(const char *p)
{
// assert(p);
int iRe(0);
const char *pT = p;
while (*pT == '0')// 首字元為零
{
++pT;
}
int iNum = strlen(pT);
while (*pT != '/0')
{
if(47 < *pT && *p < 59) // asil48是0,57是9
{
int iTemp = *pT - 48;
iTemp = iTemp*(pow(10,--iNum));
iRe += iTemp;
}
else
{
iRe = 0;
break;
}
++pT;
}
return iRe;
}
**************************************************************
new動態分配失敗會拋出什麼異常,C++中提供了那兩個標準函數來設定異常處理HANLDER?
會拋出 std::bad_alloc,
函數是
#i nclude <new>
typedef void (*new_handler)();
new_handler set_new_handler(new_handler p) throw();
***********************************************************
不用任何局部和全域變數實現int strlen(char *a)
int strlen(char *a) {
if('/0' == *a)
return 0;
else
return 1 + strlen(a + 1);
}
*****************************
該題目的大概意思是求一個遞增排列的數列中相同數位最大長度,並返回。
比如{1,1,1,1,2,2,2,2,2,2,3,4}返回6,因為有6個2;
{2,2,3,5,5,5,6,8,8,8,8,8}返回5,因為有5個8。
計算函數已經給出來一部分,補全函數的空白處
int Max_length(int x[],int n)
{
int length=1;
for(int i=1;i<n;i++)
{
if( 空 )//if (x[i] == x[i - length])就在這兒
{
length++;
}
}
return length;
}