全國計算機(jī)等級考試《二級C語言程序設(shè)計》真題題庫匯總(含答案詳解)_第1頁
全國計算機(jī)等級考試《二級C語言程序設(shè)計》真題題庫匯總(含答案詳解)_第2頁
全國計算機(jī)等級考試《二級C語言程序設(shè)計》真題題庫匯總(含答案詳解)_第3頁
全國計算機(jī)等級考試《二級C語言程序設(shè)計》真題題庫匯總(含答案詳解)_第4頁
全國計算機(jī)等級考試《二級C語言程序設(shè)計》真題題庫匯總(含答案詳解)_第5頁
已閱讀5頁,還剩160頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PAGEPAGE1全國計算機(jī)等級考試《二級C語言程序設(shè)計》真題題庫匯總(含答案詳解)一、單選題1.待排序的關(guān)鍵碼序列為(15,20,9,30,67,65,45,90),要按關(guān)鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第()個位置。A、2B、3C、4D、5答案:B解析:簡單選擇排序的算法可以描述為:將整個待排序序列分為有序和無序兩部分,初始時有序部分為空;每一趟排序時掃描無序序列,找到最小的元素,將它與無序序列的首元素交換位置,直到無序序列為空。所以第一趟排序后,將選出的最小元素9與15交換,15被放在第3個位置。答案選擇B選項。2.有如下程序:

#include<stdio.h>main()

{

inti;for(i=0;i<5;i++)putchar('9'-i);

printf("\n");

}

程序運行后的輸出結(jié)果是()。A、54321B、98765C、'9''8''7''6''5'D、'43210'答案:B解析:本題執(zhí)行過程為:i=0,輸出字符9,在i<5的情況下,依次輸出字符8、7、6、5。在i=5時,退出for循環(huán)。最后顯示在命令窗口結(jié)果為98765。答案選擇B選項。3.下列關(guān)系表達(dá)式中,結(jié)果為“假”的是()。A、(3+4)>6B、(3!=4)>2C、3<=4∥3D、(3<4)==1答案:B解析:A項,先執(zhí)行3+4=7,7>6,結(jié)果為真;B項,先執(zhí)行3!=4為真,即為

1,1>2結(jié)果為假;C項,先執(zhí)行3<=4結(jié)果為真,即1,再邏輯或運算只要左邊值為1,就不在執(zhí)行右邊運算,結(jié)果為真;D項,先執(zhí)行3<4結(jié)果為真,即為1,再執(zhí)行1==1,結(jié)果為真。答案選擇B選項。4.以下程序:

#include<stdio.h>

Voidfun(intx)

{if(x/2>1)fun(x/2);printf("%d",x);

}

Main()

{

fun(7);

printf("\n");

}

程序運行后的結(jié)果是()。A、137B、731C、73D、37答案:D解析:函數(shù)fun是遞歸函數(shù),遞歸終止條件是x小于等于3,當(dāng)大于3時遞歸調(diào)用fun(x/2)。第一次循環(huán)x/2=3,調(diào)用fun(3),x/2=1,跳出if循環(huán),執(zhí)行輸出x=3,然后回到第一次循環(huán),執(zhí)行if循環(huán)的語句,輸出x=7。答案選擇D選項。5.下列敘述中正確的是()。A、可以用關(guān)系運算符比較字符串的大小B、空字符串不占用內(nèi)存,其內(nèi)存空間大小是0C、兩個連續(xù)的單引號是合法的字符常量D、兩個連續(xù)的雙引號是合法的字符串常量答案:D解析:A項錯誤,關(guān)系運算符不能比較字符串大小,可以用函數(shù)庫中的字符串比較函數(shù)來比較字符串的大??;B項錯誤,空字符串占用一個字節(jié)的內(nèi)存;C項錯誤,字符常量是用單引號把一個字符括起來;D項正確,兩個連續(xù)的雙引號是一個字符串常量,稱為空串。答案選擇D選項。6.下列不屬于軟件工程3個要素的是()。A、工具B、過程C、方法D、環(huán)境答案:D解析:軟件工程是指用工程化的原則和方法來構(gòu)建和維護(hù)軟件,其要素包括:①方法,用于完成軟件工程項目的技術(shù)手段;②工具,用于支持軟件的開發(fā)、管理、文檔生成;③過程,用于支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。答案選擇D選項。7.在C語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。A、uto和registerB、extern和registerC、auto和staticD、static和register答案:A解析:C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時才分配內(nèi)存空間。auto變量的存儲單元是分配在內(nèi)存的動態(tài)存儲區(qū)中,每當(dāng)進(jìn)入函數(shù)體時自動分配存儲單元。register變量也是自動類變量。static說明的變量為靜態(tài)變量,靜態(tài)變量在內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運行結(jié)束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個程序運行期間都占用內(nèi)存空間。答案選擇A選項。8.有以下程序:

#include<stdio.h>voidfun(int*p,int*q)

Main(){

intm=1,n=2,*r=&m;f(r,&n);

printf("%d,%d",m,n);

}

Voidf(int*p,int*q)

{p=p+1;*q=*q+1;

}

程序運行后的輸出結(jié)果是()。A、1,3B、2,3C、1,4D、1,2答案:A解析:語句p=p+1;只改變指針p的地址,與p的內(nèi)容無關(guān),所以m值沒有改變,而語句*q=*q+1;是改變該指針?biāo)傅刂分械膬?nèi)容,所以n變?yōu)?,m不變,仍為1,答案選擇A選項。9.下列敘述中正確的是()。A、所有數(shù)據(jù)結(jié)構(gòu)必須有根結(jié)點B、所有數(shù)據(jù)結(jié)構(gòu)必須有終端結(jié)點(即葉子結(jié)點)C、只有一個根結(jié)點,且只有一個葉子結(jié)點的數(shù)據(jù)結(jié)構(gòu)一定是線性結(jié)構(gòu)D、沒有根結(jié)點或沒有葉子結(jié)點的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu)答案:D解析:D項正確,線性結(jié)構(gòu)的特點是:①集合中必存在“第一個元素”且惟一;②集合中必存在“最后一個元素”且惟一;③除最后一個元素外,其他數(shù)據(jù)元素均有惟一的“后繼”;④除第一個元素外,其他數(shù)據(jù)元素均有惟一的“前驅(qū)”。所以沒有根結(jié)點或沒有葉子結(jié)點的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu)。AB兩項錯誤,不是所有數(shù)據(jù)結(jié)構(gòu)都必須有根結(jié)點和葉子結(jié)點;C項錯誤,數(shù)據(jù)結(jié)構(gòu)中若有中間結(jié)點不滿足只有一個前件或者后件的條件,就不是線性結(jié)構(gòu)。答案選擇D選項。10.設(shè)二叉樹如下:

則后序序列為()。A、BDEGCFHB、DBGEAFHCC、DGEBHFCAD、ABCDEFGH答案:C解析:后序遍歷,先訪問左子樹,再訪問右子樹,最后訪問根結(jié)點。法一:本題中,樹不為空,所以先后序遍歷左子樹,得DGEB,再后序遍歷右子樹,得HFC,最后訪問根結(jié)點。所以該二叉樹的后序序列為

DGEBHFCA。法二:由后序遍歷的過程知,樹的根結(jié)點一定是最后遍歷到,即A結(jié)點一定在遍歷序列的最后,答案選擇C選項。11.以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù):

Voidfun(int*w,intn)

{inti;

for(i=0;i<n;i++)

{

______

printf("%d",w[i]);

}

printf("\n");

}下劃線處應(yīng)填入的語句是()。A、if(i/8==0)printf("\n");B、if(i/8==0)continue;C、if(i%8==0)printf("\n");D、if(i%8==0)continue;答案:C解析:每行輸出8個數(shù)組數(shù)據(jù)后輸入一個換行,所以應(yīng)該采取對8取余的方法,余數(shù)循環(huán)一次便換行一次,所以語句為if(i%8==0)printf("\n");答案選擇C選項。12.有以下程序:

#include<stdio.h>main(){

while(getchar()!='\n');

}

以下敘述中正確的是()。A、此while語句將無限循環(huán)B、getchar()不可以出現(xiàn)在while語句的條件表達(dá)式中C、當(dāng)執(zhí)行此while語句時,只有按回車鍵程序才能繼續(xù)執(zhí)行D、當(dāng)執(zhí)行此while語句時,按任意鍵程序就能繼續(xù)執(zhí)行答案:C解析:本題中while循環(huán)條件為getchar()!='\n',表示只要不輸入回車鍵,getchar()!='\n'語句一直為真,則while循環(huán)會出現(xiàn)空循環(huán),當(dāng)按下回車鍵后跳出while循環(huán)執(zhí)行下一條語句。答案選擇C選項。13.有以下函數(shù):

#include<stdio.h>

Voidfunc(intn)

{inti;for(i=0;i<=n;i++)printf("*");printf("#");

}main(){func(3);printf("????");func(4);

printf("\n");

}

程序運行后的輸出結(jié)果是()。A、****#????***#B、***#????*****#C、**#????*****#D、****#????*****#答案:D解析:從main函數(shù)開始,執(zhí)行func(3)函數(shù),for循環(huán)執(zhí)行4次,連續(xù)輸出四個

“*”,然后輸出一個“#”;輸出“????”;再次調(diào)用func(4),for循環(huán)執(zhí)行5

次,連續(xù)輸出五個“*”,然后輸出一個“#”;最后輸出換行符。答案選擇D選項。14.有以下程序:

#include<stdio.h>intb=2;

Intfun(int*k)

{

b=*k+b;

return(b);}main(){

inta[10]={1,2,3,4,5,6,7,8},i;

for(i=2;i<4;i++)

{

b=fun(&a[i])+b;

printf("%d",b);

}

printf("\n");

}

程序運行后的輸出結(jié)果是()。A、1012B、810C、1028D、1016答案:C解析:因為int是全局變量,所以它的值在整個程序結(jié)束時才會消失。for循環(huán)第一次i=2,a[i]=3,所以fun(&a[i])=3+2=5,這時b為5,所以

B=fun(&a[i])+b=5+5=10。第二次循環(huán)時,b=10,然后fun(&a[i]),代入a[i]=4,這時fun(&a[i])=10+4=14,所以b=fun(&a[i])+b=14+14=28。答案選擇C選項。15.以下敘述中錯誤的是()。A、當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULLB、函數(shù)可以返回地址值C、改變函數(shù)形參的值,不會改變對應(yīng)實參的值D、可以給指針變量賦一個整數(shù)作為地址值答案:D解析:A項正確,NULL是在頭文件stdio.h中定義的符號常量;B項正確,函數(shù)的返回值可以是地址,即指針;C項正確,函數(shù)調(diào)用中形參值的變化不會傳遞給實參;D項錯誤,不能將一個整數(shù)直接賦給指針變量作為地址,只能用取地址運算符“&”把該整型變量的地址賦值給該指針變量。答案選擇D選項。16.有以下程序

#include<stdio.h>main()

{

intx,y,z;x=y=1;

z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);

}

程序運行后的輸出結(jié)果是()。A、2,3,1B、2,3,2C、2,3,3D、2,2,1答案:A解析:注意區(qū)分,z=x++是先將x的值賦給z,在令x自增;z=++x是先將x自

增,再將自增后的值賦給z;而無論是++x還是x++,都會完成x自增的運算。對于表達(dá)式“z=x++,y++,++y;”,因為賦值運算符的優(yōu)先級高于逗號運算符的優(yōu)先級,所以可以將上式改成“(z=x++),(y++),(++y)”。然后從左向右先計算表達(dá)式z=x++,后綴自增運算先進(jìn)行其他運算,再執(zhí)行自增運算,所以z的值為1,x的值為2,再計算逗號表達(dá)式第二個表達(dá)式y(tǒng)++,此時y的值為1,y++的值為2,最后計算第三個表達(dá)式++y,y的值為3。答案選擇A選項。17.若要實現(xiàn)total=1+2+3+4+5求和,以下程序段錯誤的是()。A、inti=1,total=1;while(i<5){total+=i;i+=1;}B、inti=1,total=0;while(i<=5){total+=i;i+=1;}C、inti=0,total=0;while(i<5){i+=1;total+=i;}D、inti=0,total=0;while(i<=5){total+=i;i+=1;}答案:A解析:A項執(zhí)行過程為:i=1,total=1,判斷while循環(huán)條件1<5成立,total=1+1,i=2;判斷循環(huán)條件執(zhí)行函數(shù)體,直到i=4,total=1+1+2+3+4,i=5;i=5循環(huán)條件不成立,退出循環(huán),A項不能實現(xiàn)題目要求,錯誤。B項執(zhí)行過程:i=1,total=0,1<=5成立,total=0+1=1,i=2;直到i=5,total=1+2+3+4+5,i=6;i=6條件不成立,退出循環(huán),程序正確。C項執(zhí)行過程:i=0,total=0,0<5成立,i=1,total=1;直到i=5,total=1+2+3+4+5;i=5條件不成立,退出循環(huán),程序正確。D項執(zhí)行過程:i=0,total=0,0<=5成立,total=0,i=1;直到i=5,total=1+2+3+4+5,i=6;i=6條件不成立,退出循環(huán),程序正確。18.以下敘述中正確的是()。A、break語句不能用于提前結(jié)束for語句的本層循環(huán)B、使用break語句可以使流程跳出switch語句體C、ontinue語句使得整個循環(huán)終止D、在for語句中,continue與break的效果是一樣的,可以互換答案:B解析:B項正確,break語句可以跳出switch語句和循環(huán)。A項錯誤,break語句在for循環(huán)內(nèi)部的作用是跳出循環(huán);C項錯誤,continue語句的作用是跳過本次循環(huán)體中余下尚未執(zhí)行的語句,立刻進(jìn)行下一次的循環(huán)條件判定,即僅結(jié)束本次循環(huán),并沒有使整個循環(huán)終止;D項錯誤,continue和break的效果完全不同。答案選擇B選項。19.有以下程序段

#include<stdio.h>main(){int

A,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;

printf("a=%db=%dc=%d\n",a,b,c);

}

程序的輸出結(jié)果是()。A、=10b=50c=30B、a=10b=50c=10C、a=10b=30c=10D、a=50b=30c=50答案:B解析:C語言中使用分號來作為語句的結(jié)束,所以a=b,b=c;是一條含有逗號運算符的語句,是if語句的執(zhí)行體。因為題中a<b,if條件不滿足,直接執(zhí)行c=a。答案選擇B選項。20.下列敘述中,不符合良好程序設(shè)計風(fēng)格要求的是()。A、程序的效率第一,清晰第二B、程序的可讀性好C、程序中要有必要的注釋D、輸入數(shù)據(jù)前要有提示信息答案:A解析:“清晰第一,效率第二”是當(dāng)今主導(dǎo)的程序設(shè)計風(fēng)格。對程序的要求不僅是能夠運行正常,還要便于調(diào)試和維護(hù),所以程序要具有良好的可讀性,語句結(jié)構(gòu)應(yīng)該簡單直接,這有利于程序的開發(fā)與維護(hù)。答案選擇A選項。21.以下敘述中正確的是()。A、函數(shù)的形參類型不能是指針類型B、函數(shù)的類型不能是指針類型C、設(shè)有指針變量為double*p,則p+1將指針p移動8個字節(jié)D、基類型不同的指針變量可以相互混用答案:C解析:C項正確,一般情況下,double類型的變量長度為8個字節(jié),對指針進(jìn)行加、減運算時,數(shù)字“1”指1個存儲單元長度。A項錯誤,函數(shù)的形參可以是數(shù)值類型,也可以是指針類型;B項錯誤,C語言中有指向函數(shù)的指針,稱為函數(shù)指針;D項錯誤,int類型的指針只能指向int,不能指向double,基類型不同的指針變量不能混用。答案選擇C選項。22.以下敘述中正確的是()。A、在C語言中,預(yù)處理命令行都以“#”開頭B、預(yù)處理命令行必須位于C源程序的起始位置C、#include<stdio.h>必須放在C程序的開頭D、C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能答案:A解析:“編譯預(yù)處理”就是在C編譯程序?qū)源程序進(jìn)行編譯前,由編譯預(yù)處理程序?qū)@些編譯預(yù)處理命令行進(jìn)行處理的過程。A項正確,在C語言中,凡是以“#”號開頭的行,都稱為“編譯預(yù)處理”命令行。B項錯誤,預(yù)處理命令行可以出現(xiàn)在程序的任何一行的開始部位,其作用一直持續(xù)到源文件的末尾;C項錯誤,#include<stdio.h>可以出現(xiàn)在程序的任意一行的開始部位;D項錯誤,預(yù)處理可以實現(xiàn)宏定義、條件編譯和文件包含。答案選擇A選項。23.下列敘述中正確的是()。A、棧是“先進(jìn)先出”的線性表B、隊列是“先進(jìn)后出”的線性表C、循環(huán)隊列是非線性結(jié)構(gòu)D、有序線性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)答案:D解析:有序的線性表既可采用順序存儲結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。A項錯誤,棧是“先進(jìn)后出”的線性表;B項錯誤,隊列是“先進(jìn)先出”的線性表;C項錯誤,循環(huán)隊列是線性結(jié)構(gòu)的,有序的線性表既可采用順序存儲結(jié)構(gòu),也可采用鏈?zhǔn)酱鎯Y(jié)構(gòu)。答案選擇D選項。24.有以下程序:

#include<stdio.h>main()

{inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3;

printf("%d\n",b);

}

程序運行后的輸出結(jié)果是()。A、0B、1C、2D、3答案:C解析:“++”和“--”運算,當(dāng)以前綴形式出現(xiàn)時,則先進(jìn)行加一或減一操作,再進(jìn)行其他運算,當(dāng)以后綴形式出現(xiàn)時,則先進(jìn)行其他運算,再進(jìn)行加一或減一操作。a初始定義為1,b為0,執(zhí)行--a,a的值變?yōu)?,--a的

值也為0,即if判斷為假,執(zhí)行b+=2,輸出b的值為2。答案選擇C選項。25.以下敘述中正確的是()。A、簡單遞歸不需要明確的結(jié)束遞歸的條件B、任何情況下都不能用函數(shù)名作為實參C、函數(shù)的遞歸調(diào)用不需要額外開銷,所以效率很高D、函數(shù)既可以直接調(diào)用自己,也可以間接調(diào)用自己答案:D解析:D項正確,C語言中的函數(shù)可以直接或間接地自己調(diào)用自己,前者稱簡單遞歸,后者稱間接遞歸。A項錯誤,遞歸必定要有一個明確的結(jié)束遞歸的條件;B項錯誤,遞歸就是把函數(shù)名作為實參的一種特殊情況;C項錯誤,函數(shù)的遞歸調(diào)用過程中,系統(tǒng)要為每一層調(diào)用中的變量開辟存儲單元,記住每一層調(diào)用后的返回點,要增加許多額外的開銷,通常會降低程序的運行效率。答案選擇D選項。26.有以下程序(strcpy為字符串復(fù)制函數(shù),strcat為字符串連接函數(shù)):

#include<stdio.h>

#include<string.h>main()

{chara[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);

puts(strcat(a,c+1));

}

程序運行后的輸出結(jié)果是()。A、12xyzB、12yzC、a2yzD、bc2yz答案:C解析:先執(zhí)行strcpy,將b數(shù)組中第2個及之后位置上的字符復(fù)制到a數(shù)組中第1

個及之后的位置上的字符位置,即此時數(shù)組a中字符為a2,再執(zhí)行strcat連接函數(shù),將a中字符與c數(shù)組中第2個及之后位置上的字符連接,即為a2yz。注意,數(shù)組下標(biāo)從0開始。答案選擇C選項。27.有以下程序

#include<stdio.h>main()

{

inta=0,b=0;

/*給a賦值a=10;給b賦值b=20*/printf("a+b=%d\n",a+b);/*輸出計算結(jié)果*/

}

程序運行后的輸出結(jié)果是()。A、+b=0B、a+b=30C、a+b=10D、出錯答案:A解析:注釋/*和*/之間的代碼不參與編譯,所以a、b的值仍為0。答案選擇A選項。28.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。A、typedefstruct{intn;charc;}REC;RECt1,t2;B、structREC;{intn;charc;};RECt1,t2;C、typedefstructREC:{intn=0;charc='A';}t1,t2;RECt1,t2;D、struct{intn;charc;}REC;答案:A解析:A項,用typedef定義結(jié)構(gòu)體類型名REC后,可以用REC定義變量。B項,“structREC;”后面不應(yīng)加分號;C項,沒有這樣的書寫形式;D

項,REC定義的是一個變量,不是結(jié)構(gòu)體類型,因此不能用來定義結(jié)構(gòu)體變量。答案選擇A選項。29.有以下程序段:

Charch;intk;

Ch='a';k=12;printf("%c,%d,",ch,ch,k);

Printf("k=%d\n",k);

已知字符a的ASCII碼十進(jìn)制值為97,則執(zhí)行上述程序段后輸出的結(jié)果是()。A、因變量類型與格式描述符的類型不匹配輸出無定值B、輸出項與格式描述符個數(shù)不符,輸出為零值或不定值C、a,97,12k=12D、a,97,k=12答案:D解析:字符變量的值是該字符的ASCII碼值,可以參與整型變量所允許的任何運算?!癱h='a'”,%c表示以字符格式輸出ch的值,所以輸出為a;%d表示以十進(jìn)制代碼的形式輸出ch的值,為97;k沒有對應(yīng)的輸出格式,不輸出。在第二個語句中,首先輸出“k=”,然后以十進(jìn)制代碼輸出k的值,為12。答案選擇D選項。30.以下關(guān)于C語言函數(shù)參數(shù)傳遞方式的敘述正確的是()。A、數(shù)據(jù)只能從實參單向傳遞給形參B、數(shù)據(jù)可以在實參和形參之間雙向傳遞C、數(shù)據(jù)只能從形參單向傳遞給實參D、C語言的函數(shù),參數(shù)既可以從實參單向傳遞給形參,也可以在實參和形參之間雙向傳遞,可視情況選擇使用答案:A解析:數(shù)據(jù)只能由實參單向傳遞給形參稱為“值傳遞”,而不能由形參傳給實參,A項正確,B、C、D錯誤;數(shù)組名、指針等作參數(shù),實參傳遞給形參的是地址值,這樣形參和實參就指向同一段內(nèi)存單元,在函數(shù)體內(nèi)對形參數(shù)據(jù)的改變也將影響到實參。答案選擇A選項。31.以下敘述正確的是()。A、在C語言中調(diào)用fopen函數(shù)就可把程序中要讀、寫的文件與磁盤上實際的數(shù)據(jù)文件聯(lián)系起來B、fopen函數(shù)的調(diào)用形式為:fopen(文件名)C、fopen函數(shù)的返回值為NULL時,則成功打開指定的文件D、fopen函數(shù)的返回值必須賦給一個任意類型的指針變量答案:A解析:A項正確,C語言中打開一個文件通過系統(tǒng)函數(shù)fopen實現(xiàn),通過這個函數(shù)把程序中要讀、寫的文件與磁盤上實際的數(shù)據(jù)文件聯(lián)系起來;B項錯誤,函數(shù)調(diào)用中缺少參數(shù)“操作方法”,其調(diào)用的一般形式為:文件指針名=fopen(文件名,使用文件方式);;C項錯誤,fopen函數(shù)返回一個指向指定文件的文件指針,如果不能實現(xiàn)打開指定文件的操作,則返回一個空指針NULL;D項錯誤,fopen函數(shù)的返回值必須賦給一個文件類型的指針變量。答案選擇A選項。

二、程序填空題32.設(shè)有以下定義:

Chars1[]="0123";

Chars2[]={'0','1','2','3'};

則以下敘述正確的是()。A、數(shù)組s1的長度小于s2的長度B、數(shù)組s1和s2的長度相同C、數(shù)組s1的長度大于s2的長度D、數(shù)組s1和s2完全等價答案:C解析:字符數(shù)組s1賦值字符串"0123",字符串中字符依次放入數(shù)組中,在最后一個字符后要添加一個結(jié)束字符'\0',數(shù)組s1長度為5。數(shù)組s2只需要

4個單元即可放下所有初始化值,故數(shù)組長度為4。所以數(shù)組s1的長度大于s2的長度,C項正確,AB錯誤。兩個數(shù)組等價是指兩個數(shù)組長度和類型以及對應(yīng)每個元素值均相同,所以s1和s2不是完全等價,D項錯誤。答案選擇C選項。33.以下敘述中錯誤的是()。A、C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令B、C程序經(jīng)過編譯、鏈接步驟之后才能形成一個真正可執(zhí)行的二進(jìn)制機(jī)器指令文件C、用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中D、C語言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序答案:A解析:A項錯誤,注釋語句不會被翻譯成二進(jìn)制的機(jī)器指令。C源程序經(jīng)過C編譯程序編譯之后生成后綴為.obj的二進(jìn)制文件(稱為目標(biāo)文件),然后由“鏈接程序”(Link)的軟件把.obj文件與各種庫函數(shù)連接起來生成一個后綴為.exe的可執(zhí)行文件。答案選擇A選項。34.有以下程序(說明:字母A的ASCII碼值是65):

#include<stdio.h>

Voidfun(char*s)

{

while(*s)

{

if(*s%2)printf("%c",*s);

s++;}

}main(){

chara[]="BYTE";fun(a);

printf("\n");

}

程序運行后的輸出結(jié)果是()。A、BYB、TC、YTD、YE答案:D解析:函數(shù)只會輸出ASCII碼值為奇數(shù)的字母,執(zhí)行fun(a)時,依次取出a[]中的字母,當(dāng)取第一個字母B時,因為B的ASCII碼值為66,所以不會輸出B,字母Y的ASCII碼值為89,字母T的ASCII碼值為84,字母E的ASCII碼值為69,所以最后輸出字母YE。答案選擇D選項。35.有以下程序:

#include<stdio.h>main()

{

char

A,b,c,d;

scanf("%c%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d);

}

當(dāng)執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第一列開始,<CR>代表回車,注意:回車是一個字符)

12<CR>34<CR>

則輸出結(jié)果是()。A、1234B、12C、12<CR>3D、12<CR>34答案:C解析:Scanf()函數(shù)的一般調(diào)用形式為:scanf(格式控制,輸入地址列表);。其中,格式控制是用雙引號括起來的字符串,包括格式字符和普通字

符,格式是由“%”和格式字符組成。getchar()函數(shù)的功能是從標(biāo)準(zhǔn)輸入設(shè)備上讀入一個字符。根據(jù)程序中的格式控制可知,接收輸入時分別把1賦給了a,2賦給了b,然后getchar()函數(shù)提取一個換行符賦給c,再提取一個字符3賦給了d。所以程序的輸出結(jié)果為:12<CR>3。答案選擇C選項。36.C語言主要是借助以下()功能來實現(xiàn)程序模塊化的。A、定義函數(shù)B、定義常量和外部變量C、三種基本結(jié)構(gòu)語句D、豐富的數(shù)據(jù)類型答案:A解析:C程序的模塊化主要通過函數(shù)來實現(xiàn)。C語言允許對函數(shù)單獨進(jìn)行編譯,從而可以實現(xiàn)模塊化。答案選擇A選項。37.下列二叉樹描述中,正確的是()。A、任何一棵二叉樹必須有一個度為2的結(jié)點B、二叉樹的度可以小于2C、非空二叉樹有0個或1個根結(jié)點D、至少有2個根結(jié)點答案:B解析:空樹度為0,斜二叉樹度為1,故A項錯誤,B項正確??斩鏄錄]有結(jié)點,非空二叉樹的定義中要求有且只有一個結(jié)點是該樹的根結(jié)點,故

C和D項錯誤。答案選擇B選項。38.有三個關(guān)系R、S和T如下:

則下列操作中正確的是()。A、T=R∩SB、T=RSC、T=R×SD、T=R-S答案:D解析:圖中關(guān)系R比關(guān)系S多一行T中的元組,故由關(guān)系R和S得到關(guān)系T的操作是差。答案選擇D選項。39.下面不屬于黑盒測試方法的是()。A、邊界值分析法B、基本路徑測試C、等價類劃分法D、錯誤推測法答案:B解析:常見的黑盒測試方法有:等價類劃分法、邊界值分析法、錯誤推測法以及因果圖等;常見的白盒測試方法有:邏輯覆蓋測試和基本路徑測試。答案選擇B選項。40.下列選項中,不屬于數(shù)據(jù)管理員(DBA)職責(zé)的是()。A、數(shù)據(jù)庫維護(hù)B、數(shù)據(jù)庫設(shè)計C、改善系統(tǒng)性能,提高系統(tǒng)效率D、數(shù)據(jù)類型轉(zhuǎn)換答案:D解析:數(shù)據(jù)庫管理員對數(shù)據(jù)庫進(jìn)行規(guī)劃、設(shè)計、維護(hù)、監(jiān)視等,其主要工作有:①數(shù)據(jù)庫設(shè)計,主要是對數(shù)據(jù)模式進(jìn)行設(shè)計;②數(shù)據(jù)庫維護(hù),對數(shù)據(jù)庫中的數(shù)據(jù)安全性、完整性、并發(fā)控制及系統(tǒng)恢復(fù)、數(shù)據(jù)定期轉(zhuǎn)儲等進(jìn)行實施與維護(hù);③改善系統(tǒng)性能,不斷調(diào)整內(nèi)部結(jié)構(gòu),提高系統(tǒng)效率。答案選擇D選項。41.有以下程序(其中的strstr()函數(shù)頭部格式為:char*strstr(char

*p1,char*p2)確定p2字符串是否在p1中出現(xiàn),并返回p2第一次出現(xiàn)的字符串首地址):

#include<stdio.h>#include<string.h>char*a="you";

Char*b="WeleyoutoBeijing!";main(){char*p;p=strstr(b,a)+strlen(a)+1;printf("%s\n",p);

}

程序的運行結(jié)果是()。A、toBeijing!B、youtoBeijing!C、WeleyoutoBeijing!D、Beijing!答案:A解析:調(diào)用strstr函數(shù),返回值為a指向的字符串在b指向的字符串中第一次出現(xiàn)的位置,并將此地址賦給指針p。strlen()函數(shù)求字符串的實際長度(不包含結(jié)束標(biāo)志)。strstr函數(shù)返回的地址下標(biāo)值為8,加上a長度3,再加1,指針P指向的地址下標(biāo)值為12,輸出:toBeijing!,答案選擇A選項。42.某二叉樹的中序序列為DCBAEFG,后序序列為DCBGFEA,則該二叉樹的深度(根結(jié)點在第1層)為()。A、5B、4C、3D、2答案:B解析:二叉樹的后序序列為DCBGFEA,則A為根結(jié)點。中序序列為

DCBAEFG,則DCB為左子樹結(jié)點,EFG為右子樹結(jié)點。同理B為C父結(jié)點,C為D父結(jié)點。根據(jù)分析,可畫出左子樹,同理E為F父結(jié)點,F(xiàn)為G父結(jié)點。根據(jù)分析,可畫出右子樹,故二叉樹深度為4層。答案選擇B選項。43.在源程序的開始處加上“#include<stdio.h>”進(jìn)行文件引用的原因,以下敘述正確的是()。A、stdio.h文件中包含標(biāo)準(zhǔn)輸入輸出函數(shù)的函數(shù)說明,通過引用此文件以便能正確使用prinff、scanf等函數(shù)B、將stdio.h中標(biāo)準(zhǔn)輸入輸出函數(shù)鏈接到編譯生成的可執(zhí)行文件中,以便能正確運行C、將stdio.h中標(biāo)準(zhǔn)輸入輸出函數(shù)的源程序插入到引用處,以便進(jìn)行編譯鏈接D、將stdio.h中標(biāo)準(zhǔn)輸入輸出函數(shù)的二進(jìn)制代碼插入到引用處,以便進(jìn)行編譯鏈接答案:A解析:“stdio.h”文件中包含標(biāo)準(zhǔn)輸入輸出函數(shù)的函數(shù)說明,預(yù)處理指令

#include<stdio.h>是指程序可以在該文件中找到printf,scanf等函數(shù),答案選擇A選項。44.下面描述不屬于軟件特點的是()。A、軟件是一種邏輯實體,具有抽象性B、軟件在使用中不存在磨損、老化問題C、軟件復(fù)雜性高D、軟件使用不涉及知識產(chǎn)權(quán)答案:D解析:軟件具有以下特點:①軟件是一種邏輯實體,具有抽象性;②軟件沒有明顯的制作過程;③軟件在使用期間不存在磨損、老化問題;④軟件對硬件和環(huán)境具有依賴性;⑤軟件復(fù)雜性高,成本昂貴;⑥軟件開發(fā)涉及諸多的社會因素,如知識產(chǎn)權(quán)等。答案選擇D選項。45.設(shè)序列長度為n,在壞情況下,時間復(fù)雜度為O(1og2n)的算法是()。A、二分法查找B、順序查找C、分塊查找D、哈希查找答案:A解析:對長度為n的線性表排序,壞情況下時間復(fù)雜度,二分法查找為

O(1og2n);順序查找法為O(n);分塊查找時間復(fù)雜度與分塊規(guī)則有關(guān);哈希查找時間復(fù)雜度為O(1),因其通過計算哈希函數(shù)來定位元素位置,所以只需一次即可。答案選擇A選項。46.計算機(jī)軟件包括()。A、算法和數(shù)據(jù)B、程序和數(shù)據(jù)C、程序和文檔D、程序、數(shù)據(jù)及相關(guān)文檔答案:D解析:計算機(jī)軟件由兩部分組成:①機(jī)器可執(zhí)行的程序和數(shù)據(jù);②機(jī)器不可執(zhí)行的,與軟件開發(fā)、運行、維護(hù)、使用等有關(guān)的文檔。答案選擇D選項。47.以下能正確輸出字符a的語句是()。A、printf("%s","a");B、printf("%s",'a');C、printf("%c","a");D、printf("%d",'a');答案:A解析:輸出函數(shù)printf()的一般形式為“printf("格式控制字符串",輸出項1,輸出項2,…)”,輸出項的形式要和格式控制字符串中的格式控制符保持一

致,"%s"為輸出字符串,"%c"為輸出單個字符,"%d"為以十進(jìn)制形式輸出帶符號整數(shù),答案選擇A選項。48.有以下程序:

#include<stdio.h>#defineS(x)x*xmain(){intk=5,j=2;printf("%d,%d\n",S(k+j+2),S(j+k+2));

}

程序的運行結(jié)果是()。A、21,18B、81,81C、21,21D、18,18答案:A解析:帶參數(shù)的宏的替換過程是,用宏調(diào)用提供的實參字符串直接置換宏定義命令行中相應(yīng)形參字符串,非形參字符保持不變。S(k+j+2)被置換成k+j+2*k+j+2,計算時先計算2*k,結(jié)果為21;S(j+k+2)被置換成j+k+2*j+k+2,計算時先計算2*j,結(jié)果為18。程序的運行結(jié)果是

21,18。答案選擇A選項。49.有如下程序:

#include<stdio.h>main(){

inti,data;scanf("%d",&data);

for(i=0;i<5;i++)

{

if(i<data)continue;

printf("%d,",i);

}

printf("\n");

}

程序運行時,從鍵盤輸入:3<回車>后,程序輸出結(jié)果為()。A、3,4,B、1,2,3,4,C、0,1,2,3,4,5,D、0,1,2,答案:A解析:Continue語句只能用在循環(huán)結(jié)構(gòu)中,其作用是結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語句之后的語句,而是立即轉(zhuǎn)入對循環(huán)條件的判斷與執(zhí)行。本題執(zhí)行過程為:輸入3,則data=3;執(zhí)行for循環(huán),i=0,if條件成立,結(jié)束本次循環(huán),不輸出i值,執(zhí)行下一次循環(huán);直到i>=3,if條件不成立,依次輸出i值3,4,;直到i=5退出for循環(huán)。答案選擇A選項。50.設(shè)有定義:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,則以下賦值語句中正確的是()。A、s[0]=m[1];B、s=m;C、s.n=m.n;D、s[2].x=m[2].x;答案:A解析:定義了結(jié)構(gòu)體類型數(shù)組s,長度為2,結(jié)構(gòu)體類型數(shù)組m,長度為2,并對數(shù)組m進(jìn)行了初始化。同類型的結(jié)構(gòu)體可以直接用變量名實現(xiàn)賦值,A項正確;數(shù)組名為數(shù)組首地址,地址常量之間不可以相互賦

值,B項錯誤;數(shù)組名為地址常量不是結(jié)構(gòu)體變量,不能引用成員,C項錯誤;s[2]與m[2]數(shù)組越界,D項錯誤。答案選擇A選項。51.設(shè)循環(huán)隊列為Q(1:m),其初始狀態(tài)為front=rear=m。經(jīng)過一系列入

隊與退隊運算后,front=20,rear=15?,F(xiàn)要在該循環(huán)隊列中尋找小值的元素,壞情況下需要比較的次數(shù)為()。A、5B、6C、m-5D、m-6答案:D解析:循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu),用隊尾指針rear指向隊列中的隊尾元素,用隊首指針指向隊首元素的前一個位置,因此,從隊首指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,隊列初始狀態(tài)為front=rear=m,當(dāng)front=20,

Rear=15時,隊列中有m-20+15=m-5個元素,壞情況下需要比較次數(shù)為m-6次。答案選擇D選項。52.有以下程序:

#include<stdio.h>

Intfun(char*s)

{char*p=s;while(*p++!='\0');return(p-s);

}main(){char*p="01234";printf("%d\n",fun(p));

}

程序的運行結(jié)果是()。A、6B、5C、4D、3答案:A解析:程序執(zhí)行過程為:定義字符串指針p并為其初始化為"01234",調(diào)用函數(shù)fun(p),將指針傳入函數(shù)。fun函數(shù)功能即返回字符串首地址與結(jié)束符下一個地址之差,也即是字符串長度加1。輸出地址差為6,答案選擇A選項。53.以下針對全局變量的敘述錯誤的是()。A、全局變量的作用域是從定義位置開始至源文件結(jié)束B、全局變量是在函數(shù)外部任意位置上定義的變量C、用extern說明符可以限制全局變量的作用域D、全局變量的生存期貫穿于整個程序的運行期間答案:C解析:在不同編譯單位內(nèi)用extern說明符來擴(kuò)展全局變量的作用域,extern可以將全局變量作用域擴(kuò)展到其他文件,而不是限制全局變量的作用域。答案選擇C選項。54.有以下程序:

#includemian(){charc;for(;(c=getchar())!='#';)putchar(++c);

}

執(zhí)行時如輸入為:abcdefgh#<回車>,則輸出結(jié)果是()。A、bcdefgB、cdefgh$C、bcdefgh$$D、bcdefgh答案:D解析:For循環(huán)每次將函數(shù)getchar()的輸入值賦給變量c,如果不等于#,則執(zhí)行putchar(++c),即將當(dāng)前變量c的ASCII碼加1后,再輸出改變后的變量c的值。當(dāng)變量c的值等于#,則終止循環(huán),所以輸出應(yīng)該是bcdefgh。答案選擇D選項。55.設(shè)有定義

Intx=0,*p;

立即執(zhí)行以下語句,正確的語句是()。A、p=x;B、*p=x;C、p=NULL;D、*p=NULL;答案:C解析:p沒有初始化,不能用*p直接訪問,但可以進(jìn)行賦值操作。注意,p=NULL并不是指向地址為0的存儲單元,而是具有一個確定的值——

“空”。答案選擇C選項。56.關(guān)于地址和指針,以下說法正確的是()。A、通過強(qiáng)制類型轉(zhuǎn)換可以將一種類型的指針變量賦值給另一種類型的指針變量B、可以取一個常數(shù)的地址賦值給同類型的指針變量C、可以取一個表達(dá)式的地址賦值給同類型的指針變量D、可以取一個指針變量的地址賦值給基類型相同的指針變量答案:A解析:常數(shù)的地址存儲在內(nèi)存的常量區(qū),常量區(qū)存儲的都是常量,值都是不可修改的,所以直接取常量的地址賦給指針變量沒有任何意義,C語言也不允許這樣做,編譯會出錯,B項錯誤;表達(dá)式的值存儲在臨時變量中,內(nèi)存中存在專門用來存儲臨時變量的區(qū)域,對這塊地址進(jìn)行操作也是沒有意義的,C語言不允許這樣做,編譯會出錯,C項錯誤;可以取一個指針變量的地址,但是指針變量的地址屬于指針,只能賦值給指針類型的指針變量,D項錯誤。答案選擇A選項。57.以下敘述正確的是()。A、do-while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為0時結(jié)束循環(huán)B、do-while語句和while-do構(gòu)成的循環(huán)功能相同C、while-do語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為非0時結(jié)束循環(huán)D、o-while語句構(gòu)成的循環(huán),必須用break語句退出循環(huán)答案:A解析:B項錯誤,do-while語句先執(zhí)行循環(huán)體,再判斷循環(huán)條件語句,whiledo循環(huán)先判斷循環(huán)條件語句,再執(zhí)行循環(huán)體;C項錯誤,do-while語句構(gòu)成的循環(huán),while語句中的表達(dá)式值為0時結(jié)束循環(huán);D項錯誤,do-

While語句除了可以使用break語句退出循環(huán)外,還可以使用循環(huán)條件語句,當(dāng)不滿足循環(huán)條件時退出循環(huán)。答案選擇A選項。58.有以下程序:

#include<stdio.h>

Voidfun(int*x,ints,inte)

{

inti,j,t;for(i=s,j=e;i<j;i++,j--)

{

t=*(x+i);

*(x+i)=*(x+j);

*(x+j)=t;

}

}main(){

intm[]={0,1,2,3,4,5,6,7,8,9},k;

fun(m,0,3);fun(m+4,0,5);fun(m,0,9);for(k=0;k<10;k++)printf("%d",m[k]);}

程序的運行結(jié)果是()。A、4567890123B、3210987654C、9876543210D、0987651234答案:A解析:程序的執(zhí)行過程為:定義數(shù)組m,并為其賦初值,數(shù)組長度為10。調(diào)用函數(shù)fun(m,0,3)將數(shù)組首地址傳入函數(shù),函數(shù)實現(xiàn)將數(shù)組下標(biāo)值從0

到3的元素首尾倒置,for循環(huán)結(jié)束之后數(shù)組為m={3,2,1,0,4,5,6,7,8,9}。

調(diào)用函數(shù)fun(m+4,0,4)將數(shù)組下標(biāo)值為4的元素地址傳入函數(shù),函數(shù)實現(xiàn)將數(shù)組下標(biāo)值從4到9的元素首尾倒置,for循環(huán)結(jié)束之后數(shù)組為m=

{3,2,1,0,9,8,7,6,5,4}。調(diào)用函數(shù)fun(m,0,9)將數(shù)組首地址傳入函數(shù),函數(shù)實現(xiàn)將數(shù)組下標(biāo)值從0到9的元素首尾倒置,for循環(huán)結(jié)束之后數(shù)組為m={4,5,6,7,8,9,0,1,2,3}。依次輸出數(shù)組元素,結(jié)果為4567890123。答案選擇A選項。

二、程序填空題59.設(shè)有定義:intx=11,y=12,z=0;

以下表達(dá)式值不等于12的是()。A、(z,x,y)B、(z=x,y)C、z=(x,y)D、z=(x==y)答案:D解析:逗號表達(dá)式的計算過程是從左到右逐個求每個表達(dá)式的值,取右邊一個表達(dá)式的值作為該逗號表達(dá)式的值。賦值運算結(jié)合性為由右向左結(jié)合,賦值運算符左值為變量,右值為變量或常量或表達(dá)式,且左右兩邊數(shù)據(jù)類型相同才能實現(xiàn)賦值。成功實現(xiàn)賦值后以左值為返回值。邏輯表達(dá)式成立則返回1,不成立返回0。D選項邏輯表達(dá)式x==y不成立,則z=0,表達(dá)式值為0。B選項逗號表達(dá)式x,y取y值為表達(dá)式值,然后賦值給z=12,表達(dá)式值為12。C選項逗號表達(dá)式(x,y)取y值為表達(dá)式值,然后賦值給z=12,表達(dá)式值為12。A選項逗號表達(dá)式(z,x,y)取y值為表達(dá)式值12。答案選擇D選項。60.以下程序段中的變量已定義為int類型,則

Sum=pAd=5;

PAd=sum++,++pAd,pAd++;

Printf("%d\n",pAd);

程序段的輸出結(jié)果是()。A、6B、4C、5D、7答案:D解析:自增和自減運算符的兩種用法:前置運算,運算符放在變量之前,規(guī)則是先使變量的值增(或減)1,然后以變化后表達(dá)式的值參與其他運算;后置運算,運算符放在變量之后,規(guī)則是變量先參與其他運算,然后再使變量的值增(或減)1。執(zhí)行pAd=sum++,sum++是后置自

增,執(zhí)行完后,pAd=5,sum=6。++pAd和pAd++語句中沒有其他運算,即效果相同,pAd分別加1,兩句執(zhí)行完后,pAd=7。答案選擇D選項。61.在壞情況下()。A、快速排序的時間復(fù)雜度比冒泡排序的時間復(fù)雜度要小B、快速排序的時間復(fù)雜度比希爾排序的時間復(fù)雜度要小C、希爾排序的時間復(fù)雜度比直接插入排序的時間復(fù)雜度要小D、快速排序的時間復(fù)雜度與希爾排序的時間復(fù)雜度是一樣的答案:C解析:壞情況下:快速排序與冒泡排序的時間復(fù)雜度均為O(n2),A項錯誤;快速排序比希爾排序的時間復(fù)雜度要大(O(n2)>O(n1.5)),B、D項錯誤;希爾排序的時間復(fù)雜度比直接插入排序的時間復(fù)雜度要小

(O(n1.5)<O(n2)),C項正確。答案選擇C選項。62.以下關(guān)于宏的敘述錯誤的是()。A、宏替換不具有計算功能B、宏是一種預(yù)處理指令C、宏名必須用大寫字母構(gòu)成D、宏替換不占用運行時間答案:C解析:宏名習(xí)慣采用大寫字母,以便與一般變量區(qū)別,但是并沒有規(guī)定一定要用大寫字母,答案選擇C選項。63.以下選項中,合法的C語言常量是()。A、1.234B、'C++'C、"\2.0D、2Kb答案:A解析:C語言中的常量:①整型常量,用不帶小數(shù)點的數(shù)字表示;②實型常量,用帶小數(shù)點的數(shù)字表示;③字符型常量,用帶有單引號的一個字符表示;④字符串常量,用一對雙引號括起來的一串字符。1.234為實型常量,A項正確;'C++'不合法,若改成"C++"則為字符串常量,B項錯誤;"\2.0不合法,不是任何類型常量,C項錯誤;2Kb不合法,若加上雙引號"2Kb"為字符串常量,D項錯誤。答案選擇A選項。64.關(guān)于C語言標(biāo)識符,以下敘述錯誤的是()。A、標(biāo)識符可全部由數(shù)字組成B、標(biāo)識符可全部由下劃線組成C、標(biāo)識符可全部由小寫字母組成D、標(biāo)識符可全部由大寫字母組成答案:A解析:C語言標(biāo)識符只能由字母、數(shù)字、下劃線構(gòu)成,且只能以字母、下劃線開頭,故答案選擇A選項。65.有以下程序:

#include

Main()

{

char*s="120119110";

intn0,n1,n2,nn,i;

n0=n1=n2=nn=i=0;do

{

switch(s[i++])

{

default:nn++;case'0':n0++;case'1':n1++;case'2':n2++;

}

}while(s[i]);printf("n0=%d,n1=%d,n2=%d,nn=%d\n",n0,n1,n2,nn);

}

程序的運行結(jié)果是()。A、n0=3,n1=8,n2=9,nn=1B、n0=2,n1=5,n2=1,nn=1C、n0=2,n1=7,n2=10,nn=1D、n0=4,n1=8,n2=9,nn=1答案:A解析:本題執(zhí)行過程為:s[0]='1',匹配case'1',n1=1,n2=1;s[1]='2',匹配case'2',n2=2;s[2]='0',匹配case'0',n0=1,n1=2,n2=3;s[3]='1',匹配case'1',n1=3,n2=4;s[4]='1',匹配case'1',n1=4,n2=5;s[5]='9',匹配default,nn=1,n0=2,n1=5,n2=6;s[6]='1',匹配case'1',n1=6,n2=7;s[7]='1',匹配case'1',n1=7,n2=8;s[8]='0',匹配case'0',n0=3,n1=8,n2=9;s[9]='\0',對應(yīng)ASCII碼為0,退出循環(huán)。輸出n0,n1,n2,nn為3,8,9,1。答案選擇A選項。66.以下非法的字符常量是()。A、'\\n'B、'\101'C、'\x21'D、'\0'答案:A解析:C語言允許使用一些以特殊形式出現(xiàn)的字符常量,使用'\n'來表示換行,'\n'實際上是一個字符,它的ASCII碼值為10,不存在'\\n'用法。答案選擇A選項。67.下列敘述中正確的是()。A、存儲空間連續(xù)的數(shù)據(jù)結(jié)構(gòu)一定是線性結(jié)構(gòu)B、存儲空間不連續(xù)的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu)C、沒有根結(jié)點的非空數(shù)據(jù)結(jié)構(gòu)一定是線性結(jié)構(gòu)D、具有兩個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu)答案:D解析:A項錯誤,數(shù)據(jù)結(jié)構(gòu)線性與否與存儲空間是否連續(xù)沒有直接關(guān)系,如二叉樹可以用一片連續(xù)的空間來存儲,但二叉樹為非線性結(jié)構(gòu);B項錯誤,線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)可以用不連續(xù)的空間來存儲,但線性表為線性結(jié)構(gòu);C項錯誤,沒有根結(jié)點的非空數(shù)據(jù)結(jié)構(gòu)一定不是線性結(jié)構(gòu);D項正確,線性結(jié)構(gòu)有且只有一個根結(jié)點,具有兩個根結(jié)點的結(jié)構(gòu)一定是非線性結(jié)構(gòu)。答案選擇D選項。68.有以下程序:

#include<stdio.h>main()

{

intx;

scanf("%d",&x);

if(x>10)printf("1");elseif(x>20)printf("2");elseif(x>30)printf("3");

}

若運行時輸入:35<回車>,則輸出結(jié)果是()。A、123B、2C、3D、1答案:D解析:程序執(zhí)行過程為:輸入35<回車>,scanf函數(shù)從鍵盤讀入35賦值給x=35,對if條件進(jìn)行判斷,35>10,條件成立,輸出1,不再執(zhí)行下面的elseif語句,程序結(jié)束。答案選擇D選項。69.將E-R圖轉(zhuǎn)換為關(guān)系模式時,E-R圖中的實體和聯(lián)系都可以表示為

()。A、屬性B、鍵C、關(guān)系D、域答案:C解析:采用E-R方法得到的全局概念模型是對信息世界的描述,為了適合關(guān)系數(shù)據(jù)庫系統(tǒng)的處理,必須將E-R圖轉(zhuǎn)換成關(guān)系模式。E-R圖是由實體、屬性和聯(lián)系組成,而關(guān)系模式中只有一種元素——關(guān)系。答案選擇C選項。70.以下選項中敘述正確的是()。A、函數(shù)體必須由{開始B、C程序必須由main語句開始C、程序中的注釋可以嵌套D、C程序中的注釋必須在一行完成答案:A解析:函數(shù)體是函數(shù)首部下面的花括號內(nèi)的部分,所以函數(shù)體必須由{開始,A選項正確。一個源程序文件可以包括預(yù)處理命令、全局聲明、函數(shù)

定義,程序總是從main函數(shù)開始執(zhí)行的,不是main語句,B選項錯誤。函數(shù)可以嵌套,注釋不能嵌套,C選項錯誤。C程序中允許兩種注釋,以//開頭的單行注釋;以/*開始,以*/結(jié)束的塊式注釋,D選項錯誤。

答案選擇A選項。71.字符數(shù)組a和b中存儲了兩個字符串,判斷字符串a(chǎn)和b是否相等,應(yīng)當(dāng)使用的是()。A、if(strcmp(a,b)==0)B、if(strcpy(a,b))C、if(a==b)D、if(a=b)答案:A解析:C語言中,判斷字符串是否相等,使用字符串比較函數(shù)strcmp(),不能使用相等操作符“==”。strcmp(s1,s2)函數(shù)比較s1和s2所指字符串的大小時,若串s1>串s2,函數(shù)值大于0(正數(shù));若串s1=串s2,函數(shù)值等于0;若串s1<串s2,函數(shù)值小于0(負(fù)數(shù))。答案選擇A選項。72.有如下程序:

#include<stdio.h>main()

{intx=0x13;if(x=0x18)printf("T");printf("F");printf("\n");

}

程序運行后的輸出結(jié)果是()。A、TFB、TC、FD、TFT答案:A解析:X=0x18為賦值表達(dá)式,十六進(jìn)制數(shù)0x18非0,故x非0,if條件成立輸出T,之后再輸出F與回車符。程序運行后的輸出結(jié)果是TF。答案選擇A選項。73.以下程序的功能是:通過調(diào)用calc函數(shù),把所求得的兩數(shù)之和值放入變量add中,并在主函數(shù)中輸出。

#include<stdio.h>voidcalc(floatx,floaty,float*sum){

______=x+y;

}main(){floatx,y,add;scanf("%f%f",&x,&y);calc(x,y,&add);printf("x+y=%f\n",add);

}

Calc函數(shù)中下劃線處應(yīng)填入的是()。A、*sumB、sumC、&sumD、add答案:A解析:程序的執(zhí)行過程為:從鍵盤讀入兩個float類型數(shù)據(jù),分別賦給x,y,調(diào)用函數(shù)calc將x與y的值與add變量地址傳入函數(shù),地址賦給指針sum,函數(shù)體中將兩數(shù)之和放入指針指向的地址,指針正確的引用形式為:*sum,這表示變量,可以被賦值。所以橫線處填寫*sum。答案選擇A選項。74.有如下程序:

#include<stdio.h>

Voidchange(int*array,intlen)

{

for(;len>=0;len--)array[len]-=1;

}main(){

inti,array[5]={2,2};change(array,4);for(i=0;i<5;i++)printf("%d,",array[i]);

printf("\n");

}程序運行后的輸出結(jié)果是()。A、1,1,-1,-1,-1,B、1,0,-1,1,-1,C、1,1,1,1,1,D、1,-1,1,-1,1,答案:A解析:在main()函數(shù)中,首先給一維數(shù)組array賦初值[2,2,0,0,0],再調(diào)用change函數(shù),對array數(shù)組中的每一個數(shù)進(jìn)行減1處理,后使用for循環(huán)語句輸出數(shù)組元素的值,答案選擇A選項。75.C語言中,基本的數(shù)據(jù)類型包括()?!瓵、整型、實型、邏輯型B、整型、字符型、數(shù)組C、整型、實型、字符型D、整型、實型、結(jié)構(gòu)體答案:C解析:C語言中,基本的數(shù)據(jù)類型包括整型、實型、字符型,答案選擇C選項。76.有如下程序:

#include<stdio.h>main(){

inti,array[5]={3,5,10,4};for(i=0;i<5;i++)printf("%d,",array[i]&3);

printf("\n");

}

程序運行后的輸出結(jié)果是()。A、3,1,2,0,0,B、3,5,10,4,0,C、3,3,3,3,0,D、3,2,2,2,0,答案:A解析:在對數(shù)組進(jìn)行初始化時,如果在聲明數(shù)組時給出了長度,但沒有給所

有的元素賦予初始值,那么C語言將自動對余下的元素賦初值0,則

Array={3,5,10,4,0}。按位與運算“&”,當(dāng)參加運算的兩個二進(jìn)制數(shù)的對應(yīng)位都為1,則該位的結(jié)果為1,否則為0。將數(shù)組元素與3按位與,即

3&3=3,5&3=1,10&3=2,4&3=0,0&3=0。for循環(huán)輸出與運算結(jié)果:3,1,2,0,0,。答案選擇A選項。77.下列敘述中錯誤的是()。A、算法的時間復(fù)雜度與算法所處理數(shù)據(jù)的存儲結(jié)構(gòu)有直接關(guān)系B、算法的空間復(fù)雜度與算法所處理數(shù)據(jù)的存儲結(jié)構(gòu)有直接關(guān)系C、算法的時間復(fù)雜度與空間復(fù)雜度有直接關(guān)系D、算法的時間復(fù)雜度與算法程序執(zhí)行的具體時間是不一致的答案:C解析:算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量。數(shù)據(jù)的存儲結(jié)構(gòu)直接決定數(shù)據(jù)輸入,因此會影響算法所執(zhí)行的基本運算次數(shù),A項正確;算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間,其中包括輸入數(shù)據(jù)所占的存儲空間,B項正確;算法的時間復(fù)雜度與空間復(fù)雜度沒有直接關(guān)系,C項錯誤;算法程序執(zhí)行的具體時間受到所使用的計算機(jī)、程序設(shè)計語言以及算法實現(xiàn)過程中的許多細(xì)節(jié)影響,而算法的時間復(fù)雜度與這些因素?zé)o關(guān),所以算法的時間復(fù)雜度與算法程序執(zhí)行的具體時間是不一致的,D項正確。答案選擇C選項。78.下面屬于白盒測試方法的是()。A、邊界值分析法B、基本路徑測試C、等價類劃分法D、錯誤推測法答案:B解析:白盒測試是把程序看成裝在一只透明的白盒子里,測試者完全了解程序的結(jié)構(gòu)和處理過程。它根據(jù)程序的內(nèi)部邏輯來設(shè)計測試用例,檢查程序中的邏輯通路是否都按預(yù)定的要求正確地工作。白盒測試的主要技術(shù)有邏輯覆蓋測試、基本路徑測試等,B選項正確。常用的黑盒測試方法和技術(shù)有:等價類劃分法、邊界值分析法、錯誤推測法和因果圖等,ACD三項錯誤。答案選擇B選項。79.以下選項中,合法的實數(shù)是()。A、4.5E2B、E1.3C、7.11ED、1.2E1.2答案:A解析:實型常量用帶小數(shù)點的數(shù)字表示,其值有兩種表達(dá)形式,分別為十進(jìn)制小數(shù)形式和指數(shù)形式。十進(jìn)制小數(shù)形式由數(shù)字和小數(shù)組成,必須有小數(shù)點,且小數(shù)點的位置不受限制。指數(shù)形式由十進(jìn)制數(shù)加階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),可以帶符號)組成。4.5E2為指數(shù)形式

實數(shù),A項正確。E1.3階碼標(biāo)志前缺少十進(jìn)制數(shù),并且階數(shù)不是整

數(shù),B項錯誤。7.11E缺少階數(shù),C項錯誤。1.2E1.2階數(shù)不是整數(shù),D項錯誤。答案選擇A選項。80.一名雇員就職于一家公司,一個公司有多名雇員,則實體公司和實體雇員之間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系答案:B解析:實體集之間的聯(lián)系分為3類:一對一聯(lián)系(1:1)、一對多聯(lián)系(1:m)、多對多聯(lián)系(m:n)。題目中一名雇員就職于一家公司,一個公司有多名雇員,公司與雇員之間的聯(lián)系為一對多(1:m)聯(lián)系。答案選擇B選項。81.若有以下程序段:

Intr=8;

Printf("%d\n",r>>1);

輸出結(jié)果是()。A、16B、8C、4D、2答案:C解析:C語言中,“>>”右移運算符是將變量轉(zhuǎn)換成二進(jìn)制,然后右移相應(yīng)位數(shù),將移出的位信息舍去,并在高位補(bǔ)0,將所得的結(jié)果再賦值給變量。本題十進(jìn)制數(shù)8轉(zhuǎn)換為二進(jìn)制數(shù)為00001000,右移一位得到

00000100,再轉(zhuǎn)換成十進(jìn)制數(shù)就是4。所以答案選擇C選項。82.軟件設(shè)計中劃分模塊的一個準(zhǔn)則是()。A、低內(nèi)聚低耦合B、高內(nèi)聚低耦合C、低內(nèi)聚高耦合D、高內(nèi)聚高耦合答案:B解析:耦合性和內(nèi)聚性是模塊獨立性的兩個定性標(biāo)準(zhǔn)。內(nèi)聚性是一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度的度量,作為軟件結(jié)構(gòu)設(shè)計的設(shè)計原則,要求每個模塊的內(nèi)部都具有很強(qiáng)的內(nèi)聚性;耦合性是指模塊間相互連接的緊密程度的度量,一個模塊與其他模塊的耦合性越強(qiáng)則該模塊的獨立性越弱。一般優(yōu)秀的軟件設(shè)計應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。答案選擇B選項。83.有三個關(guān)系R、S和T如下:

其中關(guān)系T由關(guān)系R和S通過某種操作得到,該操作為()。A、選擇B、投影C、交D、并答案:D解析:選擇和投影操作對單個關(guān)系進(jìn)行操作,選擇運算是對行的操作,投影運算是對列的操作。交和并運算要求參與運算的表具有相同的屬性,交運算的結(jié)果是兩個表的公共部分,并運算的結(jié)果包含兩個表的所有元素。觀察三個關(guān)系的元組可知,關(guān)系T=RS。答案選擇D選項。84.以下敘述中正確的是()。A、程序設(shè)計的任務(wù)就是編寫程序代碼并上機(jī)調(diào)試B、程序設(shè)計的任務(wù)就是確定所用數(shù)據(jù)結(jié)構(gòu)C、程序設(shè)計的任務(wù)就是確定所用算法D、以上三種說法都不完整答案:D解析:程序設(shè)計是指設(shè)計、編程、調(diào)試程序的方法和過程,通常分為4個階段:①問題建模;②算法設(shè)計;③編寫代碼;④編譯調(diào)試。其工作內(nèi)容涉及有關(guān)的基本概念、工具、方法及方法學(xué),是目標(biāo)明確的智力活動。答案選擇D選項。85.在E-R圖中,用來表示實體聯(lián)系的圖形是()。A、橢圓形B、矩形C、菱形D、三角形答案:C解析:在E-R圖中,菱形表示聯(lián)系,矩形表示實體,橢圓形表示屬性。答案選擇C選項。86.有以下程序:

#include<stdio.h>main(){intc=0,k;for(k=1;k<3;k++)

switch(k)

{

default:c+=k;case2:c++;break;

case4:c+=2;break;

}

printf("%d\n",c);

}

程序運行后的輸出結(jié)果是()。A、3B、5C、7D、9答案:A解析:程序進(jìn)入for循環(huán)后,首先k=1,執(zhí)行default語句,c變?yōu)?。由于default語句之后沒有break語句,因此繼續(xù)執(zhí)行case2,c變?yōu)?,之后執(zhí)行

Break語句跳出本次循環(huán)。下次循環(huán)k=2,直接執(zhí)行case2,c自增為3后跳出本次循環(huán)。k=3時for循環(huán)結(jié)束,后輸出3。答案選擇A選項。87.有以下程序:

#include<stdio.h>#include<string.h>

Main(){

charstr[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);

}

程序運行后的輸出結(jié)果是()。A、9,One*WorldB、9,One*Dream!C、10,One*Dream!D、10,One*World答案:C解析:程序?qū)蓚€字符串常量賦值給一個二維字符數(shù)組,然后p指向第二個字

符串。strlen統(tǒng)計字符串中有效字符的個數(shù),可知"One*Dream!"中共有10個字符。所以答案選擇C選項。88.表達(dá)式:(int)((double)9/2)-9%2的值是()。A、0B、3C、4D、5答案:B解析:運算符“/”、“%”的優(yōu)先級高于“-”,所以先進(jìn)行除法和求余運算,再

進(jìn)行減法運算。強(qiáng)制類型轉(zhuǎn)換表達(dá)式的形式:(類型名)(表達(dá)

式)?!?/2”結(jié)果為4,轉(zhuǎn)換成double類型再轉(zhuǎn)換成int類型結(jié)果依然為4,9%2的結(jié)果為1,后結(jié)果為4-1=3。答案選擇B選項。89.以下程序段中,與語句:

K=a>b?(b>c?1:0):0;

功能相同的是()。A、if((a>b)&&(b>c))k=1;elsek=0;B、if((a>b)∥(b>c))k=1;elsek=0;C、if(a<=b)k=0;elseif(b<=c)k=1;D、if(a>b)k=1;elseif(b>c)k=1;elsek=0;答案:A解析:三元運算符表達(dá)式的形式為:表達(dá)式1?表達(dá)式2表達(dá)式3,當(dāng)表達(dá)式1的值為真時,結(jié)果為表達(dá)式2的值;當(dāng)表達(dá)式1的值為假時,結(jié)果為表達(dá)式3的值。首先判斷a、b的關(guān)系:①如果a>b,執(zhí)行語句(b>c?

1:0);判斷b、c的關(guān)系,如果b>c,k=1,否則k=0;②如果a≤b,則k=0。綜上所述:當(dāng)a>b且b>c時,k=1,否則k=0,與A項語句功能相同。答案選擇A選項。90.下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進(jìn)后出”原則存取數(shù)據(jù)的是

()。A、循環(huán)隊列B、棧C、隊列D、二叉樹答案:B解析:棧和隊列都是操作受限的線性表:棧只能在棧頂插入和刪除元素,按照“先進(jìn)后出”的原則組織數(shù)據(jù);隊列只能在隊頭刪除元素,在隊尾插入元素,按照“先進(jìn)先出”的原則組織數(shù)據(jù)。B項,棧,按照“先進(jìn)后出”的原則組織數(shù)據(jù)。A項,循環(huán)隊列是隊列的一種特殊形式,按照“先進(jìn)先出”的原則組織數(shù)據(jù);C項,隊列,按照“先進(jìn)后出”的原則組織數(shù)據(jù)。D項,二叉樹屬于非線性結(jié)構(gòu)。答案選擇B選項。91.有以下程序:#include<stdio.h>main()

{

intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;

printf("%d,%d,%d,%d\n",m,n,*p,*q);

}

程序運行后的輸出結(jié)果是()。A、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2答案:B解析:m和n的值不變,分別是1,2;指針*p和*q交換了指向的位置,即*p=&n,*q=&m,分別為2,1。答案選擇B選項。92.有以下程序:

#include<stdio.h>#include<string.h>

Main(){

chara[10]="abcd";printf("%d,%d\n",strlen(a),sizeof(a));

}

程序運行后的輸出結(jié)果是()。A、7,4B、4,10C、8,8D、10,10答案:B解析:在C語言中,strlen()用來統(tǒng)計字符串中字符的個數(shù)(不包含字符串結(jié)束標(biāo)志'\0'),sizeof()用來求分配給數(shù)組的存儲空間大小。題目中字符串a(chǎn)中字符個數(shù)為4,但由于數(shù)組a定義含有10個字符,所以所占空間大小為10。所以答案選擇B選項。93.有以下程序:

#include<stdio.h>

Voidfun(intp)

{

intd=2;p=d++;

printf("%d",p);

}main(){inta=1;fun(a);printf("%d\n",a);

}

程序運行后的輸出結(jié)果是()。A、32B、12C、21D、22答案:C解析:C語言中函數(shù)參數(shù)傳遞滿足“單向傳遞”,實現(xiàn)傳遞值的功能,實參能傳給形參,形參卻不能傳回給實參。fun函數(shù)體內(nèi)輸出p的值為2,并不影響到fun函數(shù)外a的值,a的值在main函數(shù)內(nèi)依然為1。答案選擇C選項。94.若有定義語句:inta[4][10],*P,*q[4];

且0≤i<4,則錯誤的賦值是()。A、p=aB、q[i]=a[i]C、p=a[i]D、p=&a[2][1]答案:A解析:二維數(shù)組名是指向指針的指針,所以a和q都為指向指針的指針,而p為指向int類型的指針,p和a不同類型,故A選項中p=a賦值語句錯誤。其余選項可以正確賦值,其中D項是用取地址符&返回整數(shù)的地址,然后賦值給p。所以答案選擇A選項。95.有以下程序:

#include<stdio.h>main()

{charc1,c2;c1='A'+'8'-'4';c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);

}

已知字母A的ASCII碼為65,程序運行后的輸出結(jié)果是()。A、E,68B、D,69C、E,DD、輸出無定值答案:A解析:C語言中每個字符都對應(yīng)一個ASCII碼值,該值可以用來運算。本題中main函數(shù)將字符A經(jīng)過加四和加三運算后分別賦值給c1、c2,則

C1='E',c2='D',然后將c1按字符格式輸出,c2按整型格式輸出。答案選擇A選項。96.下面結(jié)構(gòu)體的定義語句中,錯誤的是()。A、structord{intx;inty;intz;};structorda;B、structord{intx;inty;intz;}structorda;C、structord{intx;inty;intz;}a;D、struct{intx;inty;intz;}a;答案:B解析:C語言中結(jié)構(gòu)體變量的定義有三種方法:①定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量,如C項;②使用無名結(jié)構(gòu)體類型定義結(jié)構(gòu)體變量,如D項;③先定義結(jié)構(gòu)體類型,后定義結(jié)構(gòu)體變量,如A項,B項錯在分別定義結(jié)構(gòu)體類型與結(jié)構(gòu)體變量時需要用“;”隔開。故答案選擇B選項。97.下面是有關(guān)C語言字符數(shù)組的描述,其中錯誤的是()。A、不可以用賦值語句給字符數(shù)組名賦字符串B、可以用輸入語句把字符串整體輸入給字符數(shù)組C、字符數(shù)組中的內(nèi)容不一定是字符串D、字符數(shù)組只能存放字符串答案:D解析:C語言中,字符數(shù)組可以用來存放單個的字符或者字符串。答案選擇D選項。98.下列函數(shù)的功能是()。

Fun(char*

A,char*b)

{

while((*b=*a)!='\0')

{a++;b++;

}

}A、將a所指字符串賦給b所指空間B、使指針b指向a所指字符串C、將a所指字符串和b所指字符串進(jìn)行比較D、檢查a和b所指字符串中是否有'\0'答案:A解析:函數(shù)fun中a和b是兩個字符型指針,在while語句的表達(dá)式中將指針a所指向的字符賦給指針b所指向的內(nèi)存單元,再判斷指針b所指向的字符是不是字符串中的結(jié)尾符,若不是,則字符指針a和b分別自增,再執(zhí)行循環(huán)語句,直至b所指向的字符為字符串中的空字符。所以答案選擇

A選項。99.有以下程序:

#include<stdio.h>main()

{inta=1,b=0;printf("%d,",b=a+b);printf("%d\n",a=2*b);

}

程序運行后的輸出結(jié)果是()。A、0,0B、1,0C、3,2D、1,2答案:D解析:Main函數(shù)先為a、b賦值,然后做運算a+b結(jié)果賦值給b,此時b為1,并將b打印出來。接著做運算2*b結(jié)果為2*1=2賦值給a,將a打印出來,所以終的輸出結(jié)果為1,2。答案選擇D選項。100.設(shè)有定義:

Inta=1,b=2,c=3;以下語句中執(zhí)行效果與其他三個不同的是()。A、if(a>b)c=a,a=b,b=c;B、if(a>b){c=a,a=b,b=c}C、if(a>b)c=a;a=b;b=c;D、if(a>b){c=a;a=b;b=c}答案:C解析:C語言中if語句后面只跟一條語句時,可以省略大括號。即if語句僅作用于緊隨其后的那條語句或者是復(fù)合語句的內(nèi)容,所以A項,執(zhí)行三條語句組成的復(fù)合語句;BD兩項執(zhí)行大括號中的三條語句;而C項只執(zhí)行c=a;。答案選擇C選項。101.下列關(guān)于C語言文件的敘述中正確的是()。A、文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件B、文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件C、文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件D、文件由字符序列組成,其類型只能是文本文件答案:C解析:C語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論