C/C++筆試題

一、問答題

1.static有什麼用途?(請至少說明兩種)

1)在函數體,一個被聲明爲靜態的變量在這一函數被調用過程中維持其值不變。

2) 在模塊內(但在函數體外),一個被聲明爲靜態的變量可以被模塊內所有函數訪問,但不能被模塊外其它函數訪問。它是一個本地的全局變量。

3)在模塊內,一個被聲明爲靜態的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的模塊的本地範圍內使用

2.引用與指針有什麼區別?

1) 引用必須被初始化,指針不必。

2) 引用初始化以後不能被改變,指針可以改變所指的對象。

3) 不存在指向空值的引用,但是存在指向空值的指針。

3.描述實時系統的基本特性

   在特定時間內完成特定的任務,實時性與可靠性。

4.全局變量和局部變量在內存中是否有區別?如果有,是什麼區別?

  全局變量儲存在靜態數據庫(全局區),局部變量在堆棧。

5.什麼是平衡二叉樹?

  左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對值不大於1。

6.堆棧溢出一般是由什麼原因導致的?

  沒有回收垃圾資源。

7.什麼函數不能聲明爲虛函數?

  constructor函數不能聲明爲虛函數。

8.冒泡排序算法的時間複雜度是什麼?

  時間複雜度是O(n^2)。

9.寫出float x 與“零值”比較的if語句。

  if(x>0.000001&&x<-0.000001)

10.Internet採用哪種網絡協議?該協議的主要層次結構?

  Tcp/Ip協議

  主要層次結構爲: 應用層/傳輸層/網絡層/數據鏈路層/物理層。

11.Internet物理地址和IP地址轉換採用什麼協議?

  ARP (Address Resolution Protocol)(地址解析協議)

12.IP地址的編碼分爲哪倆部分?

 IP地址由兩部分組成,網絡號和主機號。不過是要和“子網掩碼”按位與上之後才能區分哪些是網絡位哪些是主機位。

13.用戶輸入M,N值,從1至N開始順序循環數數,每數到M輸出該數值,直至全部輸出。寫出C程序。有些,M,N值可能導致不能全部輸出 循環鏈表,用取餘操作做

#include "iostream"

#include "stdio.h"

using namespace std;

struct Node 

{

int data;//存儲1-N的值

bool flag;//標記是否已被輸出

Node *next;

};

//建立鏈表,循環鏈表,尾節點指向首節點,表長度爲N,節點的數據值爲1---N

Node* init(int N)

{

Node * head=NULL;

Node *q=NULL;

for (int i=1;i<=N;i++)

{

if (i==1)

{

Node *p=(Node *)malloc(sizeof(Node));

p->data=i;

p->flag=false;

head=p;

q=p;

q->next=head;

 

}

else

{

Node *p=(Node *)malloc(sizeof(Node));

p->data=i;p->flag=false;

q->next=p;

q=p;

q->next=head;

}

}

return head;

}

//打印所建立的循環鏈表,測試建表成功

void printLink(Node *head)

{

Node *p=head;

 

do{

cout<<p->data<<", ";

p=p->next;

}while (p!=head);

cout<<endl;

}

//判斷是否還有沒有打印出來的節點

int isallflag(Node * head)

{

Node *p=head;

int k=0;

do{

if (p->flag==false)

{

k=1;

}

p=p->next;

 

}while (p!=head);

return k;

}

//功能函數,約瑟夫環,打印出一個標記一個點,直至都打印出來

void fun(Node * head,int m)

{

Node *p=head;

   int ct=1;

   while (isallflag(head)==1)

   {

  

 

   if (ct==m)

   {

   if (p->flag==false)

   {

p->flag=true;

cout<<p->data<<endl;

 

   }

  ct=1;

p=p->next;

   

   }

   else

   {

   ct++;

   p=p->next;

   }

   }

}

int main(void)  

{  

int m=0,n=0;

cout<<"input m,n\n";

cin>>m;

cin>>n;

Node *head=init(n);

fun(head,m);

return 0;  

}  

14.不能做switch()的參數類型是: 

switch的參數不能爲實型。只能是整型和字符型

 

由“C語言筆試題庫”收集整理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章