一.選擇題(共20題,每題1。5分,共30分) 1.可在C程序中用作用戶標(biāo)識(shí)符的一組的是 A.void B.a(chǎn)s_b3 C.for D.2c 2. 若變量已正確定義并賦值,符合C語言語法的表達(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è)有定義語句char a=’\72’;則變量a包含 個(gè)字符。 A.1 B.2 C.3 D.說明不合法 11.以下程序的輸出結(jié)果是 A.因輸出格式不合法,無正確輸出 B.65,90 C.A,Y D.65,89 main() { char c1=’A’,c2=’Y’; Printf(“%d,%d\n”,c1,c2); } 12.以下敘述中正確的是 A.C語言程序總是從第一個(gè)定義的函數(shù)開始執(zhí)行 B.在C語言程序中,要調(diào)用的函數(shù)必須在main函數(shù)中定義 C.C語言程序總是從main函數(shù)開始執(zhí)行 D.C語言程序中的main函數(shù)必須放在程序的開始部分 13.以下函數(shù)的類型是 A.與參數(shù)x的類型相同 B.void 類型 C.int類型 D.無法確定 Fff(float x) {printf(“%d\n”,x*x);} 14.以下函數(shù)調(diào)用語句中,含有的實(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í)行語句”char a[10]={“abcd”};*p=a;”后,*(p+4)的值是 A.“abcd” B.’d’ C.’\0’ D.不能確定 17. 執(zhí)行語句“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 語句執(zhí)行后,a,b,c中的值分別為 , , 。 If(a>c) b=a;a=c;c=b; 7.若變量已正確定義,以下語句段的輸出結(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è)有以下語句 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語言源程序的基本單位是_________。 三. 判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(10分,每小題2分) 1.參加位運(yùn)算的數(shù)據(jù)可以是任何類型的數(shù)據(jù)。( ) 2.若有定義和語句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通過鍵盤輸入:10,A,12.5,則a=10,c=‘A’,f=12.5。( ) 3.C語言把文件看作是一個(gè)字符(字節(jié))的序列。( ) 4.若有定義和語句: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)體類型后,可以多次用它來定義具有該類型的變量。( ) 四.程序填空(20分,每題5分) 1.以下程序的功能是:從鍵盤上輸入若干學(xué)生的成績,統(tǒng)計(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)程序中的空白處填入一條語句或一個(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; } }
|