c++試題(16)

來源:互聯網
上載者:User

編寫一個函數,作用是把一個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;
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.