1. <rp id="zsypk"></rp>

      2. c語言面試題及答案

        時間:2023-02-27 02:27:21 試題 我要投稿
        • 相關(guān)推薦

        c語言面試題及答案

          導(dǎo)讀:C語言是一門通用計(jì)算機(jī)編程語言,應(yīng)用廣泛。在面試的時候刷一遍題庫,能夠幫助你加深各方面的知識點(diǎn),使自己面試成功的幾率更大。下面小編為大家?guī)韈語言面試題及答案,希望能幫助到大家。

        c語言面試題及答案

          一、選擇題(1)~(10)每小題2分,(11)~(50)每小題1分,共60分)

          在下列各題A)、B)、C)、D)四個選項(xiàng)中,只有一個選項(xiàng)是正確的,請將正確的選項(xiàng)涂寫在答題卡相應(yīng)的位置上,答在試卷上不得分。

          (1)在數(shù)據(jù)結(jié)構(gòu)中,從邏輯上可以把數(shù)據(jù)結(jié)構(gòu)分為_______。

          A)動態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu)      B)緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)

          C)線性結(jié)構(gòu)和非線性結(jié)構(gòu)    D)內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)

          答案:C

          評析:邏輯結(jié)構(gòu)反映數(shù)據(jù)元素之間的邏輯關(guān)系,線性結(jié)構(gòu)表示數(shù)據(jù)元素之間一對一的關(guān)系,非線性結(jié)構(gòu)表示數(shù)據(jù)元素之間一對多或多對一的關(guān)系。

          (2)若進(jìn)棧序列為l,2,3,4,進(jìn)棧過程中可以出棧,則下列選項(xiàng)中不可能的一個出棧序列是_______。

          A)1,4,3,2    B)2,3,4,l

          C)3,1,4,2    D)3,4, 2,1

          答案:C

          評析:棧是一種后進(jìn)先出表,在選項(xiàng)c中,先出棧的是3,說明此時棧內(nèi)必然有1,2,由于l先于2進(jìn)棧,所以l不可能在2之前出棧,故選項(xiàng)C這種出棧序列是不可能的。

          (3)排序方法中,將整個無序序列分割成若干小的子序列并分別進(jìn)行插入排序的方法,稱為_______。

          A)希爾排序    B)冒泡排序    C)插入排序    D)選擇排序

          答案:A

          評析:希爾排序法的基本思想是:將整個無序序列分割成若干小的子序列分別進(jìn)行插入排序。

          (4)在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比較次數(shù)為_______。

          A)2      B)3       C)4        D)5

          答案:C

          評析:二分法查找是用關(guān)鍵碼與線性表的中間元素比較,然后根據(jù)比較結(jié)果來判斷是結(jié)束查找,還是在左邊或者右邊子表按相同的方法繼續(xù)查找。本題中,與ll比較的關(guān)鍵碼分別為15,8,10,12四個。

          (5)對于n個結(jié)點(diǎn)的單向鏈表(無表頭結(jié)點(diǎn)),需要指針單元的個數(shù)至少為_______。

          A)n-1    B)n    C)n+l      D)2n

          答案:C

          評析:在n個結(jié)點(diǎn)的單向鏈表(無表頭結(jié)點(diǎn))中,每個結(jié)點(diǎn)都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。

          (6)在軟件開發(fā)過程中,軟件結(jié)構(gòu)設(shè)計(jì)是描述_______。

          A)數(shù)據(jù)存儲結(jié)構(gòu)     B)軟件體系結(jié)構(gòu)    C)軟件結(jié)構(gòu)測試    D)軟件控制過程

          答案:B

          評析:從工程管理的角度來看,軟件設(shè)計(jì)分為兩步完成:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)(又稱結(jié)構(gòu)設(shè)計(jì))將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)、確定系統(tǒng)級接口、全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式。

          (7)模塊本身的內(nèi)聚是模塊獨(dú)立性的重要性度量因素之一。在7類內(nèi)聚中,具有最強(qiáng)內(nèi)聚    的一類是_______。

          A)順序性內(nèi)聚     B)過程性內(nèi)聚      C)邏輯性內(nèi)聚    D)功能性內(nèi)聚

          答案:D

          評析:內(nèi)聚性是一個模塊內(nèi)部各元素間彼此結(jié)合的緊密程度的度量。內(nèi)聚共有7類,它們之間的內(nèi)聚性由弱到強(qiáng)排列順序?yàn)椋号既粌?nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。

          (8)數(shù)據(jù)存儲和數(shù)據(jù)流都是_______,僅僅是所處的狀態(tài)不同。

          A)分析結(jié)果    B)事件    C)動作    D)數(shù)據(jù)

          答案:D

          評析:數(shù)據(jù)流圖有4種成分:源點(diǎn)或終點(diǎn)、處理、數(shù)據(jù)存儲和數(shù)據(jù)流。數(shù)據(jù)存儲是處于靜止?fàn)顟B(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運(yùn)動中的數(shù)據(jù)。

          (9)數(shù)據(jù)的完整性是指數(shù)據(jù)的正確性、有效性和_______。

          A)可維護(hù)性    B)獨(dú)立性    C)安全性    D)相容性

          答案:D

          評析:數(shù)據(jù)模型的完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)及其狀態(tài)的變化,以保證數(shù)據(jù)的正確性、有效性和相容性。

          (10)關(guān)系代數(shù)運(yùn)算是以_______為基礎(chǔ)的運(yùn)算。

          A)關(guān)系運(yùn)算    B)謂詞運(yùn)算    C)集合運(yùn)算     D)代數(shù)運(yùn)算

          答案:C

          評析:關(guān)系代數(shù)運(yùn)算是以關(guān)系代數(shù)作為運(yùn)算對象的一組高級運(yùn)算的集合。它的基本操作是并、交、差、笛卡爾積,另外還包垂直分割(投影)、水平分割(選擇)、關(guān)系的結(jié)合(連接)等。

          (11)能將高級語言程序轉(zhuǎn)換成目標(biāo)語言程序的是_______。

          A)調(diào)試程序    B)解釋程序    C)編譯程序      D)編輯程序

          答案:C

          評析:用高級語言編寫的程序稱為“源程序”,而計(jì)算機(jī)只能識別和執(zhí)行由0和l組成的二進(jìn)制指令,所以高級語言必須先用一種稱為“編譯程序”的軟件,把源程序翻譯成二進(jìn)制形式的“目標(biāo)程序”。

          (12) _______是構(gòu)成c語言程序的基本單位。

          A)函數(shù)    B)過程    C)子程序       D)子例程

          答案:A

          評析:c程序是由函數(shù)構(gòu)成的。一個c源程序至少包含一個main函數(shù),也可以包含一個main函數(shù)和若干個其他函數(shù),因此,函數(shù)是c程序的基本單位。

          (13)可以在C語言中用做用戶標(biāo)識符的是_______。

          A)void    B)as_b3    C)for        D)2c

          define    _123       -abc        Do

          WORD       If        cas         SIG

          答案:B

          評析:在c語言中規(guī)定,標(biāo)識符只能由字母、數(shù)字和下劃線三種符號所組成,而且第一個字符必須是字母或下劃線。另外還需要注意的是關(guān)鍵字不能作標(biāo)識符。選項(xiàng)A中void,C中for都為關(guān)鍵字,D中2c以字母開頭。

          (14)若有以下類型說明語句:

          char w;int x;float y,z;

          則表達(dá)式w*x+z-y的結(jié)果為________類型。

          A)float    B)char     C)int   D)double

          答案:A

          評析:在進(jìn)行運(yùn)算時,不同類型的數(shù)據(jù)參加運(yùn)算,需要先將其轉(zhuǎn)換成同一類型的數(shù)據(jù),然后再進(jìn)行運(yùn)算。轉(zhuǎn)換的順序由低到高為:char,short→int→unsigned→long→double→float,故結(jié)果為float型。

          (15)main(()

          {  float x=123A56;

          printf(“%-5.2f ”,x);

          }

          以上程序輸出的結(jié)果是________。

          A)123.4    B)123.5      C)123.45    D)123.46

          答案:D

          評析:f格式符,用來輸出實(shí)數(shù),以小數(shù)的形式輸出。“%-m.nf”的含義是:輸出數(shù)據(jù)共占m列,其中n位小數(shù),如果輸出位數(shù)小于m。則右端補(bǔ)空格。如果總長度大于列數(shù),則按實(shí)際情況四舍五入輸出。

          (16)下面語句的輸出結(jié)果是________。

          Printf(“%d\n”,strlen(“\t\”\065\xff\n”));

          A)14          B)8

          C)5           D)輸出項(xiàng)不合法,無正常輸出

          答案:C

          評析:在c語言中,以“\”開頭的字符均為轉(zhuǎn)義字符,其中“\”后可跟l~3位八進(jìn)制數(shù)或在“\”后跟字母x及l(fā)~2位十六進(jìn)制數(shù),以此來代表一個特定的字符。

          (17)下列程序的輸出結(jié)果是________。

          main()

          {  int a=0,b=0,c=0;

          if(++a>0lI++b>0)++c;

          printf(“\na=%d,b=%d,c=%d”,a,b,C);

          }

          A)a=0,b=0,c=0       B)a=l,b=l,c=1

          C)a=l,b=O, c=I       D)a=0, b=1.c=1

          答案:C

          評析:

          “︱︱”是或運(yùn)算,它有個“短路”的特點(diǎn)需要特別注意,當(dāng)“︱︱”運(yùn)算符左邊的表達(dá)式的值為真時,則程序就不再對“︱︱”右邊的表達(dá)式的值去進(jìn)行運(yùn)算,而是使得整個表達(dá)式的值直接為真。

          (18)下列程序的輸出結(jié)果是_________。

          Main()

          {  int i;

          for(i=1;i+l;i++)

          {  if(i>4){printlf(”%d”,i++);break;}

          }

          printf(“%d”,i++);

          }

          A)55                    B)56

          C)程序錯誤,沒有輸出    D)循環(huán)條件永遠(yuǎn)為真,死循環(huán)

          答案:B

          評析:本程序中有個for循環(huán),但注意到for循環(huán)的條件是“i+l”,也就是只要i+l的值為真(非零值均為真),就執(zhí)行循環(huán)。當(dāng)i=l的時,i+l的值為真,判斷if條件不成立,執(zhí)行i++,輸出i的值為5。

          (19)下列程序的輸出結(jié)果是_________。

          #define A 100

          main()

          {  int i=O,sum=O;

          do{  if(I==(i/2)*2)continue;

          sum+=i;

          }while(++i<A);

          printf(“%d\n”,sum);

          }

          A)2500    B)2050    C)4    D)O

          答案:A

          評析:本題程序的功能是求1到_99之問(包括1和99)所有奇數(shù)之和。程序中的while循環(huán)的終止條件為++i=100,在while循環(huán)體內(nèi),如果i是偶數(shù),則執(zhí)行continue,跳過這一次循環(huán),去執(zhí)行下一次循環(huán),否則求和。最后輸出的值是1到99之間(包括l和99)所有奇數(shù)之和(1+99)*50/2=2500。

          (20)下列程序的輸出結(jié)果是_________。

          main()

          {  int I=3;

          switch(i)

          { case 1:

          case 2:printf(”%d”,i);

          case 3:

          case 4:break;

          default:printf(”O(jiān)K”);

          }

          }

          A)0    B)3    C)OK    D)沒有任何輸出

          答案:D

          評析:在本題中,i的值為3,由于“case 3:”后面沒有break語句,所以繼續(xù)向下執(zhí)行“case 4:”后面的語句,由于“case 4:”后面的語句為break強(qiáng)行退出switch語句,所以,本題沒有任何輸出。

          (21)下列程序執(zhí)行后的輸出結(jié)果是________。

          main()

          {  int m[][3]={1,4,7,2,5,8,3,6,9};

          int i,k=2:

          for(I=0;i<3;i++)

          {printf(”%d”,m[k][i]);}

          }

          A)456    B)258    C)369    D)789

          答案:C

          評析:根據(jù)二維數(shù)組的定義得出:m[O][O]=1,m[O][1]=4,m[O][2]=7,m[1][0]=2,rail][1]=5,m[1][2]=8,m[2][0]=3,m[2][l]=6,m[2][2]=9,所以本題的輸出是第3行的值m[2][0],m[2][1],m[2][2],即369。

          (22)設(shè)已定義洱口k為int類型變量,則以下for循環(huán)語句_________。

          for(i=0;k=-1,k=1;i++,k++)

          printf(”****\n”);

          A)判斷循環(huán)結(jié)束的條件不合法    B)是無限循環(huán)

          C)循環(huán)一次也不執(zhí)行            D)循環(huán)只執(zhí)行一次

          答案:B

          評析:本題定義了一個for循環(huán),它的循環(huán)變量是i,但由于本題并沒有去設(shè)置循環(huán)條件,所以循環(huán)的條件永遠(yuǎn)默認(rèn)為真,即無限次執(zhí)行循環(huán)。

          (23)下面程序的輸出結(jié)果是___________。

          unsigned fun(unsigned num)

          {   unsigned k=1;

          do{

          k*=num%lO;

          num/=lO;

          }while(num);

          return(k);

          }

          main()

          {  unsigned n。26;

          printf(”%d\n”,fun(n));

          }

          A)0    B)4    C)12    D)無限次循環(huán)

          答案:C

          評析:本題定義了一個fun函數(shù),用于num求和,具體執(zhí)行過程如下:

          num=26:k=k*(num%10)=1*(26%10),所以k=6,num=num/10=2;

          num=2:k=k*(num%10)=6*(2%10),所以k=12,num=num/lO=O;

          num=O:while條件不成立,所以返回k的值12.

          (24)已知字母A的ASCII碼值是65,字母a的ASCII碼值是97,以下程序_______。

          main()

          {  char a=‘A’;

          int b=20;

          printf(“%d,%o”,(a=a+a,a+b,b),a+‘a(chǎn)’-‘A’,b);

          }

          A)表達(dá)式非法,輸出零或不確定值

          B)因輸出項(xiàng)過多,無輸出或輸出不確定值

          C)輸出結(jié)果為20,141

          D)輸出結(jié)果為20,141,20

          答案:C

          評析:本題中首先輸出逗號表達(dá)式“a=a+a,a+b,b”的值,即是20。然后以八進(jìn)制的形式輸出a+‘a(chǎn)’-‘A’的值為97對應(yīng)的八進(jìn)制數(shù)141,由于最后一個表達(dá)式b沒有對應(yīng)輸出格式的輸出項(xiàng)表列就不會輸出。

          (25)C語言函數(shù)返回值的類型是由__________決定的。

          A)return語句中的表達(dá)式類型    B)調(diào)用函數(shù)的主調(diào)函數(shù)類型

          C)調(diào)用函數(shù)時臨時               D)定義函數(shù)時所指定的函數(shù)類型

          答案:D

          評析:函數(shù)值的類型應(yīng)當(dāng)是在定義函數(shù)時指定的。在定義函數(shù)時對函數(shù)值說明的類型一般應(yīng)該和return語句中的表達(dá)式類型一致,如果不_致,則以函數(shù)類型為準(zhǔn),即函數(shù)類型決定返回值的類型。

          (26)下列程序執(zhí)行后輸出的結(jié)果是___________。

          int d=l:

          fun(int p)

          {  int d。5;

          d+=p++;

          printf(”%d,”,d);

          }

          main()

          {  int a=3;

          fun(a);

          d+=a++:

          printf(”%d\n”,d);

          }

          A)8,12    B)9,13    C)8,4    D)9,5

          答案:C

          評析:本題執(zhí)行過程如下:首先調(diào)用fun函數(shù),使得實(shí)參a的值3傳遞給形參p,得到局部變量d=8,打印出局部變量d的值8;返回主函數(shù)執(zhí)行“d+=a++”,此處的d為全局變量,所以d=1+3=4(由于本題是值傳遞,所以在函數(shù)fun中對p值的改變并不能引起a的改變),故本題的輸出是8,4。

          (27)已知下面的程序段,正確的判斷是_________。

          #define A 3

          #define B(A)((_A+1)‘a(chǎn))

          int a=3:

          ……

          X=3*(A+B(7));

          A)程序錯誤,不允許嵌套定義    B)X=93

          C)X=8l                        D)程序錯誤,宏定義不允許有參數(shù)

          答案:C

          評析:本題的宏定義是合法的,宏定義展開為3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

          (28)定義int*swap()指的是_______。

          A)一個返回整型值的函數(shù)swap()

          B)一個返回指向整型值指針的函數(shù)swap()

          C)一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

          D)以上說法均錯

          答案:B

          評析:一個函數(shù)可以帶回一個整型值、字符值、實(shí)型值等,但是也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和·號,由于f)優(yōu)先級高于t。故它是一個返回整型指針的函數(shù)。

          (29)以下程序段的輸出結(jié)果是__________。

          main()

          {   char s1[10],s2[10],s3[10];

          scanf(”%s”,s1);gets(s2);gets(s3);

          puts(s 1);puts(s2);puts(s3);

          }

          輸入數(shù)據(jù)如下:  (此處代表回車符)

          aaa

          bbb

          A)aaa    B)aaa    C)aaa\0bbb\0    D)aaabbb

          bbb

          bbb

          答案:B

          評析:scanf是標(biāo)準(zhǔn)的輸入函數(shù),在輸入字符串a(chǎn)aa時,實(shí)際的內(nèi)容為“aaa99热这里只有精品国产7_欧美色欲色综合色欲久久_中文字幕无码精品亚洲资源网久久_91热久久免费频精品无码

          1. <rp id="zsypk"></rp>