一.選擇題(共20題,每題1。5分,共30分) 1.可在C程序中用作用戶標(biāo)識(shí)符的一組的是 A.void B.a(chǎn)s_b3 C.for D.2c 2. 若變量已正確定義并賦值,符合C語(yǔ)言語(yǔ)法的表達(dá)式是 A.a(chǎn)=a+7; B.a(chǎn)=7+b+c,a++ C.int(12.3%4) D.a(chǎn)=a+7=c+b 3. 不合法的八進(jìn)制數(shù)是 A.0 B.028 C.077 D.01 4.下列運(yùn)算符中優(yōu)先級(jí)最高的運(yùn)算是 A.! B.% C.-= D.&& 5.設(shè)a,b和c都是int型變量,且a=3,b=4,c=5;則表達(dá)式中,值為0的是 A.a(chǎn)&&b B.a(chǎn)<=b C.a(chǎn)||b+c&&b-c D.!((a<b)&&!c||1) 6.以下程序的輸出結(jié)果是 A.0 B.1 C.2 D.3 main() {int a=2,b=-1,c=2; If (a<b) If (b<0) c=0; else c+=1; printf(“%d\n”,c); } 7.以下程序的輸出結(jié)果是 A.1 B.2 C.3 D.4 main() {int w=4,x=3,y=2,z=1 Printf(“%d\n”,(w<x?w:z<y?z:x)) } 8.以下程序的輸出結(jié)果是 A.9 B.1 C.11 D.10 Int k,j,s; For(k=2;k<6;k++,k++) {s=1; for(j=k;j<6;j++) s+=j; } Printf(“%d\n”,s); 9.以下程序的輸出結(jié)果是 A.741 B.852 C.963 D.875421 main() { int y=10; for(;y>0;y--) if (y%3==0) {printf(“%d”,--y); continue;} } 10.設(shè)有定義語(yǔ)句char a=’\72’;則變量a包含 個(gè)字符。 A.1 B.2 C.3 D.說(shuō)明不合法 11.以下程序的輸出結(jié)果是 A.因輸出格式不合法,無(wú)正確輸出 B.65,90 C.A,Y D.65,89 main() { char c1=’A’,c2=’Y’; Printf(“%d,%d\n”,c1,c2); } 12.以下敘述中正確的是 A.C語(yǔ)言程序總是從第一個(gè)定義的函數(shù)開(kāi)始執(zhí)行 B.在C語(yǔ)言程序中,要調(diào)用的函數(shù)必須在main函數(shù)中定義 C.C語(yǔ)言程序總是從main函數(shù)開(kāi)始執(zhí)行 D.C語(yǔ)言程序中的main函數(shù)必須放在程序的開(kāi)始部分 13.以下函數(shù)的類型是 A.與參數(shù)x的類型相同 B.void 類型 C.int類型 D.無(wú)法確定 Fff(float x) {printf(“%d\n”,x*x);} 14.以下函數(shù)調(diào)用語(yǔ)句中,含有的實(shí)參個(gè)數(shù)是 A.1 B.2 C.4 D.5 Func((exp1,exp2),(exp3,exp4,exp5)); 15.以下程序的輸入結(jié)果是 。 A.1,5,9, B.1,4,7, C.3,5,7, D.3,6,9, Main() {int I,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf(“%d,”,x[2-i]); } 16.執(zhí)行語(yǔ)句”char a[10]={“abcd”};*p=a;”后,*(p+4)的值是 A.“abcd” B.’d’ C.’\0’ D.不能確定 17. 執(zhí)行語(yǔ)句“int (*ptr)[10];”其中的ptr是 A.10個(gè)指向整型變量的指針 B.指向10個(gè)整型變量的函數(shù)指針 C.一個(gè)指向具有10個(gè)元素的一維數(shù)組指針 D.具有10個(gè)指針元素的一維數(shù)組 18.設(shè)有如下定義,則對(duì)data中的a成員的正確引用是 Struct sk{int a;float b;}date,*p=&date; A.(*p).date.a B.(*p).a C.p->data.a D.p.data.a 19、以下對(duì)枚舉類型名的定義正確的是 A. enum a={one ,two ,three}; B. enum a{a1,a2,a3}; C. enum a={‘1’,’2’,’3’}; D. enum a{“one ”,”two”,”three”}; 20、若有如下定義,則printf(“%d\n”,sizeof(them));的輸出是 Typedef union{long x[2];short y[4];char z[8];}MYTYPE; MYTYPE them A.32 B.16 C. 8 D.24 二.填空題(共30分,每空2分) 1.若k為int 整形變量且賦值11,請(qǐng)寫出運(yùn)算k++后表達(dá)式的值為 和變量k 的值為 。 2.在內(nèi)存中存儲(chǔ)“ABCD”要占用 字節(jié)。 3.表示存儲(chǔ)類型的關(guān)鍵字有auto, ,register和 。 4.描述命題“A小于B或者小于C”的表達(dá)式為 。 5.請(qǐng)寫出以下程序的輸出結(jié)果 。 main() {int a=100; If (a>100) printf(“%d\n”,a>100); else printf(“%d\n”,a<=100); } 6.當(dāng)a=1,b=2,c=3時(shí),以下if 語(yǔ)句執(zhí)行后,a,b,c中的值分別為 , , 。 If(a>c) b=a;a=c;c=b; 7.若變量已正確定義,以下語(yǔ)句段的輸出結(jié)果是 。 x=0;y=2;z=3; Switch(x) { case 0: switch(y==2) {case 1:printf(“*”);break; case 2:printf(“%”);break; } Case 1: switch(z) {case 1:printf(“$”); case 2:printf(“*”);break; default :printf(“#”); } } 8.以下程序的輸出結(jié)果是 。 unsigned fun6(unsigned num) {unsigned k=1; do {k*=num%10;num/=10;} while(num); return k; } main() {unsigned n=26; Printf(“%d\n”,fun6(n)); } 9.用遞歸法計(jì)算整數(shù)的階乘函數(shù) float fac(int n) { if (n<0) {Printf(“error\n”);return(0.0)} else if (n<1) f=1; else f= ; return(f); } 10、設(shè)有以下語(yǔ)句 Int a[3][4]{{1,3,5,7},{2,4,6,8},{9,10,11,12}},*p=a; 則printf(“%d”,*(p+2*4+1))的輸出結(jié)果為 . 11. C語(yǔ)言源程序的基本單位是_________。 三. 判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(10分,每小題2分) 1.參加位運(yùn)算的數(shù)據(jù)可以是任何類型的數(shù)據(jù)。( ) 2.若有定義和語(yǔ)句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通過(guò)鍵盤輸入:10,A,12.5,則a=10,c=‘A’,f=12.5。( ) 3.C語(yǔ)言把文件看作是一個(gè)字符(字節(jié))的序列。( ) 4.若有定義和語(yǔ)句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[2-i];則sum=21。( ) 5.在程序中定義了一個(gè)結(jié)構(gòu)體類型后,可以多次用它來(lái)定義具有該類型的變量。( ) 四.程序填空(20分,每題5分) 1.以下程序的功能是:從鍵盤上輸入若干學(xué)生的成績(jī),統(tǒng)計(jì)并輸出最高成績(jī)和最低成績(jī),當(dāng)輸入負(fù)數(shù)時(shí)結(jié)束輸入,請(qǐng)?zhí)羁铡?br/>main() {float x,amax,amin; scanf(“%f”,&x); amax=x; while( ) { if(x>amax) amax=x; If ( ) amin=x; Scanf(“%f”,&x); } Printf(“\namax=%f\namin=%f\n”,amax,amin); }
2.有以下程序段: s=1.0;n=10; for(k=1;k<n;k++) s=s+1.0/(k*(k+1)); printf(“%f\n”,s); 請(qǐng)?zhí)羁眨瓜旅娴某绦蚨蔚墓δ芡耆c之等同。 S=0.0; ; k=0; do { s=s+d; ; d=1.0/(k*(k+1)); }while( ); Printf(“%f\n”,s);
3.下列函數(shù)從字符數(shù)組s[]中刪除存放在c中的字符,請(qǐng)?zhí)羁铡?br/>Void delete(s,c) Char s[],c; {int i,j; For (i=j=0; ;i++ ) If (s c) S[ ]=s; =’\0’; } 4、下面的函數(shù)strcat(str1,str2)實(shí)現(xiàn)將字符串str2拼接到字符串str1后面的功能。請(qǐng)程序中的空白處填入一條語(yǔ)句或一個(gè)表達(dá)式。 strcat(str1,str2 ) Char *str1,*str2; {char *t=str1; While( )str1++; While( ); Return(t); } 五、寫一函數(shù)對(duì)數(shù)組前n個(gè)數(shù)按從小到大排序 (10 分) C程序設(shè)計(jì)題參考(A卷)答案 一. 選擇題(每小題2分,共同40分) 1、B 2、B 3、B 4、A 5、D 6、C 7、A 8、D 9、B 10、A 11、D 12 、C 13、C 14、B 15、C 16、C 17、C 18、B 19、B 20、C 二.填空題(共30分,每空2分) 1、11 12 2、5 3、static extern 4、A<B||A<C 5、1 6、3 2 2 7、*# 8、12 9、fac(n-1)*n 10、4 11. 函數(shù) 三. 判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(10分,每小題2分) 1.( × ) 2.( √ ) 3.( √ )4.( √ ) 5.( √ ) 四.程序填空(20分,每題5分) 1.x>=0 x<min 2.d=1.0,n=10; k++; k<=n; 3.s != j++ s[j] 4.*str1 *str++=*str2++ 五、寫一函數(shù)對(duì)數(shù)組前n個(gè)數(shù)按從小到大排序 (10 分) void sort(int array[],int n) {int i,j,t; For (i=0;i<n-1;i++) For (j=i+1;j<n;j++) If (array>array) {t=array; Array=array[j]; Array[j]=t; } }
|