第一篇:2009年C語言考試(B)--
課程名稱:C語言程序設(shè)計(jì)廣東工業(yè)大學(xué)考試試卷(B)試卷滿分 100分
考試時(shí)間:09年 5月 6日(第12周 星期三)
注:所有答案要寫在答題紙上
一、單項(xiàng)選擇題(共40分,每題2分)
1、一個(gè)可執(zhí)行C程序的開始執(zhí)行點(diǎn)是
A.程序中的第一個(gè)語句B.包含文件的第一個(gè)函數(shù)
C.名為main的函數(shù)D.程序中的第一個(gè)函數(shù)
2、下列數(shù)據(jù)類型中,不屬于基本數(shù)據(jù)類型的是
A.intB.數(shù)組
C.floatD.char3、不符合C語言語法法則的標(biāo)識(shí)符是
A._fileB.NAME C.x123D.case
4.、對(duì)于C程序的函數(shù),下列敘述中正確的是:
A.函數(shù)的定義不能嵌套,但函數(shù)調(diào)用可以嵌套5
B.函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不能嵌套
C.函數(shù)的定義和調(diào)用均不能嵌套
D.函數(shù)的定義和調(diào)用均可嵌套
5.、關(guān)于字符串和字符的說法,不正確的是:
A.“A”與'A'是相同的B.字符可以參加算術(shù)運(yùn)算
C.可以有任何長度的字符串 D.轉(zhuǎn)義字符的長度為16、以下程序段輸出的結(jié)果是:
Printf(“%dn”,strlen(“ATSn0121”));
A.11B.10C.9D.87、以下只有在使用時(shí)才為該類型變量分配存儲(chǔ)空間的存儲(chǔ)類說明是:
A.auto 和 staticB.auto 和 register
C.register 和 staticD.extern 和 register
extern可以置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義。另外,extern也可
用來進(jìn)行鏈接指定。
C語言中提供了存儲(chǔ)說明符auto,register,extern,static說明的四種存儲(chǔ)類別。四種存儲(chǔ)類別說明符有兩種存儲(chǔ)期:自動(dòng)存儲(chǔ)期和靜態(tài)存儲(chǔ)期。其中auto和
register對(duì)應(yīng)自動(dòng)存儲(chǔ)期。具有自動(dòng)存儲(chǔ)期的變量在進(jìn)入聲明該變量的程序塊是被建立,它在該程序塊活動(dòng)時(shí)存在,退出該程序塊時(shí)撤銷。在函數(shù)內(nèi)部定義的變量成為局部變量。
8、若變量為float 類型,要通過語句scanf(“%f%f%f”,&a,&b,&c);給a 賦予10.0,b賦予 22.0,c賦
予33.0,不正確的輸入形式是:
A.10<回車> B.10,22,33<回車> C.10<回車>D.1022<回車>
22<回車>22 33<回車>33<回車>
33<回車>
9、以下變量X、Y、Z均為double 類型且已正確賦值,對(duì)數(shù)字式子XY*Z,不正確的C語言表達(dá)式是:
A.X/Y*Z B.X*(1/(Y*Z))C.X/Y*1/ZD.X/Y/Z10、以下程序的輸出結(jié)果是:
main()
{
int x='f ';
printf(“n%c”,'A'+(x-'a'));
}
A.IB.GC.FD.J11、對(duì)兩個(gè)數(shù)組a 和 b 進(jìn)行初始化,則敘述正確的是:
char a[]=“abcde”;char b[]={'a','b','c','d','e'};
A.a與b數(shù)組類型不相同B.a與b長度相同
C.a和b都存放字符串D.a數(shù)組比b數(shù)組的長度長
12.、參考下面的程序段,下面正確的判斷是
#define A 3
#define B(a)((A+1)*a)
……
x=3*(A+B(7));
A.程序錯(cuò)誤,不允許嵌套宏定義 B.x=21
C.程序錯(cuò)誤,宏定義不允許有參數(shù) D.x=9313、數(shù)組名作為參數(shù)傳遞給函數(shù),作為實(shí)參的數(shù)組名被處理為:
A.該數(shù)組的首地址B.該數(shù)組元素的個(gè)數(shù)
C.該數(shù)組中各元素的值D.該數(shù)組的長度
14、以下程序輸出的結(jié)果是:
main()
{
int w=4,x=3,y=2,z=1;
printf(“%dn”,(w } A.1B.2C.3D.415、下列程序段中,正確的是: A.int x=0,y=10;B.int x=0,y; switch(x)switch(x) {case y: x++;break;{case x>0:y=1;break; case y+2: x+=10;break;case x==0:y=0;break; case y-1: x=-7;break;}case x<0: y=-1;break;} C.int x=10,y=20, z;D.int x=0,y; switch(x)switch(x) {case 12:z=3;break;{case 3: case y+1:x+=10;break;case-1:y=2;break; case y-8:y=-3;break;}case 2:break;} 16、有以下函數(shù)的定義:int fun(int n,double x){……}若選項(xiàng)中的變量都已經(jīng)正確定義并賦值,則對(duì)函數(shù)fun 正確調(diào)用的語句是: A.fun(int y,double m);B.printf(“%dn”,fun(10,12.5)); C.fun(x,n);D.int fun(10,12.5); 17、以下程序段while循環(huán)執(zhí)行的次數(shù)是: int k=0; while(k=1)k++; A.無限次B.有語法錯(cuò)誤,不能執(zhí)行 B.一次也不執(zhí)行 D.執(zhí)行一次 18、當(dāng)執(zhí)行下面的程序時(shí),如果輸入ABC,則輸出的結(jié)果是: #include “stdio.h” #include “string.h” main() { char ss[10]=“12345”; gets(ss); strcat(ss, “6789”); printf(“%sn”,ss+1); } A.BC67B.2345ABC67C.BC6789 D.BC45678919、以下程序輸出的結(jié)果是; void fun(int a,int b, int c){c=a*b;} main(){int c;fun(2,3,c);printf(“%dn”,c);} A.6 B.1C.無定值 D.020、當(dāng)運(yùn)行以下程序輸入三行,每行都是在第一列上開始,則循環(huán)輸出結(jié)果是: 輸入:a<回車> b<回車> cdef<回車> #include “stdio.h” #defineN6 main(){charc[N];inti=0; for(i=0;i for(i=0;i A.abcdef B.aC.aD.a bbb ccdefcd d e f 二、填空題(30分,每空2分) 求下列表達(dá)式的值(x,y為int 型變量)。 1、設(shè)x=4,y=8(x++)*(--y)(28【1】) 2、45%8+(5>4)+(3>6)(6【2】) 把下列條件用關(guān)系表達(dá)式或邏輯表達(dá)式描述(x為int 型變量,c為char型變量)。 3、c為數(shù)字字符。(c>=’0’ && c<=’9’orc>=48 && c<=57【3】) 4、x是奇數(shù)。(x%2!=0orx%2==1【4】) 5、c語言中,形參的缺省類型是(auto【5】) 6、以下程序段輸入數(shù)據(jù)999ga67<回車>,x、y、z的值分別是 (【6】) int x;char y;float z; scanf(“%2d%c%f”,&x ,&y ,&z); printf(“%d ,%c ,%f ”, x, y, z);99, 9,-107374176.0000007、寫出輸出單精度實(shí)數(shù),其輸出格式占5位整數(shù)和2位小數(shù)的格式說明符。 (%8.2f【7】) 8、下列程序是計(jì)算 1+2+3+4+……+100的值。 main() { int i, s; s=0i = 1; do { s=s+i【9】;i++;} whlie(i<=); printf(“1+2+3+4+……+100= %d 【11】”,s); } 9、下列是用冒泡法對(duì)n 個(gè)數(shù)按由大到小的次序進(jìn)行排序的函數(shù)(注:為提高排序速度,在算法中增加了下列措施:當(dāng)某趟冒泡過程中未發(fā)生數(shù)據(jù)交換時(shí),即表示數(shù)據(jù)已排序完畢,應(yīng)提早結(jié)束排序工作)。 void bubble(int a[] , int n) {int i, j , t , flag , temp; i = 0; do {i++; t = n-i; flag = 0; for(j = 1【12】;j<=torj<=n-i 【13】;j++) if(a [j-1] < a[j]) { temp =a[j1] = a [j];a[j] = temp; flag = 1;【14】; }); } 三、寫出下列程序的運(yùn)行結(jié)果(20分,每題5分) 1、main(){ static char x[ ] = “ABCDE”;E int i;DE for(i= 4;i>=0;i--)CDE printf(“%sn”,x+i);BCDE }ABCDE2、main() { int cc; for(cc = 1;cc<=4;cc++) fun();2,4,6,8 printf(“n”); } void fun() {staticinta;a+=2; printf(“%d,”, a); } 3、main() { int a; for(a= 100;a>=0;a--) {if(a %8==0) break; if(a%2==0) continue; printf(“%d,” , a);99,97,96 } printf(“%d ”, a); } 4、main(){ char st[ ] = “ToStringType”; scanf(“%s”, st); int i; for(i=0;st[i]!= '