某重工企業筆試題目合集(附答案)

來源:互聯網
上載者:User

由於涉及到機密問題,就不指明是什麼公司了,總之很大的了,看看吧,挺基礎也挺實用的

 

 1、 .h標頭檔中的 #ifndef/#define/#endif 的作用?

 

答:防止該標頭檔被重複引用。 

2、 #define DOUBLE(x) x+x

int i = 5*DOUBLE(5);

i 的值為      


答:為30

3、 設某32位系統下,C++程式,有以下說明和定義:

typedef union {int i; int k[5]; char c;} DATE;struct data { char cat; DATE cow; int dog;} too;

則語句 printf("%d",sizeof(too)); 的執行結果是:______

 

答:為28

4、 某些場合中需要用到死迴圈,這兩個死迴圈 for(;;) 與 while(1) 哪個代碼更高效(編譯之後的代碼更簡短)?

 

答:for(;;) 

5、 高度為8的平衡二叉樹,至少有______個節點?

 

答:54個 

6、 某32位系統下,C++程式,請計算sizeof 的值

char str[] = "www.ibegroup.com" ;char *p = str ;請計算sizeof (str ) = __ ①___sizeof ( p )  = ___②___void Foo ( char str[100]){請計算sizeof( str ) = ___③___}void *p = malloc( 100 );請計算sizeof ( p )  = ___④___

 

答:①17  ②4  ③4  ④4

7、 winsock建立TCP串連的主要實現步驟?

 

答:伺服器端:socket()建立通訊端,綁定(bind)並監聽(listen),用accept()

等待用戶端串連;發現有用戶端串連時,建立一個新的通訊端,自身重新開始等待串連;該新產生的通訊端使用send()和recv()寫讀資料,直至資料交換完畢,調用closesocket()關閉通訊端。

用戶端:socket()建立通訊端,串連(connect)伺服器,串連上後使用send()和recv()在通訊端上寫讀資料,直至資料交換完畢,調用closesocket()關閉通訊端。

8、 回答下面的問題

(1). 請問運行 Test 函數會有什麼樣的結果?

void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}

答:輸出 hello 

(2). 請問運行 Test 函數會有什麼樣的結果?

char *GetMemory(void){char p[] = "hello world";return p;}void Test(void){char *str = NULL;str = GetMemory();printf(str);}

答:無效的指標,輸出不確定

10、有如下函數

int func(int x) {     int countx = 0;     while(x)     { countx ++; x = x&(x-1); }     return countx; }

問:func(9999) 的傳回值為______

 

答:8

11、閱讀函數說明和C函數,將C函數補充完整。

[函數1說明]
  函數palindrome(chars[])的功能是:判斷字串s是否為迴文字串,若是,則返回0,否則返回-1。若一個字串順讀和倒讀都一樣時,稱該字串是迴文字串,例如:“LEVEL”是迴文字串,而“LEVAL”不是。

[函數1]int palindrome(char s[]){ char *pi, *pj;pi=s; pj=s+strlen(s)-1;while( pi<pj && (   ①   )){pi++; pj--;}if(   ②   )return -1;else return 0;}[函數2說明]  函數f(char *str,char del)的功能是;將非Null 字元串str分割成若干個子字串並輸出,del表示分割時的標誌字元。  例如若str的值為“33123333435”,del的值為‘3’,調用此函數後,將輸出三個子字串,分別為“12”、“4”和“5”。[函數2]void f(char*str, char del){ int i,j,len;len = strlen(str);i = 0;while(i<len){while(   ③   ) i++; /*忽略連續的標誌字元*//*尋找從str[i]開始直到標誌字元出現的一個子字串*/j = i + 1;while(str[j] !=del && str[j] !='\0') j++;   ④    = '\0'; /*給找到的字元序列置字串結束標誌*/printf("%s\t",&str[i]);   ⑤   ;}}

 

答:①*pi == *pj  ②pi<pj 或 *pi != *pj 

③str[i] == del  ④str[j]  ⑤i = j+1

12、用C/C++實現函數void swap(float *a,float *b),要求:①外部調用該函數能交換兩個float變數的值;②函數swap內部不能使用第三個變數。

答:void swap(float *a,float *b){*a=*a + *b;*b=*a - *b;*a=*a - *b;}

13、一個鏈表的結點結構如下:

struct Node

{

int data ;

Node *next ;

};

typedef struct Node Node ;

已知鏈表的頭結點head,寫一個函數Node * ReverseList(Node *head),要求:把這個鏈表逆序。

 

答:Node * ReverseList(Node *head){if ( head == NULL || head->next == NULL )return head;Node *p1 = head ;Node *p2 = p1->next ;Node *p3 = p2->next ;p1->next = NULL ;while ( p3 != NULL ){p2->next = p1 ;p1 = p2 ;p2 = p3 ;p3 = p3->next ;}p2->next = p1 ;head = p2 ;return head ;}

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.