2010秋江蘇省計算機二級C考試試題 |
絕密★ 啟用前 2010年秋 江蘇省高等學校非計算機專業學生 計算機基礎知識和應用能力等級考試 二級試卷 試卷語種:C語言 一、選擇題(用答題卡答題,答案依次填在21~30答題號內,共10分) 21.以下關于C源程序的敘述中正確的是___(21)___ 。 A.注釋只能出現在程序的開始位置或語句后面 B.一行中不能寫多條語句 C.一條語句可以分寫在多行中 D.一個源程序只能保存在一個文件中 22.C源程序中的命令#include與#define是在___(22)___階段被處理的。 A.預處理 B.編譯 C.連接 D.執行 23.以下語句中有語法錯誤的是___(23)___ A.printf("%d",0xAB); B.printf("%f",3.45E2.5); C.printf("%d",037); D.printf("%c",'\\'); 24.已有聲明"int x=5,y;float z=2;",以下表達式中語法正確的是_____(24)____ 。 A.y=x%z B.x>0?y=x:y=-x C.y=x/2=z D.y=x=z/2 25.已知字母A的ASCII碼是65,字母a的ASCII碼是97,變量c中存儲了一個大寫字母的編碼.若要求將c中大寫字母編碼轉換成對應小寫字母編碼,則以下表達式中不能實現該功能的是______(25)_____ A.c=tolower(c) B.c=c+ 26.一元二次方程ax A.a!=0,b*b-4*a*c>0 B.a!=0||b*b-4*a*c>0 C.a && b*b-4*a*c>0 D.!a && b*b-4*a*c>0 27.以下關于break和continue語句的敘述中正確的是 ___(27)______ 。 A.break和continue語句都可以出現在switch語句中 B.break和continue語句都可以出現在循環語句的循環體中 C.在循環語句和switch語句之外允許出現break和continue語句 D.執行循環語句中的break或continue語句都將立即終止循環 28.若有一函數定義為"int f(int x,int *y){return x/*y;}",聲明該函數的正確形式是__(28)___ . A.void f(int,int); B.int *f(int,int *); C.int f(int *,int *); D.int f(int,int *); 29.已知有聲明"char a[]="program",*p=a+1;",則執行以下語句不會輸出字符a的是 _____(29)______ . A.putchar(*p+4); B.putchar(*(p+4)); C.putchar(a[sizeof(a)-3]); D.putchar(*(a+5)); 30.已有定義和聲明: struct student {int no; char name[20]; struct{int year,month,day;}birth; } s; 若要求將日期" A.year=1989; month=11;day=12; B.s.year=1989;s.month=11;s.day=12; C.birth.year=1989;birth.month=11;birth.,day=12; D.s.birth.year=1989;s.birth.month=11;s.birth.day=12; 二、填空題(將答案填寫在答題紙的相應答題號內,每個答案只占一行,共30分) ● 基本概念 1.若有聲明"double n;",則數學公式" 2.已知有聲明"char ch;int a;",執行語句"scanf("%c%d",&ch,&a);"時如果從鍵盤輸入的數據是"123",則變量a得到的值是___(2)___ 。 3.若有聲明"int a=0,b=1,c=2;",執行語句"if(a>0&&++b>0)c++;else c--;"后,變量a、b、c的值分別___(3)___ 。 4.若有以下宏定義: #define M(a,b) -a/b 則執行語句"printf("%d",M(4+3,2+1));"后輸出結果為___(4)___ 。 5.聲明"FILE *p;"中的類型標識符"FILE"是在頭文件 ___(5)___中定義的。 ● 閱讀程序 6.以下程序運行時輸出到屏幕的結果為___(6)___ 。 #include enum{A,B,C,D}x; void main() {char s[]="your"; for(x=B;x<=D;x++) putchar(s[x]); } 7.以下程序運行時輸出到屏幕的結果是 (7) 。 #include void main() {int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i,j; for(i=0;i<12;i++) {j=s[i]; c[j]++; } for(i=1;i<5;i++) printf("%d",c[i]); } 8.以下程序運行時輸出到屏幕的結果是___(8)___ 。 #include int fun(int x) {static int c,y; if(c==0) y=1; else y=y+x; c++; return y; } void main() {int i; for(i=0;i<2;i++) printf("%d",fun(2)); } 9.以下程序運行時輸出到屏幕的結果中第一行是___(9)___,第二行是___(10)___ 。 #include void fun(int *a,int b) {while(b>0) {*a+=b; b--; } } void main() {int x=0,y=3; fun(&x,y); printf("%d\n%d\n",x,y); } 10.以下程序運行時輸出到屏幕的結果是___(11)___ #include int f(int x) { if(x==0||x==1)return 3; return x*x-f(x-2); } void main() {printf("%d\n",f(3));}
|