




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
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");程序運行后的輸出結(jié)果是_。A:1 2 6 8B:8 6 2 1C:8 1 6 2D:8 6 1 2答案:C評析: 本題考的是函數(shù)參數(shù)的傳遞。 當用數(shù)組名作函數(shù)參數(shù)時,數(shù)組名代表數(shù)組的首地址。f
2、un(x,0,3);是將數(shù)組名x作為實參,把數(shù)組x的首地址傳送給形參(指針a),這樣數(shù)組x與形參指針a共占同一段內(nèi)存單元,所以在調(diào)用函數(shù)期間,如果改變了形參數(shù)組x的值,也就改變了實參指針a的值。 另外此題還考了個函數(shù)自身的調(diào)用,下面是調(diào)用fun()函數(shù)的運行過程: a=x,i=0,j=3,判斷i<j,交換ai,aj,此時a0到a3里面的數(shù)分別為8,6,1,2,也即是 x0到x3中的數(shù)值,因為它們共用存儲單元;i+; j-后繼續(xù)調(diào)用fun(),此時i,j分別為1,2,交換a1,a2的值后a所指向的存儲單元中的數(shù)據(jù)為8,1,6,2;繼續(xù)i+; j-后判斷i<j不成立,返回主函數(shù),輸出x
3、i即指針a所指向的數(shù)據(jù)8,1,6,2。 故本題答案為C。2、有以下說明和定義語句struct student int age; char num8;struct student stu3=20,"200401",21,"200402",19,"200403"struct student *p=stu;以下選項中引用結(jié)構體變量成員的表達式錯誤的是_。A:(p+)->numB:p->numC:(*p).numD:stu3.age答案:D評析: 本題考的是結(jié)構體變量的引用。 引用形式有以下三種:結(jié)構體變量. 成員名;(*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,則運行以上程序后文件f1.txt中的內(nèi)容為_。A:goodabcB:abcdC:abcD:abcgood答案:C評析: 本題考的是文件類型指針。 fp1=fopen("f1.txt","w&
5、quot;)表示打開名為f1.txt 的文件,使用文件方式為向該文件寫數(shù)據(jù),如果原來不存在該文件,則在打開時新建一個以指定的名字命名的文件;如果原來已存在一個以該文件命名的文件,則在打開時將該文件刪去,然后重新建立一個新文件,所以本題中f1.txt中原有內(nèi)容good被刪去了,fopen函數(shù)帶回指向fp1文件的指針并賦給fp1。fprintf(fp1,"abc")的作用是將字符串a(chǎn)bc輸出到fp1指向的文件上。 故本題答案為C。4、以下不合法的用戶標識符是_。A:j2_KEYB:DoubleC:4dD:_8_答案:C評析: 本題考查的是標識符。 C語言規(guī)定標識符只能由字母、數(shù)
6、字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。大寫字母和小寫字母被認為是兩個不同的字符,用戶在定義標識符時應做到"見名知意",且不允許使用關鍵字作標識符。 故本題答案為C。5、以下不合法的數(shù)值常量是_。A:011B:le1C:8.0E0.5D:0xabcd答案:C評析: 本題考查的是數(shù)值常量的定義。 數(shù)值常量區(qū)分為不同的類型,如12、0、-3為整型常量,4.6、-1.23為實型常量,'a','A'為字符常量。實數(shù)常量有兩種表示形式:十進制小數(shù)形式和指數(shù)形式。用指數(shù)形式表示必須注意字母e(或E)之前必須有數(shù)字,且e(或E)后面的指數(shù)
7、必須為整數(shù)。如:e3、7e3.5、8.0E0.5都是不合法的。 故本題答案為C。6、以下能正確定義字符串的語句是_。A:char str='064'B:char str="x43"C:char str=''D:char str="0"答案:D評析: 本題考查的是字符串的定義。 C語言中,字符串是用一對雙引號括起來的字符序列,并用字符型數(shù)組來存放,故選項A、C不屬于字符串, 選項B定義的是一個字符變量str,卻用來存放字符串,顯然也不正確,所以選項D正確。 故本題答案為D。7、若要求從鍵盤讀入含有空格字符的字符串,應該使用函
8、數(shù)_。A:getc()B:gets()C:getchar()D:scanf()答案:B評析: 本題考查的是字符串的讀寫。 函數(shù)getchar( )的作用是從終端(或系統(tǒng)隱含指定的輸入設備)輸入一個字符,且只能接受一個字符(回車符也算是一個字符),所以getchar()不能用來讀入字符串。scanf()函數(shù)要求按一定的格式來輸入,若同時輸入多個字符串,則以空格或回車分割,所以空格不能被識別為一個字符,也就無法讀入空格字符。函數(shù)gets()的作用是從終端輸入一個字符串(包括空格)到字符數(shù)組,直到遇到換行符為止,所以可以用來鍵盤讀入空格字符。 故本題答案為B。8、以下四個程序中,完全正確的是_。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評析: 本題考查的是C語言中注釋的格式。 C語言中注釋用"/*"和"*/"括起來,它可以出現(xiàn)在程序中任何合適的地方。選項A 中"main();"是一個函數(shù)聲明語句,下面的大括號及其內(nèi)容作為一個語句塊,應放在程序的大括號中,故選取項A錯誤;選項B中的注釋語句不正確,因為程序在編譯時認別到兩次"/*"作為注釋的開始,但未識別到"*/"作為注釋的結(jié)束,故選項B錯誤;選項D的"include"前缺少&qu
11、ot;#",故選項D錯誤。 故本題答案為C。9、若各選項中所有變量已正確定義,函數(shù)fun中通過return語句返回一個函數(shù)值,以下選項中錯誤的程序是_。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評析: 本題考查的是函數(shù)的調(diào)用。 C語言程序是由一個主函數(shù)和若干個其他函數(shù)組成的,主函數(shù)的函數(shù)名為:main(),main()函數(shù)在程序中的位置是任意的。C語言程序是從main()函數(shù)開始執(zhí)行,當程序中定義了多個函數(shù)時,通常情況下是先定義后調(diào)用,若被調(diào)函數(shù)定義在主調(diào)函數(shù)之后,則必須先聲明后調(diào)用。在選項A中,先執(zhí)行main()函數(shù),此時對fun()函數(shù)進行調(diào)用,由于fun函數(shù)在此調(diào)用之前無定義也無聲明,故無法正常識別調(diào)用,所以選項A的程序錯誤。 故本題答案為A。10、在以下給出的表達式中,與while(E)中的(E)不等價的表達式是_。 A:(!E=0) B:(E>0|E<
13、;0) C:(E=0)D:(E!=0)答案:C評析: 本題考查的是while條件表達式的判斷。 while(表達式)語句用來實現(xiàn)"當型"循環(huán)結(jié)構,當表達式為非0值時,執(zhí)行while語句中的內(nèi)嵌語句。選項A非零即為1,選項B與選項D的結(jié)果也為1,只有選項C為0。 故本題答案為C。11、已定義以下函數(shù)int fun(int *p)return *p;fun函數(shù)返回值是_。A:不確定的值B:一個整數(shù)C:形參p中存放的值D:形參p的地址值答案:B評析: 本題考查的是函數(shù)的返回值。 函數(shù)值的類型應當是在定義函數(shù)時指定的。在定義函數(shù)時對函數(shù)值說明的類型一般和return語句中的表達式類
14、型一致,即函數(shù)類型決定返回值的類型。此題中定義函數(shù)類型為int型,故函數(shù)返回值也為整型。 故本題答案為B。12、若有說明語句:double *p,a;則能通過scanf語句正確給輸入項讀入數(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評析: 本題考查的是數(shù)據(jù)輸入。 p=&a的意思是指將a的地址賦給指針變量p。*
15、p=&a是錯誤的書寫方式,其正確的表達形式為"int *p=&a;",它等效于:int *p; p=&a;, scanf()語句的格式是"scanf(格式控制,地址列表)", 在選項D中,"p"本身就代表著一個地址。 故本題答案為D。13、現(xiàn)有以下結(jié)構體說明和變量定義,如圖所示,指針p、q、r分別指向一個鏈表中連續(xù)的三個結(jié)點。struct node char data; struct node *next;*p,*q,*r;現(xiàn)要將q和r 所指結(jié)點交換前后位置,同時要保持鏈表的連續(xù),以下不能完成此操作的語句是_。
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評析: 本題考查的是鏈表。 選項D中首先將q賦給r->next,也就是將結(jié)點q的地址存放在結(jié)點r的指針域中;接著將r賦給p->next,也就是將結(jié)點r的地址存放在結(jié)點p的指針
17、域中,此時完成了q和r所指結(jié)點的交換。q->next=r->next的目的是想將q的指針域指向下一個結(jié)點的數(shù)據(jù)地址,但由于一開始執(zhí)行了r->next=q,即已將r的指針域中存放了q結(jié)點的地址,所以再做操作"q->next=r->next"就相當于將q指向了其本身,也就是和下一個結(jié)點斷開了,所以選項D操作錯誤。 故本題答案為D。14、有以下程序段struct stint x;int *y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c;以下選項中表達式的值為11的是_。 A:*pt->y
18、 B:pt->x C:+pt->x D:(pt+)->x答案:C評析: 本題考查的是結(jié)構體類型的指針。 題目中定義了一個st結(jié)構體類型,然后定義了st型的結(jié)構體指針變量*pt及結(jié)構體數(shù)組c,并對結(jié)構體數(shù)組進行了初始化,且將結(jié)構體指針變量pt指向了數(shù)組c,則pt->x的值為10,則+pt->x的值為11(注:"->"運算符的優(yōu)先級高于"+"),故選項C正確。 故本題答案為C。15、設有以下語句int a=1,b=2,c;c=a(b<<2);執(zhí)行后,c的值為_。 A:6 B:7 C:8 D:9答案:D評析: 本
19、題考查的是位運算。 有括號的先算括號內(nèi)的數(shù)據(jù),所以先對b進行左移運算:b換算成二進制0000 0010,左移后變?yōu)?000 1000,然后再與a進行異或運算(參與運算的兩個對應位相同,則為0,相異則為1)結(jié)果為0000 1001,換算成十進制數(shù)結(jié)果為9。對于左移運算也可直接用此規(guī)則:左移1位相當于該數(shù)乘以2,左移2位相當于該數(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);程序運行后,若從鍵盤輸入(從第1列開始)123<回車>45678<回車>則輸出結(jié)果是_。 A:1267 B:1256 C:1278 D:1245答案:D評析: 本題考查的是字符輸入輸出函數(shù)的應用。 getchar()函數(shù)只能接收一個字符,即使輸入多個字符后再按回車還是只能將第一個字符讀入。scanf()和printf()是按格式輸入輸出的函數(shù),當輸入123<回車>,scanf()分
21、別讀入字符"1"、"2"、"3"、"<回車>";接下來輸入45678<回車>,則getchar()讀入字符"4"賦值給c5,字符"5" 賦值給c6,所以輸出語句輸出結(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評析: 本題考查的是循環(huán)嵌套和continue語句的應用。 continue語句的作用是用于結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判定。當外層循環(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)中,當if條件語句不成立時執(zhí)行continue語句,其作用是跳過"x+;",繼續(xù)執(zhí)行內(nèi)層循環(huán)的for語句,直到內(nèi)層循環(huán)條件不滿足,則執(zhí)行跳出內(nèi)層循環(huán),執(zhí)行外層循環(huán)的"x
23、+;"語句,然后再對i進行判斷,直到外層循環(huán)條件不滿足,跳出外層循環(huán),執(zhí)行輸出語句,結(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評析: 本題考查的是數(shù)值類型的定義與強制轉(zhuǎn)換。 本題在進行調(diào)用函數(shù)fun2()時,又對函數(shù)fu
24、n1()進行了調(diào)用,由于函數(shù)fun1()定義為整型,所以第一次調(diào)用fun1()時返回的值為1,然后再將1賦值給a,此時由于a為double型,則系統(tǒng)自動類型轉(zhuǎn)換,將1轉(zhuǎn)換成了1.000000賦值給了變量a,以此類推,得b的值為4.000000,然后通過"return(int)(a+b);"將a+b的值強制轉(zhuǎn)換為int型5返回給主函數(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評析: 本題考查的是二維數(shù)組的應用。 將初始值放在一對大括號內(nèi),按數(shù)組元素排列的順序?qū)Ω髟刭x值,二維數(shù)組中行下標可以省略,但列下標必須要指定,由此題可以看出數(shù)組t是一個三行三列的二維數(shù)組,執(zhí)行for循環(huán)語句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評析: 本題考查的是數(shù)組名作為函數(shù)參數(shù)。 當數(shù)組名作為函數(shù)參數(shù)時,是將實參數(shù)組的起始地址傳送給形參數(shù)組,作為形參數(shù)組的首地址,當形參發(fā)生變化主函數(shù)中的實參數(shù)組也發(fā)生變化。調(diào)用fun()函數(shù)執(zhí)行f
27、or循環(huán)語句,n=2,傳遞給實參其輸出值相應的也為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評析: 本題考查的是指向數(shù)組的指針作為函數(shù)的參數(shù)及指針的運算。 如果形參數(shù)組中的元素發(fā)生變化,實參也
28、將發(fā)生相應變化。指針p指向數(shù)組的第三位地址(即字符"g"的地址),q=p也就相當于指針q指向數(shù)組的第三位地址。表達式(*q)+,首先根據(jù)()的優(yōu)先級得到a3的值"g",再進行加1運算,所以g也就變成了h;表達式q+是將地址加1,也就是指向下一個地址a4。然后再執(zhí)行while()語句,直到遇到'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評析: 本題考查的是指針變量值的交換。 C語言中,字符串常量在內(nèi)存中是以字符數(shù)組的形式進行存放的,因此字符指針x和y指向的是各字符串的首地址,也就是字符串第一個字符的地址,則*x與*y交換的是字符串的第一個字符,即字符"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í)行程序時,給變量x輸入10,程序的輸出結(jié)果是_。 A:55 B:54 C:65 D:45答案:A評析: 本題考查的是函數(shù)的遞歸調(diào)用。 在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身。函數(shù)調(diào)用中因為實參x=10不符合條件語句n=1,所以執(zhí)行else語句,調(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評析: 本題考查的是共用體。 int類型變量和字符數(shù)組ch共用兩個字節(jié)的相同的存儲單元,通常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評析: 本題考查的是數(shù)組。 題目中定義的數(shù)組"p4"相當
33、于一個兩行四列的數(shù)組。執(zhí)行for()語句i=0,j=0,pij=p00=3,滿足while循環(huán)條件,執(zhí)行循環(huán)體中的if語句得num=3,j=2,此時pij=p02=9,滿足循環(huán)條件,執(zhí)行while循環(huán)體得num=39,j=4,判斷while條件且不符合并退出while循環(huán);再次執(zhí)行for()語句i=1,j=0,pij=p10=2,滿足while條件,執(zhí)行循環(huán)體中的if語句,但不符合if條件,所以num不進行運算, j進行加2運算j=2,此時pij=p12=4,if條件還是為假,num不進行運算,j進行加2運算j=4,再執(zhí)行while語句,條件不符合退出循環(huán)。所以結(jié)果為39。 故本題答案為C。2
34、6、執(zhí)行以下程序后,test.txt文件的內(nè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開始的7個字符寫到fp所指文件中*/ fseek(fp, 0
35、L,SEEK_SET); /*文件位置指針移到文件開頭*/ fwrite(s2,5,1,fp); fclose(fp); A:Basican B:BasicFortran C:Basic D:FortranBasic答案:A評析: 本題考查的是文件的讀寫。 定義一個FILE類型結(jié)構體的指針fp,以"只寫"方式打開一個test.txt文件,并向文件輸入指針變量s1指向的7個字符,則文件內(nèi)的內(nèi)容為"Fortran",執(zhí)行fseek函數(shù)文件位置指針移到文件的開頭,再次向文件輸入指針變量s2指向的5個字符,雖然此時的文件前5個字符字符已被"Forta&
36、quot;所占用,但當向文件輸入"Basic"這五個字符時,系統(tǒng)會覆蓋原有的內(nèi)容"Forta",所以最后test.txt里的內(nèi)容為:Basican。 故本題答案為A。27、以下敘述中錯誤的是_。 A:可以通過typedef增加新的類型 B:可以用typedef將已存在的類型用新的名字來代表 C:用typedef定義新的類型名后,原有類型名仍有效 D:用typedef可以為各種類型起別名,但不能為變量起別名答案:A評析: 本題考查的是C語言程序的基本組成。 在C語言中,注釋是用于協(xié)助讀者更好地理解程序,它不會被系統(tǒng)轉(zhuǎn)換成二進制,所以非執(zhí)行語句是不會被轉(zhuǎn)換成
37、二進制的機器指令。 故本題答案為D。28、設有以下定義和語句char str20= "Program",*p;p=str;則以下敘述中正確的是_。 A:*P與str0中的值相等 B:str與p的類型完全相同 C:str數(shù)組長度和p所指向的字符串長度相等 D:數(shù)組str中存放的內(nèi)容和指針變量p中存放的內(nèi)容相同答案:A評析: 本題考查的是指針變量對數(shù)組的引用。 選項A正確,原因是語句p=str表示指針變量p指向數(shù)組str20的首地址也就是str0。所以*p與str0中的值相等。 29、以下敘述中正確的是_。 A:預處理命令行必須位于C源程序的起始位置 B:在C語言中,預處理命令
38、行都以"#"開頭 C:每個C程序必須在開頭包含預處理命令行:#include<stdio.h> D:C語言的預處理不能實現(xiàn)宏定義和條件編譯的功能答案:B評析: 本題考查的是預處理命令。 選項B正確,原因是這部分語句與C程序其他部分的語句是有區(qū)別的,所以在每個預處理語句之前都有一個"#"符號以示區(qū)別。C提供三種預處理語句:(1)宏替換,(2)文件包含,(3)條件編譯。如果一個文件中要引用另外一個文件時才需要在開頭包含預處理命令行:#include<stdio.h>。 故本題答案為B。30、下列敘述錯誤的是_。 A:一個C語言程序只能
39、實現(xiàn)一種算法 B:C程序可以由多個程序文件組成 C:C程序可以由一個或多個函數(shù)組成 D:一個C函數(shù)可以單獨作為一個C程序文件存在答案:A評析: 本題考查的是C程序的構成。 一個C語言程序可以實現(xiàn)多種算法。一個C程序可以由一個或多個源程序文件組成,一個源程序文件由一個或多個函數(shù)組成,構成C語言程序的基本單位是函數(shù),函數(shù)也是C程序中模塊化程序設計的基礎,C函數(shù)可分為標準庫函數(shù)和用戶定義函數(shù)兩類。 故本題答案為A。31、下列敘述中正確的是_。 A:每一個C程序文件中都必須要有一個main()函數(shù) B:在C程序中main()函數(shù)的位置是固定的 C:C程序中所有函數(shù)之間都可以相互調(diào)用,與函數(shù)所在位置無關
40、 D:在C程序的函數(shù)中不能定義另一個函數(shù)答案:D評析: 本題考查的是函數(shù)的定義方法。 每一個C程序由多個C程序文件組成,而每個C程序都必須有一個main()函數(shù),故每一個C程序文件中都必須有一個main()函數(shù)的說法是錯誤的。在C程序中所有函數(shù)都是平行的,即在定義函數(shù)時是相互獨立的,一個函數(shù)并不能從屬于另一個函數(shù),即函數(shù)不能嵌套定義,函數(shù)間可以相互調(diào)用,但不能調(diào)用main()函數(shù),main()函數(shù)的位置也不是固定的。 故本題答案為D。32、下列定義變量的語句中錯誤的是_。 A:int _int; B:double int_; C:char For; D:float US$;答案:D評析: 本題
41、考查的是C數(shù)據(jù)類型及其定義。 C語言中用來標識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列稱為標識符,C語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。選項D中含有"$",故不符合標識符的定義。 故本題答案為D。33、以下關于邏輯運算符兩側(cè)運算對象的敘述中正確的是_。 A:只能是整數(shù)0或1 B:只能是整數(shù)0或非0整數(shù) C:可以是結(jié)構體類型的數(shù)據(jù) D:可以是任意合法的表達式答案:D評析: 本題考查的是C語言運算符的基本應用。 邏輯運算符兩側(cè)的運算對象不但可以是0和1,也可以是任意基本類型或指針類型的數(shù)據(jù),還可以是任意合法
42、表達式。 故本題答案為D。 34、有以下程序 main() int x, y, z; x=y=1; z=x+,y+,+y; printf("%d,%d,%dn",x, y, z); 程序運行后的輸出結(jié)果是_。 A:2,3,3 B:2,3,2 C:2,3,1 D:2,2,1答案:C評析: 本題考查的是C語言的運算規(guī)則。 x+:表示在使用x之后,使x的值加1;y+:表示在使用y之后,使y的值加1;+y:表示在使用y之前,使y的值加1。此題中執(zhí)行z=x+,是將x的值先賦給z,所以z=1,接下來x自行加1,其結(jié)果為2;執(zhí)行y+后,y=2,執(zhí)行+y后,y=3。 故本題答案為C。35、
43、在嵌套使用if語句時,C語言規(guī)定else總是_。 A:和之前與其具有相同縮進位置的if配對 B:和之前與其最近的if配對 C:和之前與其最近的且不帶else的if配對 D:和之前的第一個if配對答案:C評析: 本題考查的是IF語句的使用規(guī)則。 在嵌套使用if語句時,C語言規(guī)定else總是和之前與其最近的且不帶else的if配對。 故本題答案為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。若運行時輸入以下命令行tt 12 345 678程序運行后的輸出結(jié)果是_。 A:12 B:12345 C:12345678 D:136答案:D評析:本題考查的是帶參數(shù)的main()函數(shù)。main()函數(shù)可以帶參數(shù),并且參數(shù)只能有兩個,第1個參數(shù)(argc)類型為整型,用來記下命令行的參數(shù)個數(shù),第2個參數(shù)(argv)為一個字符型指針數(shù)組,其各個元素用來記下命令行各參數(shù)字符串的首地址。題目中argc的值為4,循環(huán)中依次求出argv1、argv2、argv3指向的字符串("12"、"345"、"678")首字符。其中
45、*argvi用于指向求出的字符串的首地址的值,即分別為:1、3、6;n=n*10+*argvi-'0'語句用于連接各字符串首字符,所以結(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);程序運行后的輸出結(jié)果是_。 A:24 B:28 C:3
46、2 D:36答案:B評析:本題考查的是函數(shù)調(diào)用和變量的作用域。在主函數(shù)main()中定義了兩個變量s和i,同時給s賦初值a=4,i賦初值0。當i=0時,執(zhí)行"s+=f(i);"語句,調(diào)用f()函數(shù)并將i的初值0傳遞給形參n。首先執(zhí)行if語句中的條件:n%3,條件為假,執(zhí)行else下的語句,a=7,t=7+0=7,使用return返回t,t=7+(a+)=7+5=12,此時a運算完后自行加1為6;返回主函數(shù)中,s=4+12=16。當i=1時,執(zhí)行"s+=f(i);"語句,調(diào)用f()函數(shù)并將i的初值1傳遞給形參n。首先執(zhí)行if語句中的條件: n%3,條件為真
47、,執(zhí)行if下的語句,t=0,a=6,t=0+6=6,使用return返回t,t=6+6=12,返回主函數(shù)中,s=16+12=28。最后的輸出結(jié)果為28。 故本題答案選B。38、有一個名為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);下面針對該程序的敘述正確的是_。 A:編譯出錯 B:運行出錯 C:運行結(jié)果
48、為 y=0 D:運行結(jié)果為 y=6答案:D評析:本題考查的是帶參數(shù)的宏定義。宏替換后,表達式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);程序運行后的輸出結(jié)果是_。 A:z B:0 C:元素ch5的地址 D:字符y的地址答案:A評析:本題考查的是指向數(shù)組的指針。本題中定義了一個字符串數(shù)組和指針,并將指針pc指向該數(shù)組的首地址,執(zhí)行輸出語句"printf("%cn&
49、quot;,*(pc+5);"。語句中的*(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);程序運行后的輸出結(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評析:本題考查的是結(jié)構體成員的引用。在主函數(shù)main()中定義了一個整型變量i和一個結(jié)構體變量s。f()函數(shù)中,定義了一個結(jié)構體類型的指針p,外層循環(huán)變量i表示數(shù)組的第i個元素,內(nèi)層循環(huán)變量j表示數(shù)組的第i+1個元素,調(diào)用f()函數(shù),通過指針變量p來引用結(jié)構體成
51、員。執(zhí)行if語句,當p->ai>p->aj時進行互換,其作用就是從小到大進行排序,最后將排序后的元素輸出: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);程序運行后的輸出
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評析:本題考查的是結(jié)構體成員的引用。在主函數(shù)main()中定義了一個整型變量i和一個結(jié)構體變量s。f()函數(shù)中,通過指針a來引用數(shù)組中的元素;通過for循環(huán)語句將數(shù)組中除最后一個元素外的其它元素(由條件i<n-1決定的)分別加上由0開始的遞增數(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é)構變量的指針的指針 B:NODE p;語句出錯 C:p是指向struct node結(jié)構變量的指針 D:p是struct node結(jié)構變量答案:C評析:本題考查的是對用戶自定義類型的理解。本題中定義了一個指針類型的"用戶類型名" NODE,通過"用戶類型名"可以定義該類型的結(jié)構體變量,所以選項C的敘述是正確的。 故本題答案選C。43、有以下程序main() unsigned
54、char a=2,b=4,c=5,d; d=a|b; d&=c; printf("%dn",d);程序運行后的輸出結(jié)果是_。 A:3 B:4 C:5 D:6答案:B評析: 本題考查的是邏輯運算。 本題中主要是進行位的邏輯運算。將a的值轉(zhuǎn)換為二進制為:0000 0010,b的值轉(zhuǎn)換為二進制為:0000 0100,將a、b進行按位或運算(參加計算的兩個位只要有一個為1,那么運算結(jié)果為1),因此此時d的二進制為:0000 0110,c的值轉(zhuǎn)換為二進制為:0000 0101,接下來將d和c進行按位與運算(參加計算的兩個位都為1,則結(jié)果為1,否則為0),結(jié)果為:0000 01
55、00,轉(zhuǎ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);程序運行后的輸出結(jié)果是_。 A:1 2 B:1 4 C:123 4 D:123 456答案:D評析:本題考查的是文件的綜合應用。本題首先以創(chuàng)建方式打開文件"d2.d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建材物流園工程可行性研究報告(參考)
- 國際冷鏈物流產(chǎn)業(yè)園擴建項目可行性研究報告(范文模板)
- 河南省開封市五縣聯(lián)考2023-2024學年高二上學期12月月考歷史含解析
- 重慶第二師范學院《中級法語(二)》2023-2024學年第二學期期末試卷
- 平頂山學院《有機化學實驗一》2023-2024學年第二學期期末試卷
- 廣東茂名健康職業(yè)學院《節(jié)目策劃通論》2023-2024學年第二學期期末試卷
- 四川信息職業(yè)技術學院《納米工程導論》2023-2024學年第二學期期末試卷
- 湖南化工職業(yè)技術學院《體育賽事組織》2023-2024學年第二學期期末試卷
- 南陽科技職業(yè)學院《環(huán)境科學前沿》2023-2024學年第二學期期末試卷
- 貴州交通職業(yè)技術學院《網(wǎng)絡與新媒體》2023-2024學年第二學期期末試卷
- 《智能家居系統(tǒng)》課件
- 注射相關感染預防與控制(全文)
- 浙江省溫州市2021-2022學年高一下學期期末語文試題
- 乙二醇安全技術說明書MSDS
- 一年級數(shù)學上冊 20以內(nèi)的減法玩撲克做數(shù)學教案 新版冀教版
- 新開模具開發(fā)進度表
- 華為性格測試攻略
- 小學二年級下冊美術課件-4.13大花瓶-嶺南版(9張)ppt課件
- 項目部汛期工點及駐地風險評估報告
- 羅賓斯《管理學》第15章理解群體與團隊
- 工程項目部各類型結(jié)算單(模板)
評論
0/150
提交評論