C語言答疑系統所有題目_第1頁
C語言答疑系統所有題目_第2頁
C語言答疑系統所有題目_第3頁
C語言答疑系統所有題目_第4頁
已閱讀5頁,還剩213頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

所有單選題1、C語言中下列敘述正確的是0A:不能使用do-while語句構成的循環(huán)B:do-while語句構成的循環(huán),必須用break語句才能退出C:do-while語句構成的循環(huán),當while語句中的表達式值為非零時結束循環(huán)D:do-while語句構成的循環(huán),當while語句中的表達式值為零時結束循環(huán)答案:D評析:本題的考查點是do-while語句。選項A是錯誤的,C語言支持do-while語句;選項B是錯誤的,do-while構成的循環(huán),當while語句中的表達式值為零時結束循環(huán),而不是非零;選項C也是錯誤的。故本題答案為D。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構2、以下選項中屬于C語言的數據類型是〇A:復數型B:邏輯型C:雙精度型D:集合型答案:C評析:本題的考查點是C語言的數據類型。C語言的數據類型分為基本類型,構造類型,指針類型,空類型四大類。其中,基本類型分為整型,字符型,實型三類。實型又稱浮點型,包括單精度型和雙精度型兩種類型。故本題答案為C。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法3、下列描述中不正確的是〇A:字符型數組中可以存放字符串B:可以對字符型數組進行整體輸入、輸出C:可以對整型數組進行整體輸入、輸出D:不能在賦值語句中通過賦值運算符〃ー對字符型數組進行整體賦值答案:c評析:本題的考查點是對數組的理解。C語言規(guī)定只能逐個引用數組元素而不能一次引用整個數組。字符數組的輸入、輸出可以將整個字符串一次輸入或輸出。所以,選項C的說法是不正確的。故本題答案為C。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用4、以下程序的輸出結果是。main(){int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d%d”,x--,y);)A:10192B:9876C:10990D:101091答案:D評析:本題的考查點是for循環(huán)語句。for語句的一般格式為:for(表達式1;表達式2;表達式3)語句執(zhí)行中只要表達式2為真,則執(zhí)行for語句中指定的內嵌語句。所以,本題在條件為真的情況下,先執(zhí)行printf函數。x一是先使用后運算。故本題答案為D。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構5、以下程序的輸出結果是。main(){chara[10]={'1','2','3','4','5','6','7','8','9',〇},*p;inti;i=8;p=a+i;printf(誤s\n",p-3);)A:6B:6789C:'6'D:789答案:B評析:本題的考查點是通過指針引用數組元素。指針P指向數組中第8個元素,即a[8]='9'。輸出時,輸出字符串,且指針把a[8]作為初始位置往前指3個元素,也就是共有4個字符輸出。最后指向a[5]為’6',所以輸出為6789。故本題答案為B。知識點:知識點/指針/指針數組,指向指針的指針,MAIN函數的命令行參數6、能正確表示a和b同時為正或同時為負的邏輯表達式是。A:(a>=0||b>=0)&&(a<0|b<0)B:(a>=O&&b>=O)&&(aく0&&bく〇)C:(a+b>O)&&(a+bく=0)D:a*b>0答案:D評析:本題的考查點是對邏輯表達式的判斷。邏輯表達式是指用邏輯運算符將關系表達式或邏輯量連接起來。選項A中,表達式表示的是a,b為異號;選項B中,表達式表示的是〇,因為沒有滿足條件的值:選項C中,表達式表示的是0,因為沒有滿足條件的值:選項D表示的是a和b為同號。故本題答案為D。知識點:知識點/基本語句/表達式語句,空語句,復合語句7、以下程序的輸出結果是。main(){intn=4;while(n-)printf(?,%d ",—n);)A:20B:31C:321D:210答案:A評析:本題的考查點是while語句的判斷。n一是先使用后運算,--n是先運算后使用。n=4時,執(zhí)行n一后,n變?yōu)?,執(zhí)行一n后,n變?yōu)?,所以,第一次輸出時,n為2;同上過程,第二次輸出時,n為0。故本題答案為A。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構8、以下程序的輸出結果是〇main(){intk=17;printf("%d,%o,%x\n",k,k,k);)A:17,021,0x11B:17,17,17C:17,0x11,021D:17,21,11答案:D評析:本題的考查點是不同格式的數據輸出。printf函數對不同類型的數據用不同的格式字符,〃%d”是以帶符號的十進制形式輸出整數(正數不輸出符號);"%?!币?進制無符號形式輸出整數(不包括前導符〇);“%x〃以16進制無符號形式輸出整數(不包括前導符Ox)。本題答案為D。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法9、若有說明:long*p,a;則不能通過scanf語句正確給輸入項讀入數據的程序段是。A:*p=&a;scanfp);B:p=(long*)malloc(8);scanf("%ld,p);C:scanf("%ld”,p=&a);D:scanf&a);答案:A評析:本題的考查點是格式輸入函數Scanf()的使用。scanf函數輸入形式為:scanf(格式控制,地址表列);選項B中,p=(long*)malloc(8)是分配8個字節(jié)的long型存儲單元,所以能通過scanf語句正確給輸入項讀入數據;選項C中,p=&a,求出變量a的內存地址并賦給p;選項口中,能正確給輸入項讀入數據;故本題答案為A。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用10、以下選項中,能定義s為合法的結構體變量的是0A:typedefstructabc{doublea;charb[10];}s;B:struct{doublea;charb[10];}s;C:structABC{doublea;charb[10];)ABCs;D;typedefABC{doublea;charb[10];ABCs;答案:B評析:本題的考查點是結構體變量的定義。定義ー個結構體類型的變量,可采用三種方法:(1)先定義結構體類型再定義變量名;(2)在定義類型的同時定義變量;(3)直接定義結構類型變量,即不出現結構體名;選項B符合第三種定義方法。故本題答案為B。知識點:知識點/結構體(即〃結構〃)與共用體(即〃聯合〃)/結構體和共用體類型數據的定義方法和引用方法11、請讀程序:ttinclude<stdio.h>main(){inta,b;for(a=1,b=1;a<=100;a++){if(b〉=20)break;if(b%3==1){b+=3;continue;}b-=5;)printf(〃%d\n,a);}上面程序的輸出結果是〇A:7B:8C:9D:10答案:B評析:本題的考查點是break語句和continue語句?!?〃是求余運算符,執(zhí)行第一次循環(huán)時,條件(b%3==1)為真,b=4,繼續(xù)下一次循環(huán),如此反復,當b=22時,條件(b>=20)為假,跳出循環(huán),此時共循環(huán)8次,即a=8。故本題答案為B。知識點:知識點/選擇結構程序設計/用SWITCH語句實現多分支選擇結構12、請選出合法的C語言賦值語句0A:a=b=58B:i++;C:a=58,b=58D:k=int(a+b);答案:B評析:本題的考查點是賦值語句。選項A和C沒有用分號表示語句結束,不合法;選項D,函數名和C語言的關鍵字重名,不合法。故本題答案為B。知識點:知識點/基本語句/表達式語句,空語句,復合語句13、請選出可用作C語言用戶標識符的ー組標識符〇①void ②a3_b3 ③For④2adefine _123 _abc DOWORD IF case sizeofA:①B:②C:③D:④答案:B評析:本題的考查點是C語言的標識符。C語言規(guī)定標識符只能由字母、數字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。①中的void和define都和C語言的關鍵字重名,不合法;③中的case和C語言的關鍵字重名,不合法;④中的2a是數字打頭而且sizeof和C語言的關鍵字重名,不合法。故本題答案為B。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法14、若x和y都是int型變量,x=100、y=200,且有下面的程序片段printf("%d”,(x,y));上面程序片段的輸出結果是。A:200B:100C:100 200D:輸入格式符不夠,輸出不確定的值答案:A評析:本題的考查點是逗號表達式。在(x,y)中的",”是ー個特殊的運算符,叫做逗號運算符,它的一般形式為:表達式1,表達式2,求解過程為:先求解表達式1,再求解表達式2,整個表達式的值是表達式2的值,(x,y)的值為200,所以輸出結果為200。故本題答案為A。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用15、若x是int型變量,且有下面的程序片段for(x=3;x<6;x++) printf((x%2)?("**%d"):("##%d\n"),x);上面程序片段的輸出結果是〇①**3 ②##3 ③##3 ④**3##4##4 **4 **4##5 **5**5 ##5A:①B:②C:③D:④答案:D評析:本題的考查點是條件運算符。這種條件表達式的一般形式為:表達式1?表達式2:表達式3,條件運算符的執(zhí)行順序為:先求解表達式1,若非〇則求解表達式2,此時表達式2的值就是整個條件表達式的值,若表達式1的值為〇,則求解表達式3,此時表達式3的值就是整個條件表達式的值。故本題答案為D。知識點:知識點/數據類型及其運算/C運算符的種類、運算優(yōu)先級和結合性16、若x是整型變量,pb是基類型為整型的指針變量,則正確的賦值表達式是。A:pb=&x;B:pb=x;C:*pb=&x;D:*pb二*x答案:A評析:本題的考查點是賦值表達式。選項A是將變量x的地址賦給指針變量pb,使pb指向x,故為正確的賦值表達式。選項B是將x的值當作地址賦給指針pb,pb指向ー個地址等于x值的內存單元;ー選項C是將x的地址賦給指針pb指向的那個地址等于x值的內存單元;選項D是不正確的語句;本題答案為A。知識點:知識點/基本語句/表達式語句,空語句,復合語句17、若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元int*p;p=malloc(sizeof(int));則應填入〇A:intB:int*C:(*int)D:(int*)答案:D評析:本題的考查點是強制類型轉換。不論P是指向什么類型的指針變量,都可以通過強制類型轉換的方法使之類型一致,強制類型轉換的格式為(數據類型*)〇故本題答案為D。知識點:知識點/數據類型及其運算/不同類型數據間的轉換與運算18、若有以下說明和語句,請選出哪個是對c數組元素的正確引用intc[4][5],(*cp)[5];cp=c;A:cp+1B:*(cp+3)C:*(cp+1)+3D:*(*cp+2)答案:D評析:本題的考查點是數組元素的引用。cp=c這個語句是將數組C的首地址賦給了指針數組cp的第一個數組元素。選項A,cp+1是指將數組c的首地址加1,不是對數組元素的引用;選項B,*(cp+3)是地址等于數組c的首地址加3的那個內存單元的內容,不是對數組元素的引用;選項C,*(cp+l)+3是地址等于數組c的首地址加1的那個內存單元中存放的值加3,不是對數組元素的引用。故本題答案為D。知識點:知識點/指針/指針數組,指向指針的指針,MAIN函數的命令行參數19、若執(zhí)行下面的程序時從鍵盤上輸入3和4,main(){inta,b,s;scanf("%d%d”,&a,&b);s=a;if(a<b)s=b;s=s*s;printf("%d\n",s);)則輸出是〇A:14B:16C:18D:20答案:B評析:本題的考查點是給變量賦值。用戶輸入的3和4分別賦給了a和b,在if語句進行判斷時,因為表達式的值為真,所以b的值將賦給s,s*s=16,最后的打印結果為16。故本題答案為B。知識點:知識點/基本語句/表達式語句,空語句,復合語句20、設a、b和c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為〇的表達式是〇A:B:a<=bC:aII+c&&b~cD:!((aくb)&&!c||1)答案:D評析:本題的考查點是幾種運算符的使用。該題需要弄清楚以下幾點:1、幾種運算符的使用方法;2、C語言中運算符的結合方向(結合性);3、C語言中運算符的優(yōu)先級。根據以上規(guī)則進行表達式拆分,運算后即可得出正確答案。本題答案為D。知識點:知識點/數據類型及其運算/C運算符的種類、運算優(yōu)先級和結合性21、設a=5、b=6、c=7、d=8、m=2、n=2?執(zhí)行(m=a>b)&&(n=c>d)后n的值為〇A:1B:2C:3D:4答案:B評析:本題的考查點是邏輯與運算。在邏輯表達式的求解中,并不是所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,オ執(zhí)行該運算符。本題中,(m=a>b)的值為O,求出整個表達式的值為〇,不需執(zhí)行(n=c>d),所以n仍為2。故本題答案為B。知識點:知識點/數據類型及其運算/C運算符的種類、運算優(yōu)先級和結合性22、設ch是char型變量,其值為A,且有下面的表達式ch=(ch>='A'&&chく='Z')?(ch+32):ch上面表達式的值是。A:AB:aC:ZD:z答案:B評析:本題的考查點是條件運算符。條件表達式的一般形式為:表達式1?表達式2:表達式3,條件運算符的執(zhí)行順序:先求解表達式1,若非〇則求解表達式2,此時表達式2的值就作為整個表達式的值,若表達式1的值為0,則求解表達式3,此時表達式3的值就作為整個表達式的值。本題中,表達式1的值為1,所以整個表達式的值為表達式(ch+32)的值,即為a。故本題答案為B。知識點:知識點/數據類型及其運算/C運算符的種類、運算優(yōu)先級和結合性23、設inta=12,則執(zhí)行完語句a+=a-=a*a后,a的值是〇A:552B:264C:144D:-264答案:D評析:本題的考查點是賦值表達式的求解。第一步:a*a=144;(此時a=12)第二步:a-=144相當于a=a-144,a=a-144=-132;(此時a=T32)第三步:a+=a相當于a=a+a,a=a+a=-264;所以該表達式最后的值應當為ー264。故本題答案為D。知識點:知識點/數據類型及其運算/C表達式類型和求值規(guī)則24、設有如下枚舉類型定義enumlanguage{Basic=3,Assembly=6,Ada=100,COBOL,Fortran};枚舉量Fortran的值為〇A:4B:7C:102D:103答案:C評析:本題考查的是數據類型。這個枚舉中共有5個元素,前三個已有明確的賦值,而COBOL和Fortran沒有明確的賦值,枚舉的語法規(guī)定當枚舉元素沒有賦值時,其值為其前一個元素的值加一,所以COBOL的值為101,故Fortran的值應為102。故容案為C。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法25、設有以下語句,其中不是對a數組元素的正確引用的是:(其中OWiく10)inta[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;A:a[p-a]B:*(&a[i])C:p[i]D:*(*(a+i))答案:D評析:本題的考查點是通過指針引用數組元素。觀察程序可知,a實際上就是數組a的首地址,所以〃*(a+i)〃表示的就是數組a中的第i個元素的值,進而,我們可以知道*(*(a+i))必然不是對a數組元素的正確引用。故本題答案為D。知識點:知識點/指針/指針數組,指向指針的指針,MAIN函數的命令行參數26、設有以下語句chara=3,b=6,c;c=a'bくく2;則c的二進制值是0A:00011011B:00010100C:00011100D:00011000答案:A評析:本題的考查點是位運算。"くく”是C語言中規(guī)定的左移運算符,例如,a=aくく2,這個語句即是將a的二進制數左移兩位,左移一位相當于該數乘以2,左移兩位相當于該數乘以2的2次方;"是異或運算符,所以,c的二進制值應為OOOllOllo故本題答案為A。知識點:知識點/位運算/簡單的位運算27、設有語句inta=3;則執(zhí)行了語句a+=a-=a*a;后,變量a的值是A:3B:0C:9D:-12答案:D評析:本題的考查點是賦值表達式的求解。第一步:a*a=9;(此時a=3)第二步:a-=9相當于a=a-9,a=a-9=-6;(此時a=-6)第三步:a+=a相當于a=a+a,a=a+a=T2;所以該表達式最后的值應當為72。故本題答案為D。知識點:知識點/數據類型及其運算/C表達式類型和求值規(guī)則28、下面程序main(){intx=100,a=10,b=20,okl=5,ok2=0;if(a<b)if(b!=15)if(!okl)x=l;elseif(ok2)x=10;x二T;printf(,,%d\n,/,x);)的輸出是〇A:-1B:0C:1D:不確定的值答案:A評析:本題的考查點是判斷語句的循環(huán)嵌套。第一個判斷值為真,過渡到下ー個判斷,第二個判斷為真,過渡到第三個判斷 如此循環(huán),在打印輸出語句的前一行,程序給變量x賦了值,為T,所以,無論前期如何變化,最后的x值依然為ー1。故本題答案為A。知識點:知識點/循環(huán)結構程序設計/循環(huán)的嵌套29、下面程序main()(intx=32;printf("%d\n",x=x?l);}的輸出是。A:100B:160C:120D:64答案:D評析:本題的考查點是位運算。くく是C語言中規(guī)定的左移運算符,例如,a=aくく2,這個語句即是將a的二進制數左移兩位,左移一位相當于該數乘于2,左移兩位相當于該數乘以2的2次方。所以,xくく1=32*2=64。故本題答案為D。知識點:知識點/位運算/簡單的位運算30、下面程序main()(inta[10]={l,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n”,*(p+2));)的輸出是〇A:3B:4C:1D:2答案:A評析:本題的考查點是通過指針引用數組元素。*p=a語句是使指針p指向數組a的第一個數組元素,因此?(p+2)即是數組a的第3個元素的值,即a[2]。故本題答案為A。知識點:知識點/指針/指針數組,指向指針的指針,MAIN函數的命令行參數31、下面程序main()intx=10,y=3;printf("%d\n",y=x/y);的輸出是〇A:0B:1C:3D:不確定的值答案:C評析:本題的考查點是除法運算。x/y的結果約為3.33333,但是由于打印要求為整型,所以自動轉換為整型(相當于截取整數位),打印結果為3。故本題答案為C。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法32、下面程序voidprtv(int*x){printf("%d\n”,++*x);}main(){inta=25;prtv(&a);)的輸出是〇A:23B:24C:25D:26答案:D評析:本題的考查點是指針變量作為函數參數。觀察程序,可以發(fā)現,函數prtv()的作用是將地址等于x的內存單元中值加1,因為我們在主函數中是將變量a的地址作為實參傳遞給了prtv()函數,所以,函數prtv()將地址等于變量a的地址的那個內存單元中值加一,打印結果自然就是25+1=26了。故本題答案為D。知識點:知識點/指針/指針數組,指向指針的指針,MAIN函數的命令行參數33、下面的程序main(){intx=3;do{printf("%d\n”,x-=2);}while(!(―x));A:輸出的是1B:輸出的是1和一2C:輸出的是3和0D:是死循環(huán)答案:B評析:本題的考查點是do-while語句。在第一次循環(huán)時,先計算表達式x-=2,所以輸出1,一x為〇,判斷表達式的值為非零,返回重新執(zhí)行該語句;在第二次循環(huán)時,表達式x-=2,即ー2,所以輸出ー2,—x為-3,判斷表達式的值為零,循環(huán)結束。故本題答案為B。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構34、下面的程序中錯誤(每行程序前面的數字是行號)。#include<stdio.h>main(){floata[3]={0.0};inti;for(i=0;i<3;i++)scanf('%d",a[i]);for(i=l;i<3;i++)a[0]=a[0]+a[i];printf("%f\n",a[〇]);}A:沒B:第4行C:第6行D:第8行答案:C評析:本題的考查點是函數scanf()的格式輸入。根據函數scanf()的語法可知,在函數中的參數表列部分,應當是欲賦值變量的內存地址,象第六行這樣,將數組元素直接放在參數表列中是無法達到給數組元素賦值的目的。故本題答案為C。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用35、下面函數intfunl(char*x){char*y=x;while(*y++);return(y-x-l);}的功能是。A:求字符串的長度B:比較兩個字符串的大小C:將字符串x復制到字符串yD:將字符串x連接到字符串y后面答案:A評析:本題的考查點是while。循環(huán)語句。這個函數的功能是求字符串的長度,需要注意的是,在返回長度時一定記住要減ー,否則計算出的串長度將會多一。故本題答案是A。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構36、以下程序的輸出結果是。#include<stdio.h>main()inti=10,j=10;printf("%d,%d\n”,++i,j--);A:11,10B:9,10C:010,9D:10,9答案:A評析:本題的考查點是變量的自增、自減運算。++i是先對i進行加1運算,再使用i的值;j一是先使用j值,再對j進行減1運算。所以,程序的打印結果應當為“11,10"。故本題答案為A。知識點:知識點/數據類型及其運算/C運算符的種類、運算優(yōu)先級和結合性37、以下的for循環(huán):for(x=0,y=0;(y!=123)&&(xく4);x++);A:是無限循環(huán)B:循環(huán)次數不定C:執(zhí)行4次D:執(zhí)行3次答案:C評析:本題的考查點是for語句循環(huán)條件的判斷。循環(huán)條件是表達式(y!=123)&&(xく4),因為y值始終為〇,所以表達式左邊一定恒為1,當xく4時,循環(huán)可以運行,當x=4時,循環(huán)終止,所以這個循環(huán)ー共可以執(zhí)行4次。故本題答案為C。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構38、有以下程序:ttinclude<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[l]=O;printf("%d\n",a.i);)程序的輸出結果是(注意:ch[0]在低字節(jié),ch[l]在高字節(jié))0A:13B:14C:208D:209答案:A評析:本題的考查點是共用體類型數據的特點。根據共用體的定義可知:共用體a的成員i和成員ch[2]是共用著同一段內存空間,所以,當程序給a.ch[〇]賦值后,實際上,共用體成員i的值也確定了,為13,所以打印輸出的結果應當為13。故本題答案為A。知識點:知識點/結構體(即〃結構〃)與共用體(即〃聯合〃)/結構體和共用體類型數據的定義方法和引用方法39、有以下程序main(){intc;while((c=getchar())!=\n'){switch(c,2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;})}從第一列開始輸入以下數據,/代表ー個回車符。2473/程序的輸出結果是。A:668977B:668966C:66778777D:6688766答案:A評析:本題的考查點是switch()語句。getcharO函數是從鍵盤接受一個字符輸入;當用戶鍵入的字符不是回車符時,會進入一個多分支選擇語句,根據表達式c-'2’的值進行分支選擇;putchar。是在屏幕上打印一個字符,最后的結果應當為668977c故本題答案為A。知識點:知識點/選擇結構程序設計/用SWITCH語句實現多分支選擇結構40、執(zhí)行下面程序片段的結果是〇intx=23;do{printf("%2d”,x--);}while(!x);A:打印出321B:打印出23C:不打印任何內容D:陷入死循環(huán)答案:B評析:本題的考查點是do-while循環(huán)語句的判斷。x一是自減運算,先使用x的值,后進行自減運算,所以打印出來的結果應當為23。故本題答案為B。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構41、執(zhí)行下面的程序段intx=35;charz-A';intB;B=((x&15)&&(zぐa'));后,B的值為〇A:0B:1C:2D:3答案:B評析:本題的考查點是邏輯與及位與運算。從整個表達式來看是個邏輯表達式,而與運算符〃&&〃的右邊的子表達式中由于z的值為"A”,而A的ASCH碼的值小于a的ASCH碼值,所以這個子表達式的值為真,即1;在與運算符〃&&〃的左邊的子表達式是個基于位運算的子表達式,將x的值與15做位與運算,表達式值不為零,所以兩個子表達式的與值應當為1。故本題答案為B。知識點:知識點/位運算/位運算符的含義及使用42、表達式:10!=9的值是0A:trueB:非零值C:0D:1答案:D評析:本題的考查點是關系運算符!ニ。在這種運算中,表達式的值只有兩種:1或0,表達式10!=9的值應當是1。故本題答案為D。知識點:知識點/數據類型及其運算/C表達式類型和求值規(guī)則43、若有說明:inti,j=7,*p=&i;則與i=j;等價的語句是〇A:i二?p;B:*p=*&j;C:i=&j;D:i=**p;答案:B評析:本題的考查點是指針變量的引用。P的地址本身和i的地址ー樣,所以?P代表i中的數值,而&j是j的地址,*&j就是j中的數值,所以,*p=*&j和i=j是等價的。故本題答案為B。知識點:知識點/指針/指針與指針變量的概念,指針與地址運算符44、以下程序的輸出結果是〇main(){char*s="12134211”;intv[4]={0,0,0,0},k,i;for(k=0;s[k];k++){switch(s[k]){case'r:i=0;case'2':i=l;case'3':i=2;case'4':i=3;)v[i]++;)for(k=0;k<4;k++)printf("%d",v[k]);)TOC\o"1-5"\h\zA: 4 2 1 1B: 0 0 0 8C: 4 6 7 8D: 8 8 8 8答案:B評析:本題的考查點是switch語句的應用。在每次執(zhí)行switch后面括號內的表達式s[k]時,要先取當前s[k]的值與case后的字符常量進行比較,找到與之匹配的分支后,即轉去執(zhí)行該分支中的語句。switch語句中,某分支執(zhí)行完畢,若未遇到break語句,則接著執(zhí)行剩余的其它分支,直到遇到break語句。此題中,因為沒有break語句,所以總會執(zhí)行到i=3,即總是v[3]在遞加。故本題答案為B。知識點:知識點/選擇結構程序設計/用SWITCH語句實現多分支選擇結構45、有如下程序main(){intn=9;while(n>6)(n一;printfn);))該程序的輸出結果是。A:987B:876C:8765D:9876答案:B評析:本題考查點是While語句循環(huán)次數的問題。符合n>6的n只有7,8,9;所以循環(huán)次數為3。選項C、D可以排除。又因n在輸出之前要執(zhí)行n-,所以輸出結果只能是876。本題答案為B。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構46^設有說明語句:chara='\72';則變量a0A:包含1個字符B:包含2個字符C:包含3個字符D:說明不合法答案:A評析:本題考查點是轉義字符的應用。轉義字符常量‘'XX‘可以把‘'‘后面的數字轉換為對應的ASCH字符,''72'表示的是ASCH碼等于72的那個字符,即為〃H”,所以在字符變量中存儲的只是〃H”這一個字符。故本題答案為A。知識點:知識點/數據類型及其運算/不同類型數據間的轉換與運算47、若變量已正確定義并賦值,下面符合C語言的表達式是0A:a:=b+lB:a=b=c+2C:int18.5%3D:a=a+7=c+b答案:B評析:選項A和C顯然錯誤;對于表達式a=a+7=c+b(答案D),是先執(zhí)行賦值表達式a+7=c+b,再把這個表達式的值賦給a,顯然,表達式a+7=c+b非法,因為賦值表達式的左值不能為常量或表達式。本題答案為B。知識點:知識點/基本語句/表達式語句,空語句,復合語句48、若已定義x和y為double類型,則表達式x=l,y=x+3/2的值是A:1B:2C:2.0D:2.5答案:C評析:這是ー個逗號表達式,它的值應為表達式y=x+3/2的值,而前ー個表達式已給x賦值1,在沒有進行類型轉換的情況下,3/2的值為1,所以x+3/2的值應為2.0。本題答案為C。知識點:知識點/基本語句/表達式語句,空語句,復合語句49、若變量a、i已正確定義,且i已正確賦值,合法的語句是,A:a==lB:++i;C:a=a++=5D:a=int(i);答案:B評析:選項D顯然是錯的,而選項A沒有分號結束,不是C語句;a++=5違反了賦值表達式左值必須為ー個變量(不能是常量或表達式)的規(guī)定.本題答案為B。知識點:知識點/基本語句/表達式語句,空語句,復合語句50、有如下程序main(){inty=3,x=3,z=l;printf("%d%d\n”,(++x,y++),z+2);)運行該程序的輸出結果是。TOC\o"1-5"\h\zA: 3 4B: 4 2C: 4 3D: 3 3答案:D評析:逗號表達式(++x,y++)的值應該是y++的值,由于y++是先引用后自增,所以y++的值是3。本題答案為D。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用51、有如下程序main(){intx=l,a=0,b=0;switch(x){case0:b++;a++;a++;b++;)printf(a=%d,b=%d\n,a,b);)該程序的輸出結果是〇A:a=2,b=lB:a=l,b=lC:a=l,b=OD:a=2,b=2答案:A評析:在這個switch語句中,因為x的值為1,所以執(zhí)行case1:后面的a++,這樣a=lo但又由于其下沒有break語句,所以其后面的語句(a++;b++)也將被執(zhí)行,這樣ー來,a=2,b=1。本題答案為A。知識點:知識點/選擇結構程序設計/用SWITCH語句實現多分支選擇結構52、有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=l.0/x;elsey=l.0;printf("%f\n",y);)該程序輸出結果是〇A:0.000000B:0.250000C:0.500000D:1.000000答案:c評析:本題考查的是1F-ELSE語句的使用。x=2.0,符合第二個IF語句的條件xく10.0,所以執(zhí)行y=l.0/x語句,即y=L0/2.0=0.500000。本題答案為C。知識點:知識點/選擇結構程序設計/用IF語句實現選擇結構53、有如下程序main(){inta=2,b=-l,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\rT,c);該程序的輸出結果是。A:0B:1C:2D:3答案:C評析:由于條件(a<b)并不滿足,所以if(a<b)后面的語句并沒有被執(zhí)行,c仍然等于2。本題答案為C。知識點:知識點/選擇結構程序設計/用IF語句實現選擇結構54、有如下程序main(){inti,sum;for(i=l;i<=3;sum+)sum+=i;printf("%d\n",sum);)該程序的執(zhí)行結果是。A:6B:3C:死循環(huán)D:0答案:C評析:在循環(huán)過程中,i的值一直沒有被改變,所以這是一個死循環(huán)。本題答案為C。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構55、有如下程序main(){intn=9;while(n>6) {n--;printf('%d",n);}該程序段的輸出結果是。A:987B:876C:8765D:9876答案:B評析:符合n>6的n只有7,8,9,所以循環(huán)次數為3。C,D可以排除。又:n在輸出之前要執(zhí)行n--,所以輸出結果只能是876。本題答案為B。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構56、設有說明語句:chara='\72';則變量a0A:包含1個字符B:包含2個字符C:包含3個字符D:說明不合法答案:A評析:轉義字符常量‘'XX‘可以把‘'’后面的數字轉換為對應的ASCII字符,’'72‘就是‘H’。本題答案為A。知識點:知識點/基本語句/表達式語句,空語句,復合語句57、有如下程序段int*p,a=10,b=l;p=&a;a=*p+b;執(zhí)行該程序段后,a的值為0A:12B:11C:10D:編譯出錯答案:B評析:執(zhí)行p=&a;后,p指向整數a,*p即p的目標變量,也就是a;所以a=*p+b等價于a=a+b,可知a的值最終為11。本題答案為B。知識點:知識點/指針/指針與指針變量的概念,指針與地址運算符58、對于基類型相同的兩個指針變量之間,不能進行的運算是。A:<B:—C:+D:-答案:c評析:指針之間不能進行加運算。本題答案為C。知識點:知識點/指針/指針與指針變量的概念,指針與地址運算符59、有如下程序ttdefineN2#defineMN+1ttdefineNUM2*M+1main(){inti;for(i=l;i<=NUM;i++)printf("%d\n”,i);)該程序中的for循環(huán)執(zhí)行的次數是0A:5B:6C:7D:8答案:B評析:在C語言中,宏定義在編譯時將被直接替換,所以NUM最后會被替換成2*N+1+1,即2*2+1+1,值為6。因此,for循環(huán)執(zhí)行的次數為6。本題答案為B。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構60、有如下程序段inta=14,b=15,x;charc='A';x=(a&&b)&&(cぐB');執(zhí)行該程序段后,x的值為〇A:trueB:falseC:0D:1答案:D評析:a&&b的值為true,cぐB’的值也為true,所以(a&&b)&&(cぐB')的值為true。但x是int型變量,所以(a&&b)&&(cぐB')的值最后要從bool型轉換為int型賦給X。這樣x的值應為1。本題答案為D。知識點:知識點/數據類型及其運算/不同類型數據間的轉換與運算61、有如下說明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數值為9的表達式是〇A:*p+9B:*(p+8)C:*p+=9D:p+8答案:B評析:P是指針,p+8是地址值,D是錯的;*p是p的目標變量,即a[0],值為1,所以?p+9的值是10,而?p+=9值是重新給a[〇]賦了值(1+9);所以A和C也是錯的。p+8是地址值,指向a[8],那么?(p+8)的值就是a[8]的值,即9。本題答案為B。知識點:知識點/指針/指針數組,指向指針的指針,MAIN函數的命令行參數62有如下程序main()intn[5]={0,0,0},i,k=2;for(i=0;i<k;i++)n[i]=n[i]+1;printf("%d\n",n[k]);)該程序的輸出結果是〇A:不確定的值B:2C:1D:0答案:D評析:由代碼可知,題中的for循環(huán)值執(zhí)行2次(i=0和1),所以只對a[0]和a[l]重新賦了值,而a[k]即a[2]的值并沒有變,仍為〇。本題答案為D。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構63、有如下程序main()(inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;jく=i;j++)s+=a[i][j]];printf("%d\n",s);)該程序的輸出結果是。A:18B:19C:20D:21答案:A評析:題中的外循環(huán)只執(zhí)行了2次:第1次:a[l][0]=3,a[l][l]=4,所以s=7;第2次:a[2][0]=5,a[2][l]=6,a[2][2]=0,所以s=7+5+6+0二18〇本題答案為A。知識點:知識點/循環(huán)結構程序設計/循環(huán)的嵌套64、有如下定義structperson(charname[9];intage;};structpersonclass[10]=tJohn”,17,"Paul”,19,"Mary",18,"Adam",16,};根據上述定義,能輸出字母M的語句是〇A:printf("%c\n",class[3].name);B:printf("%c\n",class[3].name[l]);C:printf("%c\n",class[2].name[l]);D:printf("%c\n",class[2].name[0]);答案:D評析:選項A將輸出A;選項B將輸出d;選項C將輸出a;選項D將輸出M。本題答案為D。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用65、以下對結構體類型變量的定義中,不正確的是〇A:typedefstructaa{intn;floatm;}AA;AAtdl;B:#defineAAstructaaAA{intn;floatm;}tdl;C:struct{intn;floatm;}aa;structaatdl;D:struct{intn;floatm;}tdl;答案:C評析:在答案C中,aa是ー個結構體變量,而不是結構體名,所以structaatdl;是非法的。本題答案為C。知識點:知識點/結構體(即"結構")與共用體(即"聯合")/結構體和共用體類型數據的定義方法和引用方法66、下列敘述中正確的是〇A:C語言編譯時不檢查語法B:C語言的子程序有過程和函數兩種C:C語言的函數可以嵌套定義D:C語言中,根據函數能否被其它源文件調用,被區(qū)分為內部函數和外部函數答案:D評析:選項A的錯誤在于編譯過程中是檢查語法的,若發(fā)現源程序有語法錯誤,則系統會提示出錯信息;選項B的錯誤在于C語言中,子程序的作用是由函數來完成的,無過程的概念;選項C的錯誤在于函數不可以嵌套定義,但可以嵌套調用。本題答案為D。知識點:知識點/C語言的結構/程序的構成,MAIN函數和其他函數67、以下列出C語言常量中,錯誤的是0A:OxFFB:1.2e0.5C:2LD:,\72,答案:B評析:C語言中的指數形式,字母E之前必須有數字,且E后面指數必須為整數。本題答案為B。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法68、以下變量x、y、z均為double類型且已正確賦值,不能正確表示數學式子x/(y*z)的C語言表達式是。A:x/y*zB:x*(l/(y*z))C:x/y*l/zD:x/y/z答案:A評析:按照自左向右的運算邏輯,選項A是先做x/y,然后再乘以x,顯然與題意不符。本題答案為A。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法69、若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是〇A:-3B:9C:-12D:6答案:C評析:C語言中對賦值運算的運算順序是自右向左。本題中,計算a*a之后,a的值依然為3,表達式a*a的值為9;a-=9,a=3-9=-6;a+=-6,a二一6+-6二-12。本題答案為C。知識點:知識點/數據類型及其運算/C表達式類型和求值規(guī)則70、設x、y、t均為int型變量,則執(zhí)行語句:x=y=3;t=++x||++y;后,y的值為〇A:不定值B:4C:3D:1答案:C評析:C語言中在做邏輯或運算時,自左向右判斷各個參加或運算的表達式,一旦運到某式的值為非零時,表明整個表達式定為真,余下的語句則不再進行運算。本題中,++x的值為真,貝リ++y并沒有進行運算,所以y值不變。本題答案為C。知識點:知識點/基本語句/復合語句71、若變量已正確說明為float類型,要通過語句scanf("%f%f%f",&a,&b,&c):給a賦予10.0,b賦予22.0,c賦予33.0,不正確的輸入形式是:0A:102233B:10.0,22.0,33.0C:10.0033.0D:102233答案:B評析:C語言中,數據輸入時,必需嚴格按照scanf語句中的格式符來進行輸入,不需要分隔符,否則作為有效字符讀入。選項中B中的逗號將被做為有效字符讀入。本題答案為B。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用72、若a、b、cl、c2、x、y均是整型變量,正確的switch語句是0switch(a+b);{case1:y=a+b;break;case0:y=a-b;break;)switch(a*a+b*b){case3:case1:y=a+b;break;case3:y=b-a;break;)switcha{casecl:y=a-b;break;casec2:x=a*b;break;default:x=a+b;}switch(a-b){default:y=a*b;break;case3:case4:x=a+b;break;case10:case11:y=a-b;break;}A:①B:②C:③D:④答案:D評析:選項A的錯誤在于switch語句后面不該加分號;選項B的錯誤在于switch語句要求每ー個case的常量表達式的值必須互不相同;選項C的錯誤在于變量a應該用括號括起來,case后面應該跟上常量表達式,而不是變量。本題答案為D。知識點:知識點/選擇結構程序設計/用SWITCH語句實現多分支選擇結構73、有以下程序段intk=0;while(k=l)k++;while循環(huán)執(zhí)行的次數是0A:無限次B;有語法錯,不能執(zhí)行C:一次也不執(zhí)行D:執(zhí)行1次答案:A評析:乍ー看,還以為程序要表達的意思是當k等于1的時候做k++,但是C語言里關系表達式的等于應該是"==〃。ー個等于號表示賦值,即這里面重復的把1賦給k,自然表達式k=l的值總為1,while后面的表達式恒為真,當然會進入死循環(huán)。本題答案為A。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構74、以下程序執(zhí)行后sum的值是〇main(){inti,sum;for(i=l;i<6;i++)sum+=i;printf("%d\n",sum);)A:15B:14C:不確定D:0答案:C評析:變量sum在使用時未賦初值,所以無法確定sum最終的值。本題答案為C。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構75、下面程序的輸出結果是〇main(){inta[]={l,2,3,4,5,6,7,8,9,0},*p;P=a;printf("%d\n”,*p+9);)A:0B:1C:10D:9答案:C評析:本題中,P=a,則表明指針p指向數組a的第一個元素,即a[0]。指針運算符”?〃的優(yōu)先級高于加法運算符〃+”,所以〃*P+9”相當于a[0]+9,即10。本題答案為C。知識點:知識點/指針/指針數組,指向指針的指針,MAIN函數的命令行參數76、設有以下說明語句structex{intx;floaty;charz;}example;則下面的敘述中不正確的是〇A:struct是結構體類型的關鍵字B:example是結構體類型名C:x,y,z都是結構體成員名D:structex是結構體類型答案:B評析:example是結構體變量名。本題答案為B。知識點:知識點/結構體(即〃結構”)與共用體(即〃聯合“)/結構體和共用體類型數據的定義方法和引用方法77、以下程序的輸出結果是〇main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("如、n",k);)A:20B:21C:22D:23答案:B評析:按照程序的流程走一遍,我們可以得到,P流]=0,p[l]=2,p程]=6;做三次k+=p[i]*2,相當于k=5+0*2+2*2+6*2=21。本題答案為B。知識點:知識點/循環(huán)結構程序設計/循環(huán)的嵌套78、以下程序的輸出結果是〇#defineSQR(X)X*Xmain(){inta=16,k=2,m=l;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);)A:16B:2C:9D;1答案:B評析:本題所考查的是宏定義。C語言在預編譯時遇到帶實參的宏名,則按命令行中指定的字符串從左到右進行置換。在做這條題時,我們也不妨將運用置換法。得到:a/=k+m*k+m/k+m*k+m=16/7=2。注:a為整形,所以在做除法時,自動取整。本題答案為B。知識點:知識點/基本語句/復合語句79、若定義了以下函數:voidf( )*p=(double*)malloc(10*sizeof(double));P是該函數的形參,要求通過P把動態(tài)分配存儲單元的地址傳回主調函數,則形參p的正確定義應當是〇A:double*pB:float**pC:double**pD:float*p答案:C評析:通過程序中給出的語句,我們可以判斷,*p是ー個指向double型指針的指針。因此,要通過P把動態(tài)分配存儲單元的地址傳回主調函數,應該使用double**po本題答案為c。知識點:知識點/指針/返回指針值的指針函數80、假定建立了以下鏈表結構,指針p、q分別指向如圖所示的結點,則以下可以將q所指結點從鏈表中刪除并釋放該結點的語句組是4P 4qdatanextA:free(q);p->next=q->next;B:(*p).next=(*q).next;free(q);C:q=(*q).next;(*p).next=q;free(q);D:q=q->next;p->next=q;p=p->next;free(p);答案:B評析:選項A的錯誤在于,已經先把q結點給釋放,無法再進行余下語句了;選項C和D的錯誤在于因為有了q=(*q).next做了賦值,貝リfree(q)釋放了原來q后面的ー個結點。本題答案為B。知識點:知識點/結構體(即“結構”)與共用體(即"聯合")/用指針和結構體構成鏈表81、以下程序的輸出結果是〇main(){intx=05;charz='a';printf("%d\n",(x&l)&&(zぐz'));}A:0B:1C:2D:3答案:B評析:關系表達式(x&l)&&(zぐz'),(x&l)為真,(zぐz')也為真,兩個相與,自然也為真,以整型輸出,則輸出1。本題答案為B。知識點:知識點/位運算/簡單的位運算82、設x,y均為int型變量,且x=10,y=3,則以下數據的輸出結果是printf("%d,%d\n”,x一,一y)〇A:10,3B:9,3C:9,2D:10,2答案:D評析:本題主要考查C語言的自減運算符。C語言的自減運算符有前置與后置兩種形式。當自減運算符前置時,變量先自減ー后再參與表達式運算;而后置時,變量先參與表達式運算后再自身減ー。本題答案為D。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用83、X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數據,正確的輸入語句是〇A:INPUTX,Y,Z;B:scanf(,,%d%d%d/,,&X,&Y,&Z);C:scanf("%d%d%d”,X,Y,Z);D:read(級d%d%d”,&X,&Y,&Z);答案:B評析:本題考查C語言的格式化輸入語句。C語言中沒有INPUT與read語句,scanf()語句的格式為:scanf("格式字符串”,變量地址1,變量地址2,...);本題答案C中,應為變量地址。本題答案為B。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用84、以下程序的輸出結果是〇main(){inta=3;printf("%d\n",(a+=a-=a*a));A:-6B:1C:2D:-12答案:D評析:本題考查C語言的賦值運算符。a+=b就等于a=a+b,a-=b就等于a=b〇本題答案為D。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用85>設a、b、c、d、m>n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2則邏輯表達式(m=a>b)&&(n=c〉d)運算后,n的值為〇A:0B:1C:2D:3答案:A評析:本題考查C語言的比較運算符與邏輯運算符。C語言中比較表達式的運算結果為0或1。0代表不成立,1表示成立。本題答案為A。知識點:知識點/基本語句/表達式語句,空語句,復合語句86、閱讀以下程序main(){intx;scanf(“郷",&x);if(x—<5)printf("%d\n",x);else printf("%d\n",x++);)程序運行后,如果從鍵盤上輸入5,則輸出結果是〇A:3B:4C:5D:6答案:B評析:本題考查C語言中的自增(++)與自減(一)運算符。C語言中〃++"與〃ーー〃運算符有前置與后置兩種形式,前置時變量先自增ー或自減ー后再參與表達式的運算,后置時變量先參與表達式的運算后再自增ー或自減ー。本題答案為B。知識點:知識點/選擇結構程序設計/用IF語句實現選擇結構87、假定w、x、y、z、m均為int型變量,有如下程序段:w=l;x=2;y=3;z=4m=(w<x)?w:x;m=(ni<y)?ni:y;m=(m〈z)?m:z;則該程序段執(zhí)行后,m的值是〇A:4B:3C:2D:1答案:D評析:本題考查C語言的條件運算符。C語言中條件運算符的表達式為:表達式?數1:數2當表達式為非零時條件運算符的表達式的值為數1,否則為數2。本題答案為D。知識點:知識點/基本語句/復合語句88、t為int類型,進入下面的循環(huán)之前,t的值為0,while(t=l)則以下敘述中正確的是A:循環(huán)控制表達式的值為0B:循環(huán)控制表達式的值為1C:循環(huán)控制表達式不合法D:以上說法都不對答案:B評析:本題考查C語言的while循環(huán)語句。本題的t=l是ー個賦值表達式,其值為變量的值,所以while語句的循環(huán)控制表達式的值為1。本題答案為B。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構89、以下程序的輸出結果是〇main(){intnum=0;while(num<=2){num++;printfC%d\n,num);})TOC\o"1-5"\h\zA) B) C) D)1 1 12 23A:A)B:B)C:C)D:D)答案:C評析:本題考查C語言的while循環(huán)語句。C語言中while語句的一般形式如下:while(表達式)(語句部分;)該語句的執(zhí)行過程是:先計算表達式的值,若成立(即值為非零)則重新執(zhí)行語句部分(循環(huán)體),然后再次計算表達式的值,并重復上述過程,直到表達式的值為"假"(值為零)時,退出循環(huán),并轉下ー語句去執(zhí)行。本題答案為C。知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構

90、以下各選項企圖說明一種新的類型名,其中正確的是0A:typedefvlint;B:typedefv2=int;C:typedefintv3;D:typedefv4:int答案:C評析:本題考查C語言的類型定義。C語言中可以使用typedef來重新定義已有的數據類型,相當于為數據類型取個別名。本題答案為C。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法91、設有以下函數;f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);如果在下面的程序中調用該函數,則輸出結果是main(){int{inta=2,i;for(i=0;i<3;i++)}A) B) C)7 79 1011 13A:A)B:B)C:C)D:D)答案:A評析:printf("%d\n",f(a));D)777本題考查的是C語言的靜態(tài)數據類型。靜態(tài)數據類型的變量的值在退出了函數時依然存放在內存中,且只初始化一次。本題答案為A。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構92、以下選項中,非法的字符常量是0A:'\ピB:'\17'C:"\n"D:'\xaa,答案:C評析:本題考查C語言的字符常量與轉義字符。C語言中字符常量是以單引號括起來的單個字符,或為以"、”與三位ハ進制數值或兩位十六進制數值代替單個字符。本題竺案為C。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法93、若有說明:inti,j=2,*p=&i;,則能完成i=j賦值功能的語句是A:i=*p;B:*p=*&j;C:i=&j;D:i=**p;答案:B評析:本題考查C語言中指針賦值運算。指針是一種特殊的變量,它是用來存放變量地址的變量。指針定義時可以為其賦初值。只有指針被賦了值后才能對其使用。本題答案為B。知識點:知識點/基本語句/表達式語句,空語句,復合語句94、以下定義語句中,錯誤的是〇A:inta[]={l,2};B:char*a[3];C:chars[10]="test";D:intn=5,a[n];答案:D評析:本題考查C語言數組的定義與初始化。在C語言中數組的初始化可以對部分元素,數組的定義,不能含有變量。本題え案為D。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法95、以下程序的輸出結果是0main(){inti,a[10];for(i=9;i>=0;i一)a[i]=10-i;printf(,,%d%d%d,/,a[2],a[5],a[8]);)A:258B:741C:852D:369答案:C評析:本題使循環(huán)語句給數組元素賦值。C語言中for循環(huán)語句的一般形式為:for(表達式1;表達式2i表達式3){語句部分;)本題答案為C。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構96、以下程序的輸出結果是。main(){charst[20]="hello\0\t\\”;printf("%d%d\n,strlen(st),sizeof(st));}A:99B:520C:1320D:2020答案:B評析:本題主要考查C語言的字符串與庫函數。C語言中字符串是以‘、〇’字符結束的,且strlenO函數計算的是‘、〇’字符前的所有字符的個數。本題中strlen(st)應為5。數組定義以后系統就為其分配相應大小的內存空間,而不論其中有沒有內容。sizeofO函數是計算變量或數組的所分配到的內存空間的大小。所以本題的sizeof(st)為20。本題答案為B。知識點:知識點/數據類型及其運算/不同類型數據間的轉換與運算97、以下程序輸出正確的是〇amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);amovep(p,a,3);printf("%d%d\n”,p[2],p[5]);free(p);}A:56B:25C:34D:程序錯誤答案:A評析:本題主要考查的是指針與數組的操作??梢杂胢alloc()函數為指針分區(qū)內存空間,用free()函數釋放指針變量所用內存空間。本題答案為A。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構98、以下程序的輸出結果是。structHAR{intx,y;structHAR*p;}h[2];main(){h[O].x=l;h[0].y=2;h[l].x=3;h[l].y=4;h[O].p=&h[l];h[l].p=h;printf(/,%d%d\nzz,(h[O].p)->x,(h[l].p)->y);)A:12B:23C;14D:32答案:D評析:本題考查的是C語言中結構體與鏈表。本題中是一個含有兩個結點的循環(huán)鏈表。C語言中結構體的定義為:struct結構體類型名(成員表列;};本題答案為D。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用99、以下程序的輸出結果是。niainO{inta,b;for(a=l,b=l;a<=100;a++){if(b>=10)break;if(b%3ニニ1){b+=3;continue;})printf(zz%d\nzz,a);A:101B:6C:5D:4答案:D評析:本題主要考查考生對C語言中的循環(huán)語句和程序的執(zhí)行邏輯。本題中for循環(huán)語句共執(zhí)行3次,所以a的值累加3次,結果為4。本題答案為D。知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構100、以下程序的輸出結果是。unionmyun{struct{intx,y,z;}u;intk;}a;main(0{a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf("%d\n",a.u.x);}A:4B:5C:6D:0答案:D評析:本題主要考查C語言中構造類型,聯合體與結構體。結構體中的成員使用各自的存儲區(qū),而聯合體中的成員使用共同的存儲區(qū)。本題答案為D。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用101、以下程序的結果是〇inta,b;voidfun(){ a=100;b=200;}main(){inta=5,b=7;fun();printf("%d%d\n”,a,b);A:100200B:57C:200100D:75答案:B評析:本題主要考查的是C語言中的變量作用域。全程變量是可以在子函數中對其值作改變,且它也可作為函數間的值傳遞。但當函數或子函數中定義了與全程變量名稱相同的局部變量,則全程變量將被屏蔽。所以本題主函數的局部變量a,b把同名的全程變量屏蔽了。本題答案為B。知識點:知識點/基本語句/數據的輸入與輸出,輸入輸出函數的調用102、以下選項中不屬于C語言的類型和是〇A:signedshortintB:unsignedcharC:singedlongD:longshort答案:D評析:C語言中歸納起來,基本類型數據有以下幾種:[singed]char;unsigedchar;[signed]short[int];unsignedshort[int];[signed]long[int];unsighedlong[int];float;double.本題答案為D。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法103、若有說明語言:inta,b,c,*d=&c;則能正確從鍵盤讀入三個整數分別賦給變量a、b、c的語句是〇A:scanf(,,%d%d%d,/,&a,&b,d);B:scanf("%d%d%d",&a,&b,&d);C:scanf("%d%d%d”,a,b,d);D:scanf(,,%d%d%d,/,a,b,*d);答案:A評析:在scanf語句中,要為某ー變量賦值,引用的是該變量的地址,所以在這里要為a,b,c賦值可以寫成兩種形式,除了采用答案B的形式外,還可以寫成scan城"%d%d%d",&a,&b,d)〇本題答案為A。知識點:知識點/基本語句/表達式語句,空語句,復合語句104、在16位C編譯系統上,若定義longa;,則能給a賦40000的正確語句是〇A:a=20000+20000B:a=4000*10C:a=30000+10000D:a=4000L*10L答案:D評析:除D之外的選項的右邊的表達式都超過了16位帶符號整數的范圍(32767)〇本題答案為D。知識點:知識點/基本語句/表達式語句,空語句,復合語句105、以下敘述正確的是〇A:可以把define和if定義為用戶標識符B:可以把define定義為用戶標識符,但不能把if定義為用戶標識符C:可以把if定義為用戶標識符,但不能把define定義為用戶標識符D:define和if都不能定義為用戶標識符答案:B評析:if屬于系統定義的32個標準標識符之一,所以不可以供用戶定義。define不在其中。本題答案為B。知識點:知識點/數據類型及其運算/C的數據類型及其定義方法106^若定義:inta=511,*b=&a:,貝リprintf("%d\n",*b):的輸出結果為〇A:無確定值B:a的地址C:512D:511答案:D評析:本題,首先定義了一個整型變量a,并將它賦值為511,然后又定義了一個指針變量,將它賦值為變量a的地址,在

溫馨提示

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

評論

0/150

提交評論