學(xué)習(xí)啦 > 創(chuàng)業(yè)指南 > 職場(chǎng) > 筆試題 > C/C++筆試題目

C/C++筆試題目

時(shí)間: 護(hù)托1061 分享

C/C++筆試題目

  C++這個(gè)詞在中國(guó)大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,“CPP”。 它是一種使用非常廣泛的計(jì)算機(jī)編程語(yǔ)言。下面就由學(xué)習(xí)啦小編為大家介紹一下C/C++筆試題目的文章,歡迎閱讀。

  C/C++筆試題目篇1

  1.編寫my_strcpy函數(shù),實(shí)現(xiàn)與庫(kù)函數(shù)strcpy類似的功能,不能使用任何庫(kù)函數(shù);

  答:char *strcpy(char *strDest, const char *strSrc)

  {

  if ( strDest == NULL || strSrc == NULL)

  return NULL ;

  if ( strDest == strSrc)

  returnstrDest ;

  char *tempptr = strDest ;

  while( (*strDest++ = *strSrc++) != ‘’);

  returntempptr ;

  }

  2. 頭文件中的ifndef/define/endif的作用?

  答:防止該頭文件被重復(fù)引用。

  3. #i nclude與#i nclude “file.h”的區(qū)別?

  答:前者編譯器從標(biāo)準(zhǔn)庫(kù)路徑開始搜索file.h,而后者編譯器從用戶的工作路徑開始搜索file.h。

  4. 在C++ 程序中調(diào)用被C 編譯器編譯后的函數(shù),為什么要加extern“C”?

  答:extern是C/C++語(yǔ)言中表明函數(shù)和全局變量作用范圍(可見(jiàn)性)的關(guān)鍵字,其聲明的函數(shù)和變量可以在本模塊或其它模塊中使用。

  通常,在模塊的頭文件中對(duì)本模塊提供給其它模塊引用的函數(shù)和全局變量以關(guān)鍵字extern聲明。

  5. 面向?qū)ο蟮娜齻€(gè)基本特征,并簡(jiǎn)單敘述之?

  答:1)封裝:將客觀事物抽象成類,每個(gè)類對(duì)自身的數(shù)據(jù)和方法實(shí)行protection(private, protected,public)

  2)繼承:實(shí)現(xiàn)繼承(指使用基類的屬性和方法而無(wú)需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實(shí)現(xiàn)代碼)、接口繼承(僅使用屬性和方法,實(shí)現(xiàn)滯后到子類實(shí)現(xiàn))。

  3)多態(tài):允許將子類類型的指針賦值給父類類型的指針。

  C/C++筆試題目篇2

  1. 重載(overload)和重寫(overried,有的書也叫做“覆蓋”)的區(qū)別?

  答:從定義上來(lái)說(shuō):

  重載:是指允許存在多個(gè)同名函數(shù),而這些函數(shù)的參數(shù)表不同(或許參數(shù)個(gè)數(shù)不同,或許參數(shù)類型不同,或許兩者都不同)。

  重寫:是指子類重新定義復(fù)類虛函數(shù)的方法。

  從實(shí)現(xiàn)原理上來(lái)說(shuō):

  重載:編譯器根據(jù)函數(shù)不同的參數(shù)表,對(duì)同名函數(shù)的名稱做修飾,然后這些同名函數(shù)就成了不同的函數(shù)。

  重寫:當(dāng)子類重新定義了父類的虛函數(shù)后,父類指針根據(jù)賦給它的不同的子類指針,動(dòng)態(tài)的調(diào)用屬于子類的該函數(shù),這樣的函數(shù)調(diào)用在編譯期間是無(wú)法確定的(調(diào)用的子類的虛函數(shù)的地址無(wú)法給出)。

  2. 多態(tài)的作用?

  答:主要是兩個(gè):1)隱藏實(shí)現(xiàn)細(xì)節(jié),使得代碼能夠模塊化;擴(kuò)展代碼模塊,實(shí)現(xiàn)代碼重用;2)接口重用,為了類在繼承和派生的時(shí)候,保證使用家族中任一類的實(shí)例的某一屬性時(shí)的正確調(diào)用。

  3. 分別寫出BOOL,int,float,指針類型的變量a 與“零”的比較語(yǔ)句。

  答:BOOL :if ( !a ) or if(a)

  int :if ( a ==0)

  float :const EXPRESSION EXP = 0.000001

  if ( a < EXP && a >-EXP)

  pointer : if ( a != NULL) or if(a == NULL)

  4. 請(qǐng)說(shuō)出const與#define 相比,有何優(yōu)點(diǎn)?

  答案:1) const 常量有數(shù)據(jù)類型,而宏常量沒(méi)有數(shù)據(jù)類型。編譯器可以對(duì)前者進(jìn)行類型安全檢查。而對(duì)后者只進(jìn)行字符替換,沒(méi)有類型安全檢查,并且在字符替換可能會(huì)產(chǎn)生意料不到的錯(cuò)誤。

  2) 有些集成化的調(diào)試工具可以對(duì)const 常量進(jìn)行調(diào)試,但是不能對(duì)宏常量進(jìn)行調(diào)試。

  5.簡(jiǎn)述數(shù)組與指針的區(qū)別?

  數(shù)組要么在靜態(tài)存儲(chǔ)區(qū)被創(chuàng)建(如全局?jǐn)?shù)組),要么在棧上被創(chuàng)建。指針可以隨時(shí)指向任意類型的內(nèi)存塊。

  (1)修改內(nèi)容上的差別

  char a[] = “hello”;

  a[0] = ‘X’;

  char *p = “world”; // 注意p 指向常量字符串

  p[0] = ‘X’; // 編譯器不能發(fā)現(xiàn)該錯(cuò)誤,運(yùn)行時(shí)錯(cuò)誤

  (2) 用運(yùn)算符sizeof 可以計(jì)算出數(shù)組的容量(字節(jié)數(shù))。sizeof(p),p 為指針得到的是一個(gè)指針變量的字節(jié)數(shù),而不是p 所指的內(nèi)存容量。C++/C 語(yǔ)言沒(méi)有辦法知道指針?biāo)傅膬?nèi)存容量,除非在申請(qǐng)內(nèi)存時(shí)記住它。注意當(dāng)數(shù)組作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí),該數(shù)組自動(dòng)退化為同類型的指針。

  char a[] = “hello world”;

  char *p = a;

  cout< cout< 計(jì)算數(shù)組和指針的內(nèi)存容量

  voidFunc(char a[100])

  {

  cout< }

  C/C++筆試題目篇3

  1.變量的聲明和定義有什么區(qū)別?

  答:聲明變量不分配空間,定義變量要分配空間。聲明主要是告訴編譯器,后面的引用都按聲明的格式。定義其實(shí)包含了聲明的意思,同時(shí)要分配內(nèi)存空間。

  2. 解釋堆和棧的區(qū)別。

  答:堆(heap)——一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表。速度比較慢,而且容易產(chǎn)生內(nèi)存碎片,不過(guò)用起來(lái)最方便。

  棧(stack)——由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。由系統(tǒng)自動(dòng)分配,速度較快。但程序員是無(wú)法控制的。

  3. const的作用是什么?

  答:(1)可以定義const常量

  (2)const可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const修飾的東西都受到強(qiáng)制保護(hù),可以預(yù)防意外的變動(dòng),能提高程序的健壯性。

  4. 下列哪兩個(gè)是等同的

  int b;

  A constint* a = &b; //指向常量的指針,不能通過(guò)指針改變b,但指針的地址可以改變。

  B const* int a = &b;// 指針的地址不可以改變,但可以通過(guò)指針改變b的值

  C constint* const a = &b; //指針指向的值,和指針本身的地址都不能改變

  D intconst* const a = &b;//與c相同

  5. 完成程序,實(shí)現(xiàn)對(duì)數(shù)組的降序排序

  #include

  void sort(int array[] );

  int main()

  {

  int array[]={45,56,76,234,1,34,23,2,3}; //數(shù)字任//意給出

  sort( array );

  return 0;

  }

  void sort( int array[] )

  {____________________________________

  inti,j,k;

  for(i=1;i<=7;i++) { if(array[i]>array[i-1])

  {

  k=ARRAY[i];

  j=i-1;

  do

  {

  array[j+1]=array[j];

  j– ;

  }

  while(k>array[j]&&j>=0);

  array[j+1]=k;

  }

  }

  —————————————————–

  }

  6. int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 輸出是多少?

  答:相當(dāng)于 i=j=4;i=k=8;i=l=16;i=m=32; 故最后i=32;

熱門文章

3157674