




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、選擇題(第一部分)1、有以下程序void fun(int a,int i,int j) int t; if(i<j) t=ai;ai=aj;aj=t; i+; j-; fun(a,i,j); main() int x=2,6,1,8,i; fun(x,0,3); for(i=0;i<4;i+) printf("%2d",xi); printf("n");程序運(yùn)行后的輸出結(jié)果是_。A:1 2 6 8B:8 6 2 1C:8 1 6 2D:8 6 1 2答案:C評(píng)析: 本題考的是函數(shù)參數(shù)的傳遞。 當(dāng)用數(shù)組名作函數(shù)參數(shù)時(shí),數(shù)組名代表數(shù)組的首地址。f
2、un(x,0,3);是將數(shù)組名x作為實(shí)參,把數(shù)組x的首地址傳送給形參(指針a),這樣數(shù)組x與形參指針a共占同一段內(nèi)存單元,所以在調(diào)用函數(shù)期間,如果改變了形參數(shù)組x的值,也就改變了實(shí)參指針a的值。 另外此題還考了個(gè)函數(shù)自身的調(diào)用,下面是調(diào)用fun()函數(shù)的運(yùn)行過(guò)程: a=x,i=0,j=3,判斷i<j,交換ai,aj,此時(shí)a0到a3里面的數(shù)分別為8,6,1,2,也即是 x0到x3中的數(shù)值,因?yàn)樗鼈児灿么鎯?chǔ)單元;i+; j-后繼續(xù)調(diào)用fun(),此時(shí)i,j分別為1,2,交換a1,a2的值后a所指向的存儲(chǔ)單元中的數(shù)據(jù)為8,1,6,2;繼續(xù)i+; j-后判斷i<j不成立,返回主函數(shù),輸出x
3、i即指針a所指向的數(shù)據(jù)8,1,6,2。 故本題答案為C。2、有以下說(shuō)明和定義語(yǔ)句struct student int age; char num8;struct student stu3=20,"200401",21,"200402",19,"200403"struct student *p=stu;以下選項(xiàng)中引用結(jié)構(gòu)體變量成員的表達(dá)式錯(cuò)誤的是_。A:(p+)->numB:p->numC:(*p).numD:stu3.age答案:D評(píng)析: 本題考的是結(jié)構(gòu)體變量的引用。 引用形式有以下三種:結(jié)構(gòu)體變量. 成員名;(*p).成
4、員名;p成員名。所以A,B,C答案都是正確的。 故本題答案為D。3、有如下程序#include <stdio.h>main()FILE *fp1; fp1=fopen("f1.txt","w"); fprintf(fp1,"abc"); fclose(fp1);若文本文件f1.txt中原有內(nèi)容為:good,則運(yùn)行以上程序后文件f1.txt中的內(nèi)容為_(kāi)。A:goodabcB:abcdC:abcD:abcgood答案:C評(píng)析: 本題考的是文件類型指針。 fp1=fopen("f1.txt","w&
5、quot;)表示打開(kāi)名為f1.txt 的文件,使用文件方式為向該文件寫(xiě)數(shù)據(jù),如果原來(lái)不存在該文件,則在打開(kāi)時(shí)新建一個(gè)以指定的名字命名的文件;如果原來(lái)已存在一個(gè)以該文件命名的文件,則在打開(kāi)時(shí)將該文件刪去,然后重新建立一個(gè)新文件,所以本題中f1.txt中原有內(nèi)容good被刪去了,fopen函數(shù)帶回指向fp1文件的指針并賦給fp1。fprintf(fp1,"abc")的作用是將字符串a(chǎn)bc輸出到fp1指向的文件上。 故本題答案為C。4、以下不合法的用戶標(biāo)識(shí)符是_。A:j2_KEYB:DoubleC:4dD:_8_答案:C評(píng)析: 本題考查的是標(biāo)識(shí)符。 C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)
6、字和下劃線三種符號(hào)組成,而且第一個(gè)字符必須是字母或下劃線。大寫(xiě)字母和小寫(xiě)字母被認(rèn)為是兩個(gè)不同的字符,用戶在定義標(biāo)識(shí)符時(shí)應(yīng)做到"見(jiàn)名知意",且不允許使用關(guān)鍵字作標(biāo)識(shí)符。 故本題答案為C。5、以下不合法的數(shù)值常量是_。A:011B:le1C:8.0E0.5D:0xabcd答案:C評(píng)析: 本題考查的是數(shù)值常量的定義。 數(shù)值常量區(qū)分為不同的類型,如12、0、-3為整型常量,4.6、-1.23為實(shí)型常量,'a','A'為字符常量。實(shí)數(shù)常量有兩種表示形式:十進(jìn)制小數(shù)形式和指數(shù)形式。用指數(shù)形式表示必須注意字母e(或E)之前必須有數(shù)字,且e(或E)后面的指數(shù)
7、必須為整數(shù)。如:e3、7e3.5、8.0E0.5都是不合法的。 故本題答案為C。6、以下能正確定義字符串的語(yǔ)句是_。A:char str='064'B:char str="x43"C:char str=''D:char str="0"答案:D評(píng)析: 本題考查的是字符串的定義。 C語(yǔ)言中,字符串是用一對(duì)雙引號(hào)括起來(lái)的字符序列,并用字符型數(shù)組來(lái)存放,故選項(xiàng)A、C不屬于字符串, 選項(xiàng)B定義的是一個(gè)字符變量str,卻用來(lái)存放字符串,顯然也不正確,所以選項(xiàng)D正確。 故本題答案為D。7、若要求從鍵盤(pán)讀入含有空格字符的字符串,應(yīng)該使用函
8、數(shù)_。A:getc()B:gets()C:getchar()D:scanf()答案:B評(píng)析: 本題考查的是字符串的讀寫(xiě)。 函數(shù)getchar( )的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符,且只能接受一個(gè)字符(回車符也算是一個(gè)字符),所以getchar()不能用來(lái)讀入字符串。scanf()函數(shù)要求按一定的格式來(lái)輸入,若同時(shí)輸入多個(gè)字符串,則以空格或回車分割,所以空格不能被識(shí)別為一個(gè)字符,也就無(wú)法讀入空格字符。函數(shù)gets()的作用是從終端輸入一個(gè)字符串(包括空格)到字符數(shù)組,直到遇到換行符為止,所以可以用來(lái)鍵盤(pán)讀入空格字符。 故本題答案為B。8、以下四個(gè)程序中,完全正確的是_。A:
9、#include <stdio.h>main(); /*programming*/ printf("programming!n");B:#include<stdio.h>main() /*/programming/*/ printf("programming!n");C:#include <stdio.h>main() /*programming*/ printf("programming!n"); D:include<stdio.h> main() /*/*programming*/*
10、/ printf("programming!n");答案:C評(píng)析: 本題考查的是C語(yǔ)言中注釋的格式。 C語(yǔ)言中注釋用"/*"和"*/"括起來(lái),它可以出現(xiàn)在程序中任何合適的地方。選項(xiàng)A 中"main();"是一個(gè)函數(shù)聲明語(yǔ)句,下面的大括號(hào)及其內(nèi)容作為一個(gè)語(yǔ)句塊,應(yīng)放在程序的大括號(hào)中,故選取項(xiàng)A錯(cuò)誤;選項(xiàng)B中的注釋語(yǔ)句不正確,因?yàn)槌绦蛟诰幾g時(shí)認(rèn)別到兩次"/*"作為注釋的開(kāi)始,但未識(shí)別到"*/"作為注釋的結(jié)束,故選項(xiàng)B錯(cuò)誤;選項(xiàng)D的"include"前缺少&qu
11、ot;#",故選項(xiàng)D錯(cuò)誤。 故本題答案為C。9、若各選項(xiàng)中所有變量已正確定義,函數(shù)fun中通過(guò)return語(yǔ)句返回一個(gè)函數(shù)值,以下選項(xiàng)中錯(cuò)誤的程序是_。A:main() x=fun(2,10); float fun(int a,int b) B:float fun(int a,int b)main() x=fun(i,j); C:float fun(int int);main() x=fun(2,10); float fun(int a,int b) D:main() float fun(int i, int j); x=fun(i,j); float fun(int a,int b
12、) 答案:A評(píng)析: 本題考查的是函數(shù)的調(diào)用。 C語(yǔ)言程序是由一個(gè)主函數(shù)和若干個(gè)其他函數(shù)組成的,主函數(shù)的函數(shù)名為:main(),main()函數(shù)在程序中的位置是任意的。C語(yǔ)言程序是從main()函數(shù)開(kāi)始執(zhí)行,當(dāng)程序中定義了多個(gè)函數(shù)時(shí),通常情況下是先定義后調(diào)用,若被調(diào)函數(shù)定義在主調(diào)函數(shù)之后,則必須先聲明后調(diào)用。在選項(xiàng)A中,先執(zhí)行main()函數(shù),此時(shí)對(duì)fun()函數(shù)進(jìn)行調(diào)用,由于fun函數(shù)在此調(diào)用之前無(wú)定義也無(wú)聲明,故無(wú)法正常識(shí)別調(diào)用,所以選項(xiàng)A的程序錯(cuò)誤。 故本題答案為A。10、在以下給出的表達(dá)式中,與while(E)中的(E)不等價(jià)的表達(dá)式是_。 A:(!E=0) B:(E>0|E<
13、;0) C:(E=0)D:(E!=0)答案:C評(píng)析: 本題考查的是while條件表達(dá)式的判斷。 while(表達(dá)式)語(yǔ)句用來(lái)實(shí)現(xiàn)"當(dāng)型"循環(huán)結(jié)構(gòu),當(dāng)表達(dá)式為非0值時(shí),執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句。選項(xiàng)A非零即為1,選項(xiàng)B與選項(xiàng)D的結(jié)果也為1,只有選項(xiàng)C為0。 故本題答案為C。11、已定義以下函數(shù)int fun(int *p)return *p;fun函數(shù)返回值是_。A:不確定的值B:一個(gè)整數(shù)C:形參p中存放的值D:形參p的地址值答案:B評(píng)析: 本題考查的是函數(shù)的返回值。 函數(shù)值的類型應(yīng)當(dāng)是在定義函數(shù)時(shí)指定的。在定義函數(shù)時(shí)對(duì)函數(shù)值說(shuō)明的類型一般和return語(yǔ)句中的表達(dá)式類
14、型一致,即函數(shù)類型決定返回值的類型。此題中定義函數(shù)類型為int型,故函數(shù)返回值也為整型。 故本題答案為B。12、若有說(shuō)明語(yǔ)句:double *p,a;則能通過(guò)scanf語(yǔ)句正確給輸入項(xiàng)讀入數(shù)據(jù)的程序段是_。A:*p=&a; scanf("%lf",p);B:*p=&a; scanf("%f",p);C:p=&a; scanf("%lf",*p);D:p=&a; scanf("%lf",p);答案:D評(píng)析: 本題考查的是數(shù)據(jù)輸入。 p=&a的意思是指將a的地址賦給指針變量p。*
15、p=&a是錯(cuò)誤的書(shū)寫(xiě)方式,其正確的表達(dá)形式為"int *p=&a;",它等效于:int *p; p=&a;, scanf()語(yǔ)句的格式是"scanf(格式控制,地址列表)", 在選項(xiàng)D中,"p"本身就代表著一個(gè)地址。 故本題答案為D。13、現(xiàn)有以下結(jié)構(gòu)體說(shuō)明和變量定義,如圖所示,指針p、q、r分別指向一個(gè)鏈表中連續(xù)的三個(gè)結(jié)點(diǎn)。struct node char data; struct node *next;*p,*q,*r;現(xiàn)要將q和r 所指結(jié)點(diǎn)交換前后位置,同時(shí)要保持鏈表的連續(xù),以下不能完成此操作的語(yǔ)句是_。
16、 A:q->next=r->next;p->next=r;r->next=q; B:p->next=r;q->next=->next;r->next=q; C:q->next=r->next;r->next=q;p->next=r; D:r->next=q;p->next=r;q->next=r->next;答案:D評(píng)析: 本題考查的是鏈表。 選項(xiàng)D中首先將q賦給r->next,也就是將結(jié)點(diǎn)q的地址存放在結(jié)點(diǎn)r的指針域中;接著將r賦給p->next,也就是將結(jié)點(diǎn)r的地址存放在結(jié)點(diǎn)p的指針
17、域中,此時(shí)完成了q和r所指結(jié)點(diǎn)的交換。q->next=r->next的目的是想將q的指針域指向下一個(gè)結(jié)點(diǎn)的數(shù)據(jù)地址,但由于一開(kāi)始執(zhí)行了r->next=q,即已將r的指針域中存放了q結(jié)點(diǎn)的地址,所以再做操作"q->next=r->next"就相當(dāng)于將q指向了其本身,也就是和下一個(gè)結(jié)點(diǎn)斷開(kāi)了,所以選項(xiàng)D操作錯(cuò)誤。 故本題答案為D。14、有以下程序段struct stint x;int *y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c;以下選項(xiàng)中表達(dá)式的值為11的是_。 A:*pt->y
18、 B:pt->x C:+pt->x D:(pt+)->x答案:C評(píng)析: 本題考查的是結(jié)構(gòu)體類型的指針。 題目中定義了一個(gè)st結(jié)構(gòu)體類型,然后定義了st型的結(jié)構(gòu)體指針變量*pt及結(jié)構(gòu)體數(shù)組c,并對(duì)結(jié)構(gòu)體數(shù)組進(jìn)行了初始化,且將結(jié)構(gòu)體指針變量pt指向了數(shù)組c,則pt->x的值為10,則+pt->x的值為11(注:"->"運(yùn)算符的優(yōu)先級(jí)高于"+"),故選項(xiàng)C正確。 故本題答案為C。15、設(shè)有以下語(yǔ)句int a=1,b=2,c;c=a(b<<2);執(zhí)行后,c的值為_(kāi)。 A:6 B:7 C:8 D:9答案:D評(píng)析: 本
19、題考查的是位運(yùn)算。 有括號(hào)的先算括號(hào)內(nèi)的數(shù)據(jù),所以先對(duì)b進(jìn)行左移運(yùn)算:b換算成二進(jìn)制0000 0010,左移后變?yōu)?000 1000,然后再與a進(jìn)行異或運(yùn)算(參與運(yùn)算的兩個(gè)對(duì)應(yīng)位相同,則為0,相異則為1)結(jié)果為0000 1001,換算成十進(jìn)制數(shù)結(jié)果為9。對(duì)于左移運(yùn)算也可直接用此規(guī)則:左移1位相當(dāng)于該數(shù)乘以2,左移2位相當(dāng)于該數(shù)乘以22=4,依此類推。 故本題答案為D。16、#include <stdio.h>main() char c1,c2,c3,c4,c5,c6; scanf("%c%c%c%c",&c1,&c2,&c3,&c
20、4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf("%c%cn",c5,c6);程序運(yùn)行后,若從鍵盤(pán)輸入(從第1列開(kāi)始)123<回車>45678<回車>則輸出結(jié)果是_。 A:1267 B:1256 C:1278 D:1245答案:D評(píng)析: 本題考查的是字符輸入輸出函數(shù)的應(yīng)用。 getchar()函數(shù)只能接收一個(gè)字符,即使輸入多個(gè)字符后再按回車還是只能將第一個(gè)字符讀入。scanf()和printf()是按格式輸入輸出的函數(shù),當(dāng)輸入123<回車>,scanf()分
21、別讀入字符"1"、"2"、"3"、"<回車>";接下來(lái)輸入45678<回車>,則getchar()讀入字符"4"賦值給c5,字符"5" 賦值給c6,所以輸出語(yǔ)句輸出結(jié)果為1245。 故本題答案為D。17、有以下程序main() int i,j,x=0; for(i=0;i<2;i+) x+; for(j=0;j<=3;j+) if(j%2) continue; x+; x+; printf("x=%dn",x);程序執(zhí)行
22、后的輸出結(jié)果是_。 A:x=4 B:x=8 C:x=6 D:x=12答案:B評(píng)析: 本題考查的是循環(huán)嵌套和continue語(yǔ)句的應(yīng)用。 continue語(yǔ)句的作用是用于結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。當(dāng)外層循環(huán)for(i=0;i<2;i+)滿足條件的情況下執(zhí)行循環(huán)體,循環(huán)體中包含了嵌套的內(nèi)層循環(huán)for(j=0;j<=3,j+),在內(nèi)層循環(huán)中,當(dāng)if條件語(yǔ)句不成立時(shí)執(zhí)行continue語(yǔ)句,其作用是跳過(guò)"x+;",繼續(xù)執(zhí)行內(nèi)層循環(huán)的for語(yǔ)句,直到內(nèi)層循環(huán)條件不滿足,則執(zhí)行跳出內(nèi)層循環(huán),執(zhí)行外層循環(huán)的"x
23、+;"語(yǔ)句,然后再對(duì)i進(jìn)行判斷,直到外層循環(huán)條件不滿足,跳出外層循環(huán),執(zhí)行輸出語(yǔ)句,結(jié)果為8。 故本題答案為B。18、有以下程序int fun1(double a)return a*=a;int fun2(double x,double y) double a=0,b=0; a=fun1(x);b=fun1(y); return(int)(a+b);main()double w;w=fun2(1.1,2.0);程序執(zhí)行后變量w中的值是_。 A:5.21 B:5 C:5.0 D:0.0答案:C評(píng)析: 本題考查的是數(shù)值類型的定義與強(qiáng)制轉(zhuǎn)換。 本題在進(jìn)行調(diào)用函數(shù)fun2()時(shí),又對(duì)函數(shù)fu
24、n1()進(jìn)行了調(diào)用,由于函數(shù)fun1()定義為整型,所以第一次調(diào)用fun1()時(shí)返回的值為1,然后再將1賦值給a,此時(shí)由于a為double型,則系統(tǒng)自動(dòng)類型轉(zhuǎn)換,將1轉(zhuǎn)換成了1.000000賦值給了變量a,以此類推,得b的值為4.000000,然后通過(guò)"return(int)(a+b);"將a+b的值強(qiáng)制轉(zhuǎn)換為int型5返回給主函數(shù),此時(shí)又由w的類型為double,所以返回的整型值5又被轉(zhuǎn)換為double型。故輸出結(jié)果為5.0。 故本題答案為C。19、有以下程序main() int i,t3=9,8,7,6,5,4,3,2,1; for(i=0;i<3;i+) pri
25、ntf("%d ",t2-ii);程序執(zhí)行后的輸出結(jié)果是_。 A:7 5 3 B:3 5 7 C:3 6 9 D:7 5 1答案:B評(píng)析: 本題考查的是二維數(shù)組的應(yīng)用。 將初始值放在一對(duì)大括號(hào)內(nèi),按數(shù)組元素排列的順序?qū)Ω髟刭x值,二維數(shù)組中行下標(biāo)可以省略,但列下標(biāo)必須要指定,由此題可以看出數(shù)組t是一個(gè)三行三列的二維數(shù)組,執(zhí)行for循環(huán)語(yǔ)句t2-ii分別為t20,t11,t02,得出輸出結(jié)果為3 5 7。 故本題答案為B。20、有以下程序fun(char p10) int n=0,i; for(i=0;i<7;i+) if(pi0= 'T')n+; re
26、turn n;main() char str10= "Mon","Tue","Wed","Thu","Fri","Sat","Sun" printf("%dn",fun(str);程序執(zhí)行后的輸出結(jié)果是_。 A:1 B:2 C:3 D:0答案:B評(píng)析: 本題考查的是數(shù)組名作為函數(shù)參數(shù)。 當(dāng)數(shù)組名作為函數(shù)參數(shù)時(shí),是將實(shí)參數(shù)組的起始地址傳送給形參數(shù)組,作為形參數(shù)組的首地址,當(dāng)形參發(fā)生變化主函數(shù)中的實(shí)參數(shù)組也發(fā)生變化。調(diào)用fun()函數(shù)執(zhí)行f
27、or循環(huán)語(yǔ)句,n=2,傳遞給實(shí)參其輸出值相應(yīng)的也為2。 故本題答案為B。21、有以下程序void fun1(char *p) char *q; q=p; while(*q!= '0') (*q)+;q+;main() char a="Program",*p; p=&a3;fun1(p); printf("%sn",a);程序執(zhí)行后的輸出結(jié)果是_。 A:Prohsbn B:Prphsbn C:Progsbn D:Program答案:A評(píng)析: 本題考查的是指向數(shù)組的指針作為函數(shù)的參數(shù)及指針的運(yùn)算。 如果形參數(shù)組中的元素發(fā)生變化,實(shí)參也
28、將發(fā)生相應(yīng)變化。指針p指向數(shù)組的第三位地址(即字符"g"的地址),q=p也就相當(dāng)于指針q指向數(shù)組的第三位地址。表達(dá)式(*q)+,首先根據(jù)()的優(yōu)先級(jí)得到a3的值"g",再進(jìn)行加1運(yùn)算,所以g也就變成了h;表達(dá)式q+是將地址加1,也就是指向下一個(gè)地址a4。然后再執(zhí)行while()語(yǔ)句,直到遇到'0'結(jié)束循環(huán),返回形參。 故本題答案為A。22、有以下程序void swap(char *x,char *y) char t; t=*x;*x=*y;*y=t;main() char s1="abc",s2="123&q
29、uot; swap(s1,s2); printf("%s,%sn",s1,s2);程序執(zhí)行后的輸出結(jié)果是_。 A:123,abc B:abc,123 C:1bc,a23 D:321,cba答案:C評(píng)析: 本題考查的是指針變量值的交換。 C語(yǔ)言中,字符串常量在內(nèi)存中是以字符數(shù)組的形式進(jìn)行存放的,因此字符指針x和y指向的是各字符串的首地址,也就是字符串第一個(gè)字符的地址,則*x與*y交換的是字符串的第一個(gè)字符,即字符"a"與"1"的交換,而字符串中其它字符保持不變。 故本題答案為C。23、有以下程序int fun(int n) if(n=1
30、) return 1; else return(n+fun(n-1);main() int x; scanf("%d",&x);x=fun(x);printf("%dn",x);執(zhí)行程序時(shí),給變量x輸入10,程序的輸出結(jié)果是_。 A:55 B:54 C:65 D:45答案:A評(píng)析: 本題考查的是函數(shù)的遞歸調(diào)用。 在調(diào)用一個(gè)函數(shù)的過(guò)程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身。函數(shù)調(diào)用中因?yàn)閷?shí)參x=10不符合條件語(yǔ)句n=1,所以執(zhí)行else語(yǔ)句,調(diào)用fun函數(shù)。fun函數(shù)共被調(diào)用8次,即fun(9)、fun(8)、fun(7)、fun(6)、fun(5)、
31、fun(4) 、fun(3) 、fun(2),n=10+9+8+7+6+5+4+3+2+1=55, 所以x=55。 故本題答案為A。24、有以下程序main() union char ch2; int d; s; s.d=0x4321; printf("%x,%xn",s.ch0,s.ch1);在16位編譯系統(tǒng)上,程序執(zhí)行后的輸出結(jié)果是_。 A:21,43 B:43,21 C:43,00 D:21,00答案:A評(píng)析: 本題考查的是共用體。 int類型變量和字符數(shù)組ch共用兩個(gè)字節(jié)的相同的存儲(chǔ)單元,通常ch0位于低字節(jié),ch1位于高字節(jié),所以s.ch0=21,s.ch1=43
32、。 故本題答案為A。25、有以下程序main() char p5="3697","2548" int i,j; long num=0; for(i=0;i<2;i+) j=0; while(pij!= '0') if(pij- '0')%2) num=10*num+pij- '0' j+=2; printf("%dn",num);程序執(zhí)行后的輸出結(jié)果上_。 A:35 B:37 C:39 D:3975答案:C評(píng)析: 本題考查的是數(shù)組。 題目中定義的數(shù)組"p4"相當(dāng)
33、于一個(gè)兩行四列的數(shù)組。執(zhí)行for()語(yǔ)句i=0,j=0,pij=p00=3,滿足while循環(huán)條件,執(zhí)行循環(huán)體中的if語(yǔ)句得num=3,j=2,此時(shí)pij=p02=9,滿足循環(huán)條件,執(zhí)行while循環(huán)體得num=39,j=4,判斷while條件且不符合并退出while循環(huán);再次執(zhí)行for()語(yǔ)句i=1,j=0,pij=p10=2,滿足while條件,執(zhí)行循環(huán)體中的if語(yǔ)句,但不符合if條件,所以num不進(jìn)行運(yùn)算, j進(jìn)行加2運(yùn)算j=2,此時(shí)pij=p12=4,if條件還是為假,num不進(jìn)行運(yùn)算,j進(jìn)行加2運(yùn)算j=4,再執(zhí)行while語(yǔ)句,條件不符合退出循環(huán)。所以結(jié)果為39。 故本題答案為C。2
34、6、執(zhí)行以下程序后,test.txt文件的內(nèi)容是(若文件能正常打開(kāi))_。#include <stdio.h>main() FILE *fp; char *s1="Fortran",*s2="Basic" if(fp=fopen("test.txt","wb")=NULL) printf("Can't open test.txt filen"); exit(1); fwrite(s1,7,1,fp); /*把從地址s1開(kāi)始的7個(gè)字符寫(xiě)到fp所指文件中*/ fseek(fp, 0
35、L,SEEK_SET); /*文件位置指針移到文件開(kāi)頭*/ fwrite(s2,5,1,fp); fclose(fp); A:Basican B:BasicFortran C:Basic D:FortranBasic答案:A評(píng)析: 本題考查的是文件的讀寫(xiě)。 定義一個(gè)FILE類型結(jié)構(gòu)體的指針fp,以"只寫(xiě)"方式打開(kāi)一個(gè)test.txt文件,并向文件輸入指針變量s1指向的7個(gè)字符,則文件內(nèi)的內(nèi)容為"Fortran",執(zhí)行fseek函數(shù)文件位置指針移到文件的開(kāi)頭,再次向文件輸入指針變量s2指向的5個(gè)字符,雖然此時(shí)的文件前5個(gè)字符字符已被"Forta&
36、quot;所占用,但當(dāng)向文件輸入"Basic"這五個(gè)字符時(shí),系統(tǒng)會(huì)覆蓋原有的內(nèi)容"Forta",所以最后test.txt里的內(nèi)容為:Basican。 故本題答案為A。27、以下敘述中錯(cuò)誤的是_。 A:可以通過(guò)typedef增加新的類型 B:可以用typedef將已存在的類型用新的名字來(lái)代表 C:用typedef定義新的類型名后,原有類型名仍有效 D:用typedef可以為各種類型起別名,但不能為變量起別名答案:A評(píng)析: 本題考查的是C語(yǔ)言程序的基本組成。 在C語(yǔ)言中,注釋是用于協(xié)助讀者更好地理解程序,它不會(huì)被系統(tǒng)轉(zhuǎn)換成二進(jìn)制,所以非執(zhí)行語(yǔ)句是不會(huì)被轉(zhuǎn)換成
37、二進(jìn)制的機(jī)器指令。 故本題答案為D。28、設(shè)有以下定義和語(yǔ)句char str20= "Program",*p;p=str;則以下敘述中正確的是_。 A:*P與str0中的值相等 B:str與p的類型完全相同 C:str數(shù)組長(zhǎng)度和p所指向的字符串長(zhǎng)度相等 D:數(shù)組str中存放的內(nèi)容和指針變量p中存放的內(nèi)容相同答案:A評(píng)析: 本題考查的是指針變量對(duì)數(shù)組的引用。 選項(xiàng)A正確,原因是語(yǔ)句p=str表示指針變量p指向數(shù)組str20的首地址也就是str0。所以*p與str0中的值相等。 29、以下敘述中正確的是_。 A:預(yù)處理命令行必須位于C源程序的起始位置 B:在C語(yǔ)言中,預(yù)處理命令
38、行都以"#"開(kāi)頭 C:每個(gè)C程序必須在開(kāi)頭包含預(yù)處理命令行:#include<stdio.h> D:C語(yǔ)言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能答案:B評(píng)析: 本題考查的是預(yù)處理命令。 選項(xiàng)B正確,原因是這部分語(yǔ)句與C程序其他部分的語(yǔ)句是有區(qū)別的,所以在每個(gè)預(yù)處理語(yǔ)句之前都有一個(gè)"#"符號(hào)以示區(qū)別。C提供三種預(yù)處理語(yǔ)句:(1)宏替換,(2)文件包含,(3)條件編譯。如果一個(gè)文件中要引用另外一個(gè)文件時(shí)才需要在開(kāi)頭包含預(yù)處理命令行:#include<stdio.h>。 故本題答案為B。30、下列敘述錯(cuò)誤的是_。 A:一個(gè)C語(yǔ)言程序只能
39、實(shí)現(xiàn)一種算法 B:C程序可以由多個(gè)程序文件組成 C:C程序可以由一個(gè)或多個(gè)函數(shù)組成 D:一個(gè)C函數(shù)可以單獨(dú)作為一個(gè)C程序文件存在答案:A評(píng)析: 本題考查的是C程序的構(gòu)成。 一個(gè)C語(yǔ)言程序可以實(shí)現(xiàn)多種算法。一個(gè)C程序可以由一個(gè)或多個(gè)源程序文件組成,一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)組成,構(gòu)成C語(yǔ)言程序的基本單位是函數(shù),函數(shù)也是C程序中模塊化程序設(shè)計(jì)的基礎(chǔ),C函數(shù)可分為標(biāo)準(zhǔn)庫(kù)函數(shù)和用戶定義函數(shù)兩類。 故本題答案為A。31、下列敘述中正確的是_。 A:每一個(gè)C程序文件中都必須要有一個(gè)main()函數(shù) B:在C程序中main()函數(shù)的位置是固定的 C:C程序中所有函數(shù)之間都可以相互調(diào)用,與函數(shù)所在位置無(wú)關(guān)
40、 D:在C程序的函數(shù)中不能定義另一個(gè)函數(shù)答案:D評(píng)析: 本題考查的是函數(shù)的定義方法。 每一個(gè)C程序由多個(gè)C程序文件組成,而每個(gè)C程序都必須有一個(gè)main()函數(shù),故每一個(gè)C程序文件中都必須有一個(gè)main()函數(shù)的說(shuō)法是錯(cuò)誤的。在C程序中所有函數(shù)都是平行的,即在定義函數(shù)時(shí)是相互獨(dú)立的,一個(gè)函數(shù)并不能從屬于另一個(gè)函數(shù),即函數(shù)不能嵌套定義,函數(shù)間可以相互調(diào)用,但不能調(diào)用main()函數(shù),main()函數(shù)的位置也不是固定的。 故本題答案為D。32、下列定義變量的語(yǔ)句中錯(cuò)誤的是_。 A:int _int; B:double int_; C:char For; D:float US$;答案:D評(píng)析: 本題
41、考查的是C數(shù)據(jù)類型及其定義。 C語(yǔ)言中用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列稱為標(biāo)識(shí)符,C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。選項(xiàng)D中含有"$",故不符合標(biāo)識(shí)符的定義。 故本題答案為D。33、以下關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的敘述中正確的是_。 A:只能是整數(shù)0或1 B:只能是整數(shù)0或非0整數(shù) C:可以是結(jié)構(gòu)體類型的數(shù)據(jù) D:可以是任意合法的表達(dá)式答案:D評(píng)析: 本題考查的是C語(yǔ)言運(yùn)算符的基本應(yīng)用。 邏輯運(yùn)算符兩側(cè)的運(yùn)算對(duì)象不但可以是0和1,也可以是任意基本類型或指針類型的數(shù)據(jù),還可以是任意合法
42、表達(dá)式。 故本題答案為D。 34、有以下程序 main() int x, y, z; x=y=1; z=x+,y+,+y; printf("%d,%d,%dn",x, y, z); 程序運(yùn)行后的輸出結(jié)果是_。 A:2,3,3 B:2,3,2 C:2,3,1 D:2,2,1答案:C評(píng)析: 本題考查的是C語(yǔ)言的運(yùn)算規(guī)則。 x+:表示在使用x之后,使x的值加1;y+:表示在使用y之后,使y的值加1;+y:表示在使用y之前,使y的值加1。此題中執(zhí)行z=x+,是將x的值先賦給z,所以z=1,接下來(lái)x自行加1,其結(jié)果為2;執(zhí)行y+后,y=2,執(zhí)行+y后,y=3。 故本題答案為C。35、
43、在嵌套使用if語(yǔ)句時(shí),C語(yǔ)言規(guī)定else總是_。 A:和之前與其具有相同縮進(jìn)位置的if配對(duì) B:和之前與其最近的if配對(duì) C:和之前與其最近的且不帶else的if配對(duì) D:和之前的第一個(gè)if配對(duì)答案:C評(píng)析: 本題考查的是IF語(yǔ)句的使用規(guī)則。 在嵌套使用if語(yǔ)句時(shí),C語(yǔ)言規(guī)定else總是和之前與其最近的且不帶else的if配對(duì)。 故本題答案為C。 36、有以下程序main(int argc,char *argv)int n=0,i; for(i=1;i<argc;i+) n=n*10+*argvi-'0' printf("%dn",n);編譯連接后生成
44、可執(zhí)行文件tt.exe。若運(yùn)行時(shí)輸入以下命令行tt 12 345 678程序運(yùn)行后的輸出結(jié)果是_。 A:12 B:12345 C:12345678 D:136答案:D評(píng)析:本題考查的是帶參數(shù)的main()函數(shù)。main()函數(shù)可以帶參數(shù),并且參數(shù)只能有兩個(gè),第1個(gè)參數(shù)(argc)類型為整型,用來(lái)記下命令行的參數(shù)個(gè)數(shù),第2個(gè)參數(shù)(argv)為一個(gè)字符型指針數(shù)組,其各個(gè)元素用來(lái)記下命令行各參數(shù)字符串的首地址。題目中argc的值為4,循環(huán)中依次求出argv1、argv2、argv3指向的字符串("12"、"345"、"678")首字符。其中
45、*argvi用于指向求出的字符串的首地址的值,即分別為:1、3、6;n=n*10+*argvi-'0'語(yǔ)句用于連接各字符串首字符,所以結(jié)果為136。 故本題答案選D。37、有以下程序int a=4;int f(int n) int t=0; static int a=5; if(n%2) int a=6; t+=a+; else int a=7; t+=a+; return t+a+;main() int s=a,i=0; for(;i<2;i+) s+=f(i); printf("%dn",s);程序運(yùn)行后的輸出結(jié)果是_。 A:24 B:28 C:3
46、2 D:36答案:B評(píng)析:本題考查的是函數(shù)調(diào)用和變量的作用域。在主函數(shù)main()中定義了兩個(gè)變量s和i,同時(shí)給s賦初值a=4,i賦初值0。當(dāng)i=0時(shí),執(zhí)行"s+=f(i);"語(yǔ)句,調(diào)用f()函數(shù)并將i的初值0傳遞給形參n。首先執(zhí)行if語(yǔ)句中的條件:n%3,條件為假,執(zhí)行else下的語(yǔ)句,a=7,t=7+0=7,使用return返回t,t=7+(a+)=7+5=12,此時(shí)a運(yùn)算完后自行加1為6;返回主函數(shù)中,s=4+12=16。當(dāng)i=1時(shí),執(zhí)行"s+=f(i);"語(yǔ)句,調(diào)用f()函數(shù)并將i的初值1傳遞給形參n。首先執(zhí)行if語(yǔ)句中的條件: n%3,條件為真
47、,執(zhí)行if下的語(yǔ)句,t=0,a=6,t=0+6=6,使用return返回t,t=6+6=12,返回主函數(shù)中,s=16+12=28。最后的輸出結(jié)果為28。 故本題答案選B。38、有一個(gè)名為init.txt的文件,內(nèi)容如下:#define HDY(A,B) A/B#define PRINT(Y) printf("y=%dn",Y)有以下程序#include "init.txt"main() int a=1,b=2,c=3,d=4,k; k=HDY(a+c,b+d); PRINT(k);下面針對(duì)該程序的敘述正確的是_。 A:編譯出錯(cuò) B:運(yùn)行出錯(cuò) C:運(yùn)行結(jié)果
48、為 y=0 D:運(yùn)行結(jié)果為 y=6答案:D評(píng)析:本題考查的是帶參數(shù)的宏定義。宏替換后,表達(dá)式k=HDY(a+c,b+d)即變?yōu)閗=a+c/b+d=1+3/2+4=6。故本題答案選D。39、有以下程序main() char ch="uvwxyz",*pc; pc=ch; printf("%cn",*(pc+5);程序運(yùn)行后的輸出結(jié)果是_。 A:z B:0 C:元素ch5的地址 D:字符y的地址答案:A評(píng)析:本題考查的是指向數(shù)組的指針。本題中定義了一個(gè)字符串?dāng)?shù)組和指針,并將指針pc指向該數(shù)組的首地址,執(zhí)行輸出語(yǔ)句"printf("%cn&
49、quot;,*(pc+5);"。語(yǔ)句中的*(pc+5)指的就是pc5的值,所以最后輸出的結(jié)果為z。 故本題答案選A。40、有以下程序struct Sint n; int a20;void f(struct S *p) int i,j,t; for(i=0;i<p->n-1;i+) for(j=i+1;j<p->n;j+) if(p->ai>p->aj) t=p->ai; p->ai=p->aj; p->aj=t;main() int i; struct S s=10,2,3,1,6,8,7,5,4,10,9; f(&a
50、mp;s); for(i=0;i<s.n;i+)printf("%d,",s.ai);程序運(yùn)行后的輸出結(jié)果是_。 A:1,2,3,4,5,6,7,8,9,10, B:10,9,8,7,6,5,4,3,2,1, C:2,3,1,6,8,7,5,4,10,9, D:10,9,8,7,6,1,2,3,4,5,答案:A評(píng)析:本題考查的是結(jié)構(gòu)體成員的引用。在主函數(shù)main()中定義了一個(gè)整型變量i和一個(gè)結(jié)構(gòu)體變量s。f()函數(shù)中,定義了一個(gè)結(jié)構(gòu)體類型的指針p,外層循環(huán)變量i表示數(shù)組的第i個(gè)元素,內(nèi)層循環(huán)變量j表示數(shù)組的第i+1個(gè)元素,調(diào)用f()函數(shù),通過(guò)指針變量p來(lái)引用結(jié)構(gòu)體成
51、員。執(zhí)行if語(yǔ)句,當(dāng)p->ai>p->aj時(shí)進(jìn)行互換,其作用就是從小到大進(jìn)行排序,最后將排序后的元素輸出:1,2,3,4,5,6,7,8,9,10,。 故本題答案選A。41、有以下程序struct Sint n; int a20;void f(int *a, int n) int i; for(i=0;i<n-1;i+) ai+=i;main() int i; struct S s=10,2,3,1,6,8,7,5,4,10,9; f(s.a,s.n); for(i=0;i<s.n;i+) printf("%d,",s.ai);程序運(yùn)行后的輸出
52、結(jié)果是_。 A:2,4,3,9,12,12,11,11,18,9, B:3,4,2,7,9,8,6,5,11,10, C:2,3,1,6,8,7,5,4,10,9, D:1,2,3,6,8,7,5,4,10,9,答案:A評(píng)析:本題考查的是結(jié)構(gòu)體成員的引用。在主函數(shù)main()中定義了一個(gè)整型變量i和一個(gè)結(jié)構(gòu)體變量s。f()函數(shù)中,通過(guò)指針a來(lái)引用數(shù)組中的元素;通過(guò)for循環(huán)語(yǔ)句將數(shù)組中除最后一個(gè)元素外的其它元素(由條件i<n-1決定的)分別加上由0開(kāi)始的遞增數(shù)據(jù)(即0、1、28),所以最后的輸出結(jié)果為2,4,3,9,12,12,11,11,18,9,。 故本題答案選A。42、有以下程序段
53、typedef struct nodeint data; struct node *next; *NODE;NODE p; 以下敘述中正確的是_。 A:p是指向struct node結(jié)構(gòu)變量的指針的指針 B:NODE p;語(yǔ)句出錯(cuò) C:p是指向struct node結(jié)構(gòu)變量的指針 D:p是struct node結(jié)構(gòu)變量答案:C評(píng)析:本題考查的是對(duì)用戶自定義類型的理解。本題中定義了一個(gè)指針類型的"用戶類型名" NODE,通過(guò)"用戶類型名"可以定義該類型的結(jié)構(gòu)體變量,所以選項(xiàng)C的敘述是正確的。 故本題答案選C。43、有以下程序main() unsigned
54、char a=2,b=4,c=5,d; d=a|b; d&=c; printf("%dn",d);程序運(yùn)行后的輸出結(jié)果是_。 A:3 B:4 C:5 D:6答案:B評(píng)析: 本題考查的是邏輯運(yùn)算。 本題中主要是進(jìn)行位的邏輯運(yùn)算。將a的值轉(zhuǎn)換為二進(jìn)制為:0000 0010,b的值轉(zhuǎn)換為二進(jìn)制為:0000 0100,將a、b進(jìn)行按位或運(yùn)算(參加計(jì)算的兩個(gè)位只要有一個(gè)為1,那么運(yùn)算結(jié)果為1),因此此時(shí)d的二進(jìn)制為:0000 0110,c的值轉(zhuǎn)換為二進(jìn)制為:0000 0101,接下來(lái)將d和c進(jìn)行按位與運(yùn)算(參加計(jì)算的兩個(gè)位都為1,則結(jié)果為1,否則為0),結(jié)果為:0000 01
55、00,轉(zhuǎn)換成十進(jìn)制數(shù)結(jié)果為4。 故本題答案選B。44、有以下程序_。#include <stdio.h>main() FILE *fp; int k,n,a6=1,2,3,4,5,6; fp=fopen("d2.dat","w"); fprintf(fp,"%d%d%dn",a0,a1,a2); fprintf(fp,"%d%d%dn",a3,a4,a5); fclose(fp); fp=fopen("d2.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d %dn",k,n); close(fp);程序運(yùn)行后的輸出結(jié)果是_。 A:1 2 B:1 4 C:123 4 D:123 456答案:D評(píng)析:本題考查的是文件的綜合應(yīng)用。本題首先以創(chuàng)建方式打開(kāi)文件"d2.d
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年租賃可行性報(bào)告(1)簡(jiǎn)版
- 金屬有機(jī)框架材料 (MOFs) 在氣體吸附與分離的應(yīng)用與性能優(yōu)化報(bào)告
- 中國(guó)全身掃描行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 數(shù)據(jù)選擇器 實(shí)驗(yàn)報(bào)告
- 箱式燃?xì)庹{(diào)壓站投資項(xiàng)目立項(xiàng)報(bào)告
- 中國(guó)甘蔗纖維杯子行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 某某科技發(fā)展公司年產(chǎn)xxx棱鏡、透鏡項(xiàng)目立項(xiàng)報(bào)告
- 2025年安全信息報(bào)告制度范文(二)
- 江江電氣有限公司介紹企業(yè)發(fā)展分析報(bào)告模板
- 中國(guó)個(gè)人護(hù)理玻璃包裝行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 第23課《“蛟龍”探?!氛n件-2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)第六單元
- GB/T 13460-2025再生橡膠通用規(guī)范
- 2025年中考數(shù)學(xué)必考基礎(chǔ)知識(shí)點(diǎn)中考總復(fù)習(xí)總結(jié)歸納
- 2025年北京市水務(wù)局所屬事業(yè)單位招聘工作人員101人筆試高頻重點(diǎn)提升(共500題)附帶答案詳解
- 【MOOC】新媒體文化十二講-暨南大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 送達(dá)地址確認(rèn)書(shū)(法院最新版)
- 土地整治項(xiàng)目管理PPT
- 醫(yī)藥代表培訓(xùn)-醫(yī)院微觀市場(chǎng)PPT課件.ppt
- 林業(yè)項(xiàng)目竣工資料(模板)
- 會(huì)計(jì)工作證明模板
- 中國(guó)核電標(biāo)準(zhǔn)化組織方式及工作方案
評(píng)論
0/150
提交評(píng)論