C語言練習題及答案(共50頁)_第1頁
C語言練習題及答案(共50頁)_第2頁
C語言練習題及答案(共50頁)_第3頁
C語言練習題及答案(共50頁)_第4頁
C語言練習題及答案(共50頁)_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、C 語言練習題及答案第 1 章 C 語言概述 一、選擇題:1、一個 C 程序的執(zhí)行是從( A )。A 本程序的 main 函數(shù)開始,到 main 函數(shù)結束B 本程序文件的第一個函數(shù)開始,到本程序文件的最后一個函數(shù)結束C 本程序的 main 函數(shù)開始,到本程序文件的最后一個函數(shù)結束D 本程序文件的第一個函數(shù)開始,到本程序 main 函數(shù)結束 2、 在 C 語言中,每個語句必須以( D )結束。 A. 回車符 B. 冒號 C. 逗號 D. 分號 3、C 語言規(guī)定:在一個源程序中,main 函數(shù)的位置( C )。A. 必須在最開始 B. 必須在系統(tǒng)調用的庫函數(shù)的后面 C. 可以任意 D. 必須在最后

2、 4、一個 C 語言程序是由( B )。A. 一個主程序和若干子程序組成 B. 函數(shù)組成 C. 若干過程組成 D. 若干子程序組成 5、下列說法中錯誤的是( D )。 A. 主函數(shù)可以分為兩個部分:主函數(shù)說明部分和主函數(shù)體 B. 主函數(shù)可以調用任何非主函數(shù)的其他函數(shù) C. 任何非主函數(shù)可以調用其他任何非主函數(shù) D. 程序可以從任何非主函數(shù)開始執(zhí)行 6、用 C 語言編寫的源文件經(jīng)過編譯,若沒有產(chǎn)生編譯錯誤,則系統(tǒng)將( C )。 A. 生成可執(zhí)行目標文件 B. 生成目標文件 C. 輸出運行結果 D. 自動保存源文件 二、填空題:1、C 語言只有 32 個關鍵字和 9 種控制語句。2、每個源程序有且

3、只有一個 main 函數(shù),系統(tǒng)總是從該函數(shù)開始執(zhí)行 C 語言程序。 3、C 語言程序的注釋可以出現(xiàn)在程序中的任何地方,它總是以 * 符號作為開始標記,以 */ 符號作為結束標記。4、C 語言中,輸入操作是由庫函數(shù) scanf 完成的,輸出操作是由庫函 數(shù) printf 完成的。5、系統(tǒng)默認的 C 語言源程序文件的擴展名是 .c ,經(jīng)過編譯后生成的目標文件的擴展名是 .obj ,經(jīng)過連接后生成的可執(zhí)行文件的擴展名是 .exe 。6、C 語言的標識符只能由字母、數(shù)字和 下劃線 三種字符組成。 第 2 章 數(shù)據(jù)類型、運算符和表達式 一、選擇題:1、以下選項中,不正確的 C 語言浮點型常量是( C )

4、。 A. 160. B. 0.12 C. 2e4.2 D. 0.02、以下選項中,( D )是不正確的 C 語言字符型常量。 A. a B. x41 C. 101 D. a3、 在 C 語言中,字符型數(shù)據(jù)在計算機內(nèi)存中,以字符的( C )形式存儲。 A. 原碼 B. 反碼 C. ASCII 碼 D. BCD 碼4、若 x、i、j 和 k 都是 int 型變量,則計算下面表達式后,x 的值是( C )。x=(i=4,j=16,k=32) A. 4 B. 16 C.32 D.525、算術運算符、賦值運算符和關系運算符的運算優(yōu)先級按從高到低依次為( B )。 A. 算術運算、賦值運算、關系運算 B.

5、 算術運算、關系運算、賦值運算 C. 關系運算、賦值運算、算術運算 D. 關系運算、算術運算、賦值運算 6、若有代數(shù)式 ,則不正確的 C 語言表達式是( C )。A.a/b/c*e*3 B. 3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3 7、表達式!x|a=b 等效于( D )。 A. !(x|a)=b) B. !(x|y)=b C. !(x|(a=b) D. (!x)|(a=b) 8、設整型變量 m,n,a,b,c,d 均為 1,執(zhí)行 (m=ab)&(n=cd)后, m,n 的值是( A)。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 9、 設有語句 in

6、t a=3;,則執(zhí)行了語句 a+=a-=a*=a;后,變量 a 的值是( B )。 A. 3 B. 0 C. 9 D. -12 10、在以下一組運算符中,優(yōu)先級最低的運算符是( D )。 A. * B. != C. + D. = 11、設整型變量 i 值為 2,表達式(+i)+(+i)+(+i)的結果是( B )。 A. 6 B. 12 C. 15 D. 表達式出錯 12、若已定義 x 和 y 為 double 類型,則表達式 x=1,y=x+3/2 的值是( C )。 A. 1 B. 2 C. 2.0 D. 2.5 13、sizeof (double)的結果值是( A )。 A. 8 B.

7、4 C. 2 D. 出錯 14、設 a=1,b=2,c=3,d=4,則表達式:ab? a : cd? a : d 的結果為( D )。 A. 4 B. 3 C. 2 D. 1 15、設 a 為整型變量,不能正確表達數(shù)學關系:10a15 的 C 語言表達式是( A )。 A. 10a10 & a15 D. !(a=15) 16、設 f 是實型變量,下列表達式中不是逗號表達式的是( D )。 A. f= 3.2, 1.0 B. f0, f0 D. f=(3.2, 1.0) 17、 表達式 18/4*sqrt(4.0)/8 值的數(shù)據(jù)類型是( C )。A. int B. float C. double

8、 D. 不確定 18、已知字母 A 的 ASCII 碼為十進制數(shù) 65,且 c2 為字符型,則執(zhí)行語句C2=A+6-3;后 c2 中的值是( A )。 A. D B. 68 C. 不確定的值 D. C 19、以下用戶標識符中,合法的是( B )。 A. int B. nit C. 123 D. a+b 20、C 語言中,要求運算對象只能為整數(shù)的運算符是( A )。 A. % B. / C. D. * 21、若有說明語句:char c=72;則變量 c 在內(nèi)存占用的字節(jié)數(shù)是( A )。 A. 1 B. 2 C. 3 D. 4 22、字符串ABC在內(nèi)存占用的字節(jié)數(shù)是( B )。 A. 3 B. 4

9、 C. 6 D. 8 23、要為字符型變量 a 賦初值,下列語句中哪一個是正確的( B )。 A. char a=3; B. char a=3; C. char a=%; D. char a=*; 24、下列不正確的轉義字符是( C )。 A. B. C. 074 D. 0 二、填空題:1、C 語言中的邏輯值“真”是用 1 表示的,邏輯值“假”是用 0 表示的。 2、若 x 和 n 都是 int 型變量,且 x 的初值為 12,n 的初值為 5,則計算表達式x%=(n%=2)后 x 的值為 0 。 3、設 c=w,a=1,b=2,d=-5, 則表達式 x+1c, y!=c+2, -a-5*b1

10、00) y=x/100; printf(“%d”,y); else printf(“%d”,a+b); 2. if 結構main() float t;char c;printf(“input score,max as 100:n”);scanf(“%f”,&t);if(t=90) ch=A;else if(t=80) ch=B;else if(t=70) ch=C;else if(t=60) ch=D;else ch=E;printf(“Grade=%dn”,ch);switch 結構main()float t;char c;printf(“input score,max as 100:n”)

11、;scanf(“%f”,&t);switch(t/10) case 10:case 9: ch=A;break;case 8: ch=B;break;case 7: ch=C;break;case 6: ch=D;break;case 5: ch=E;printf(“Grade=%dn”,ch); 五、選做題1. main() int a,b,c,t;scanf(“%d%d%d”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(b0)&(s=3)&(s1)|(s8) case 1: x=3; break; case 0: x=1; break;

12、 break;case 0: x=0; break; 第 5 章 循環(huán)結構答案一、選擇題 1B 2.A 3.A 4.C 5.A 6.B 7.A 8.C 9.D 10.D 二、填空題1. x1 x1/2-22. ch=getchar() ch=A&ch=Z3. s=s+t*i t=-t 三、閱讀下列程序,寫出程序運行的輸出結果 18522. 89213. 54. SUM=2468 四、程序改錯1.main() int i=200,n=0; /*n 用來記錄每行已打印數(shù)的個數(shù)*/ while(i=300) if(i%7=0) /break; printf(%5d,i); n=n+1; if(n=5

13、) /*滿 5 個換行*/ printf(n); n=0; i+; 2). main( ) int i,s=0,t=1; for(i=1;i=7;i+) t=t*i; s=s+t; printf(sum=%dn,s); 五、程序設計題1. main()int x,g,s,b;for(x=100;x1000;x+) b=x/100;s=x%100/10;g=x%10;if(g*g*g+s*s*s+b*b*b)=x)printf(“%dn”,x); 2. main() int i,s=0,f=1;for(i=2;i80;i+)s=s+f*(i-1)/i; f=-f;printf(s=%fn”,s)

14、; 六、選做題1. main() float s=0,m=2.0,n=1.0,p; int i;for(i=1;i=20;i+)s=s+m/n; p=m; m=m+n; n=p;printf(s=%fn”,s); 2.#include main( ) int i,j,k,s=1;for(i=1;i=20;i+) for(j=1;j=0) printf(“%2d %2d %2d”,i,j,k); s=s+1; if(s%5=0) printf(“n”); 第 6 章 數(shù)組習題A 卷1. 單項選擇題(1) int a4=5,3,8,9;其中 a3的值為( )。DA. 5 B. 3 C. 8 D.

15、9 (2) 以下 4 個字符串函數(shù)中,( )所在的頭文件與其他 3 個不同。A A. gets B. strcpy C. strlen D. strcmp(3) 以下 4 個數(shù)組定義中,( )是錯誤的。 DA. int a7; B. #define N 5 long bN; C. char c5; D. int n,dn; (4) 對字符數(shù)組進行初始化,( )形式是錯誤。 BA. char c1 =1, 2, 3; B. char c2 =123; C. char c3 = 1, 2, 3, 0; D. char c4 =123; (5) 在數(shù)組中,數(shù)組名表示( )。 AA. 數(shù)組第 1 個元

16、素的首地址 B.數(shù)組第 2 個元素的首地址 C. 數(shù)組所有元素的首地址 D.數(shù)組最后 1 個元素的首地址(6) 若有以下數(shù)組說明,則數(shù)值最小的和最大的元素下標分別是( )。 Bint a12 =1,2,3,4,5,6,7,8,9,10,11,12; A. 1,12 B. 0,11 C. 1,11 D. 0,12 (7) 若有以下說明,則數(shù)值為 4 的表達式是( )。 Dint a12 =1,2,3,4,5,6,7,8,9,10,11,12; char c=a, d, g ; A. ag-c B. a4 C. ad-c D. ad-c (8) 設有定義:char s12 = string ; 則

17、 printf( %dn,strlen(s); 的輸出是( )。 AA. 6 B. 7 C. 11 D. 12 (9) 設有定義:char s12 = string; 則 printf(%dn , sizeof(s); 的輸出是( )。 DA. 6 B. 7 C. 11 D. 12 (10) 合法的數(shù)組定義是( )。 AA. char a = string ; B. int a5 =0,1,2,3,4,5; C. char a= string ; D. char a =0,1,2,3,4,5 (11) 合法的數(shù)組定義是( )。 DA. int a3 =0,1,2,3,4,5; B. int a

18、 3 =0,1,2,3,4; C. int a23=0,1,2,3,4,5,6; D. int a23=0,1,2,3,4,5,; (12) 下列語句中,正確的是 ( )。DA. char a3 =abc, 1; B. char a 3 =abc, 1; C. char a3 =a, 1; D. char a 3 = a, 1; (13) 下列定義的字符數(shù)組中,輸出 printf(%sn, str2) ;的輸出是( )。 Cstatic str320 = basic, foxpro, windows; A. basic B. foxpro C. windows D. 輸出語句出錯(14) 下列

19、各語句定義了數(shù)組,其中哪一個是不正確的( )。 CA. char a310=China,American,Asia; B. int x22=1,2,3,4; C. float x2 =1,2,4,6,8,10; D. int m3=1,2,3,4,5,6; (15) 數(shù)組定義為 int a32=1,2,3,4,5,6,值為 6 的數(shù)組元素是( )。 BA. a32 B. a21 C. a12 D. a23 (16) 下面的程序中哪一行有錯誤( )。D#include main() float array5=0.0; /第 A 行 int i; for(i=0;i5;i+) scanf(%f,&

20、arrayi); for(i=1;i5;i+) array0=array0+arrayi;/第 B 行 printf(%fn,array0); /第 C 行 A. 第 A 行 B. 第 B 行 C. 第 C 行 D. 沒有(17) 下面哪一項是不正確的字符串賦值或賦初值的方式( )。 C A. char *str; str=string; B. char str7=s,t,r,i,n,g; C. char str110;str1=string; D. char str1=string,str2=12345678;(18) 若有以下說明和語句,則輸出結果是哪一項( )。C (strlen(s)為

21、求字符串 s 的長度的函數(shù)) char s12=a book!; printf(%d,strlen(s); A. 12 B. 8 C. 7 D. 11(19) 若有以下說明和語句,則輸出結果是( )。B (strlen(s)為求字符串 s 的長度的函數(shù)) char sp=tv0willn; printf(%d,strlen(sp); A. 14 B. 3 C. 9 D. 字符串中有非法字符(20) 若有以下說明和語句,則輸出結果是( )。 C char str=c:abc.dat; printf(%s,str);A. 字符串中有非法字符 B. c:abc.dat C. c:abc.dat D.

22、 c:abc.dat 2. 填空題 (1) C 語言中,數(shù)組的各元素必須具有相同的 ,元素的下標下限為 ,下標必須是正整數(shù)、0、或者 。但在程序執(zhí)行過程中,不檢查元素下標是否 。數(shù)據(jù)類型,0,符號常量,越界(2) C 語言中,數(shù)組在內(nèi)存中占一片 的存儲區(qū),由 代表它的首地址。數(shù)組名是一個 常量,不能對它進行賦值運算。連續(xù),數(shù)組名,地址(3) 執(zhí)行 static int b5, a 3 =1,2,3,4,5,6; 后,b4 = ,a12 = 。 0,6(4) 設有定義語句 static int a34 =1,2,3; 則 a10值為 ,a11 值為 ,a21的值為 。 2,0,0(5) 如定義語

23、句為 char a = windows,b = 95;,語句 printf(%s,strcat(a,b);的輸出結果為 。Windows95(6) 根據(jù)以下說明,寫出正確的說明語句:men 是一個有 10 個整型元素的數(shù)組。 step 是一個有 4 個實型元素的數(shù)組,元素值分別為 1.9, -2.33, 0, 20.6。 grid 是一個二維數(shù)組,共有 4 行,10 列整型元素。 int mesh10; float step4 = 1.9, -2.33, 0, 20.6; int grid410;(7) array 是一個一維整形數(shù)組,有 10 個元素,前 6 個元素的初值是 9,4,7,49

24、,32,-5,正確的說明語句為: 。該數(shù)組下標的取值范圍是從_到_(從小到大)。用 scanf 函數(shù)輸入數(shù)組的第二個元素表示為: 。用賦值語句把 39 存入第一個元素表示為: 。把第六個和第四個元素之和存入第一個元素表示為: 。int array10 = 9,4,7,49,32,-5; 0 9 scanf(%d,&array1); array0 = 39; array0= array5+array3;(8) 寫出以下初始化數(shù)組的長度:int chn3;數(shù)組 chn 的長度為_。float isa=1.0,2.0,3.0,4.0,5.0;數(shù)組 isa 的長度為_。int doom8;數(shù)組 doo

25、m 的長度為_。float pci42;數(shù)組pci 的長度為_。int ast33;數(shù)組 ast 的長度為_。int att34;數(shù)組 att 的長度為_。float dell3=1,4,7,2,5,3,6,9;數(shù)組 dell 的長度為_。 6 20 16 32 18 24 36(9) 若有以下整型的 a 數(shù)組,數(shù)組元素和它們得值如下所示: 數(shù)組元素: a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 元素的值: 9 4 12 8 2 10 7 5 1 3 請寫出對該數(shù)組的說明,并賦以上初值。 該數(shù)組的最小下標值為_,最大下標值為_。寫出下面各式的值:aa9的值為_ ;aa4+a8的

26、值為_。int a10=9,4,12,8,2,10,7,5,1,3; 0 9 8 8(10) 字符串a(chǎn)bn012/的長度為_。10 3. 判斷題( )(1) C 允許對數(shù)組的大小作動態(tài)定義,即可用變量定義數(shù)組的大小。 ( )(2) 字符數(shù)組不要求它的最后一個字符為0,甚至可以不包含0。( )(3) 數(shù)組定義 int a10; 也可以寫成 int a(10); 。( )(4) 在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。( )(5) 定義 s 為 56(5 行 6 列)的數(shù)組可寫成 float a5,6; ( )(6) 數(shù)組定義 int a10; 表示數(shù)組名為 a,此數(shù)組有 10 個元素。(

27、)(7) 數(shù)組定義 int a10; 表示數(shù)組名為 a,此數(shù)組有 10 個元素,第 10 個元素為 a10。( )(8) static char c=“a book”; 與 static char c=“a book”; 等價。( )(9) static char c=a , ,b,o,o,k,0;與 static char c=a , ,b,o,o,k; 等價。( )(10) 設已有說明:static char c110,c210; 下面程序片段是合法的。c1=“book”; c2=c1; 4. 程序填空題(1) 輸入 20 個數(shù),輸出它們的平均值,輸出與平均值之差的絕對值為最小的數(shù)組元素。

28、請?zhí)羁铡?#include void main( ) float a20,pjz=0,s,t; int i,k; for(i=0;i20;i+) pjz+=ai; s=fabs(a0-pjz); for(i=1;i20;i+) if(fabs(ai-pjz)s) s=fabs(ai-pjz); t=ai; -for(i=0;i20;i+) scanf(“%f”,&ai); pjz/=20; printf(“%f,%fn”,piz,t); (2) 以下程序以每行 10 個數(shù)據(jù)的形式輸出 a 數(shù)組,請?zhí)羁铡?void main( ) int a50,i; printf(輸入 50 個整數(shù):); f

29、or(i=0; i50; i+) scanf( %d, ); for(i=1; i=50; i+) if( ) printf( %3dn , ) ; printf( %3d,ai-1); &ai i%10=0 ai-1 (3) 下面程序的功能是輸出數(shù)組 s 中最大元素的下標,請?zhí)羁铡?void main( ) int k, p; int s =1,-9,7,2,-10,3; for(p=0,k=p; psk) ; printf(%dn ,k); k=p (4) 這個程序輸入了 20 個數(shù)存放在一個數(shù)組中,并且輸出其中最大者與最小者、20 個數(shù)的和及它們的平均值。請?zhí)羁铡?void main()

30、 char array ; int max,min,average,sum; int i; for(i=0;i ;i+) printf(請輸入第%d 個數(shù):,i+1); scanf(%d, ); max=array0; min=array0; for(i=0;i= ;i+) if(maxarrayi) sum= ; average = ; printf(20 個數(shù)中最大值是%d,max); printf(最小值是%d,min); printf(和是%d,sum); printf(平均值是%d.n,average);20 20 &arrayi 19 max=arrayi; min=arrayi;

31、 sum+arrayi sum/20 B 卷5. 閱讀程序,分析程序的功能。 (1)#include #include void main( ) char s80; int i ; for(i=0; i80; i+) si=getchar( ); if(si=n) break; si=0; i=0; while(si) putchar(si+); putchar(n); 從鍵盤輸入一個字符串,并逐一輸出 (2) #include #include void main( ) char str1080, c80; int i; for(i=0; i10; i+) gets(stri); strcp

32、y(c, str0) ; for(i=1; i10; i+) if(strlen(c) strlen(stri) strcpy(c,stri); printf( %sn, c); printf( %dn, strlen (c); 從鍵盤輸入若干字符串,找到其中最長的一個輸出及它的長度 (3)#include #include void main( ) char a1080, c80; int i, j, k; for(i=0; i10; i+) gets(ai); for(i=0; i9; i+) k=i ; for(j=i+1; j10; j+) if(strcmp (a j, ak)0)

33、k=j; if(k!=i ) strcpy(c,ai) ; strcpy(ai, ak); strcpy(ak,c); / 字符串交換 for(i=0; i10; i+) puts (ai); 從鍵盤輸入若干字符串,并將它們按大到小順序排好再輸出 (4) 閱讀程序,寫出運行結果#include void main( ) int a6=12,4,17,25,27,16,b6=27,13,4,25,23,16,i,j; for(i=0;i6;i+) for(j=0;j6;j+) if(ai=bj)break; if(j6) printf(%d ,ai); printf(n); 4 25 27 16

34、 (5) 閱讀程序,寫出運行結果。 #include void main( ) char a8,temp; int j,k; for(j=0;j7;j+) aj=a+j; a7=0; for(j=0;j0;k-) ak=ak-1; a0=temp; printf(%sn,a); gabcdeffgabcdeefgabcd (6) 閱讀下列程序,寫出程序運行的輸出結果。 #include #include void main( ) char str1 =*; for(int i=0;i4;i+) printf(%sn,str1); str1i= ; str1strlen(str1)-1=0; *

35、 (7) 該程序的運行結果是: min= ,m= ,n= 。 void main() float array43= 3.4,-5.6,56.7, 56.8,999.,-.0123, 0.45,-5.77,123.5, 43.4,0,111.2 ; int i,j; int min; int m,n; min = array00; m=0;n=0; for(i=0;i3;i+) for(j=0;j arrayij) min = arrayij; m=i;n=j; printf(min=%d,m=%d,n=%dn,min,m,n); -5.77 2 1 (8) 寫出下面這個程序的輸出結果:void

36、 main() char str=ABCDEFGHIJKL; printf(%sn,str); 屏幕上顯示 printf(%sn,&str4); 屏幕上顯示 str2=str5; printf(%sn,str); 屏幕上顯示 str9=0; printf(%sn,str); 屏幕上顯示 ABCDEFGHIJKLEFGHIJKLABFDEFGHIJKLABFDEFGHI (9) 讀懂下面的程序并填空。void main() char str80; int i=0; gets(str); while(stri!=0) if(stri=a&str=z) stri-=32; i+; puts(str)

37、; 程序運行時如果輸入 upcase, 屏幕顯示 程序運行時如果輸入 Aa1Bb2Cc3, 屏幕顯示 UPCASEAA1BB2CC第 7 章 函數(shù)習題A 卷1. 單項選擇題 (1)C 語言總是從 函數(shù)開始執(zhí)行。 AA. main B. 處于最前的 C.處于最后的 D. 隨機選一個 (2)函數(shù)在定義時,省略函數(shù)類型說明符,則該函數(shù)值的類型為 。A A. int B. float C. long D. double (2)以下 函數(shù),真正地沒有返回值。 BA. int a()int a=2;return (a); B. void b()printf(c); C. int a()int a=2;re

38、turn a; D. 以上都是 (3)在 C 語言中,有關函數(shù)的說法,以下正確的是 。 AA. 函數(shù)可嵌套定義,也可嵌套調用 B. 函數(shù)可嵌套定義,但不可嵌套調用 C. 函數(shù)不可嵌套定義,但可嵌套調用 D. 函數(shù)不可嵌套定義,也不可嵌套調用 (4)以下函數(shù)調用語句中,含有實參的個數(shù)為 。C fun(2,3),(4,5+6,7); A. 1 B. 2 C. 5 D. 6(5)函數(shù)調用可以在 。 DA. 函數(shù)表達式中 B. 函數(shù)語句中 C. 函數(shù)參數(shù)中 D. 以上都是 (6)被調函數(shù)返回給主調函數(shù)的值稱為 。C A. 形參 B. 實參 C. 返回值 D. 參數(shù) (7) ,可以不進行函數(shù)類型說明。

39、DA. 被調函數(shù)的返回值是整型或字符型時 B. 被調函數(shù)的定義在主調函數(shù)定義之前時 C. 在所有函數(shù)定義前,已在函數(shù)外預先說明了被調函數(shù)類型 D. 以上都是 (8)被調函數(shù)通過 語句,將值返回給主調函數(shù)。 DA. if B. for C. while D. return (9)被調函數(shù)調用結束后,返回到 。 DA.主調函數(shù)中該被調函數(shù)調用語句處 B.主函數(shù)中該被調函數(shù)調用語句處 C.主調函數(shù)中該被調函數(shù)調用語句的前一語句 D.主調函數(shù)中該被調函數(shù)調用語句的后一語句(10)以下對 C 語言函數(shù)的有關描述中,正確的是 。AA. 在 C 中,調用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實

40、參 B. C 函數(shù)既可以嵌套定義又可遞歸調用 C. 函數(shù)必須有返回值,否則不能使用函數(shù) D. C 程序中有調用關系的所有函數(shù)必須放在同一個源程序文件中 (11)C 語言中函數(shù)的隱含存儲類型是 。 CA. auto B. static C. extern D. 無存儲類型 (12)能把函數(shù)處理結果的兩個數(shù)據(jù)返回給主調函數(shù),在下面的方法中不正確的是 。AA. return 這兩個數(shù) B. 形參用兩個元素的數(shù)組 C. 形參用兩個這種數(shù)據(jù)類型的指針 D. 用兩個全局變量 (13)C 語言可執(zhí)行程序從什么地方開始執(zhí)行 ( )。 CA. 程序中第一條可執(zhí)行語句 B. 程序中第一個函數(shù)C. 程序中的 mai

41、n 函數(shù) D. 包含文件中的第一個函數(shù)(14)有一個函數(shù)原型如下所示,則該函數(shù)的返回類型為( ) 。 C abc(float x,float y);A. void B. double C. int D. float 2. 填空題 (1) 變量的作用域主要取決于變量 ,變量的生存期既取決于變量 ,又取決于變量 。 所處的位置,所處的位置,存儲類型(2) 說明變量時,若省略存儲類型符,系統(tǒng)默認其為 存儲類別,該存儲類別的類型符為: 。動態(tài),auto(3) 靜態(tài)型局部變量的作用域是 ,生存期是 。它所在的局部,整個程序(4) 函數(shù)中的形參和調用時的實參都是數(shù)組名時,傳遞方式為 ,都是變量時,傳遞方式

42、為 。 址傳遞,值傳遞(5) 函數(shù)的形式參數(shù)的作用域為 ,全局的外部變量和函數(shù)體內(nèi)定義的局部變量重名時, _變量優(yōu)先。 該函數(shù)中,局部(6) 若自定義函數(shù)要求返回一個值,則應在該函數(shù)體中有一條 語句,若自定義函數(shù)要求不返回一個值,則應在該函數(shù)說明時加一個類型說明符 。 return,void(7) 若函數(shù)的形式參數(shù)是指針類型,則實參可以是 或 。指針,數(shù)組名(8) 函數(shù)的參數(shù)為 char *類型時,形參與實參結合的傳遞方式為 。址傳遞(9) 函數(shù)的實參為常量時,形參與實參結合的傳遞方式為 。值傳遞(10) 下面這個函數(shù)的功能是求兩個整數(shù)的積,并通過形參傳回結果,請?zhí)羁?。int int int*

43、 *resultvoid mul(_x,_y,_result) _=x*y; 3. 判斷題( )(1) 函數(shù)說明指的是在程序中設定一個函數(shù)模塊。 ( )(2) 形參只有在被調用時才分配存儲空間。 ( )(3) 在 C 的函數(shù)中,最好使用全局變量。 ( )(4) 在調用函數(shù)時,實參傳值給形參,調用結束時,形參值傳給實參。 ( )(5) 所有函數(shù)定義都是并行的,相互獨立的。 ( )(6) 函數(shù)的隱含存儲類型是 extern。 ( )(7) 形參可以是常量、變量或表達式。 ( )(8) 函數(shù)調用可以作為一個函數(shù)的形參。( )(9) C 語言規(guī)定,實參應與其對應的形參類型一致。 ( )(10) 定義函

44、數(shù)時,形參的類型說明可以放在函數(shù)體內(nèi)。 4. 程序填空題(1) 對數(shù)組按值從大到小的順序排序后輸出,請?zhí)羁铡?#include void main() float a7=2,6,3,8,3,12,9; int i ; void sort(float*,int); ; for(i=0;i7;i+) printf(%f ,ai); printf(n); void sort( ) int i,j,k; float t; for(i=0;in-1;i+) k=i; for(j=i+1;jn;j+) if( ) k=j; t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; sort(a

45、,7) float* p,int n *(p+k)*(p+j) if(k!=i) (2) 下列函數(shù)在 n 個元素的一維數(shù)組中,找出最大值、最小值并傳送到調用函數(shù),請?zhí)羁铡?#include void find(float *p, int max, int min, int n) int k; *max=*p; for(k=1;kn;k+) t=*(p+k); if( ) *max=t; if(t*min) *min=t; float t; *min=*p; *maxb) f=1; else if(a=b) f=0; else f=-1; return f; -1 (2)鍵盤輸入 abcdef

46、#include void fun( ) char c ; if(c=getchar( )!=n) fun( ) ; putchar(c); void main( ) fun( ); fedcba (3) #include #define C 5 int x=1,y=C; void main( ) int x; x=y+; printf(%d %dn, x,y); if(x4) int x ; x=+y; printf(%d %dn,x,y) ; x+=y-; printf(%d %dn,x,y); 5 67 712 6 (4) #include int c , a=4 ; func(int

47、a , int b) c=a*b ; a=b-1 ; b+ ; return (a+b+1) ; void main( ) int b=2 , p=0 ; c=1 ; p=func(b , a) ; printf(%d,%d,%d,%dn, a,b,c,p) ; 4,2,8,9 (5) unsigned fun6(unsigned num) unsigned k=1; do k*=num%10; num/=10; while(num); return k; void main( ) unsigned n=26; printf(%dn, fun6(n); 12 (6)#include int m

48、ax(int a,int b);main() int x,y,z,t,m; scanf(%d,%d,%d,&x,&y,&z); t=max(x,y); m=max(t,z); printf(%d,m);int max(int a,int b) if(ab) return(a); else return(b);運行時若輸入:10,15,9 則輸出:_ 15運行時若輸入:300,129,300 則輸出:_ 300 (7)#include long sum(int a,int b);long factorial(int n);main() int n1,n2; long a; scanf(%d,%d

49、,&n1,&n2); a=sum(n1,n2); printf(a=%1d,a);long sum(int a,int b) long c1,c2; c1=factorial(a); c2=factorial(b); return(c1+c2);long factorial(int n) long rtn=1; int i; for(i=1;i=n;i+) rtn*=i; return(rtn);運行時若輸入:2,3 則輸出:_ 8運行時若輸入:0, 5 則輸出:_ 121 (8)#include int s();int x,y;main()int n;x=1;y=2;n=s();printf

50、(x=%d,y=%d,n=%d,x,y,n);int s()int z;x=3;y=4;z=x+y;return(z);程序運行后輸出:_ 3,4,7 (9) 以下程序的輸出結果是 a=_,b=_,c=_。#include int func(int a,int *p);void main() int a=1,b=2,c; c=func(a,&b); b=func(c,&a); a=func(b,&c); printf(a=%d,b=%d,c=%d,a,b,c); int func(int a,int *p) a+; *p=a+2; return(*p+a);36 16 19第 8 章 預處理

51、A 部分(本、??票刈觯┮?、選擇題 以下不正確的敘述是(D) A、宏替換不占用運行時間。 B、宏名無類型。C、宏替換只是字符替換。 D、宏名必須用大寫字母表示。C 語言的編譯系統(tǒng)對宏命令的處理(D) A、在程序運行時進行的。 B、在程序連接時進行。C、和 C 程序中的其它語句同時進行編譯的。D、在對源程序中其它語句正式編譯之前進行的。3、以下程序的輸出結果是(C)。 A、15 B、100 C、10 D、150 #define MIN(x,y) (x)(y)?(x):(y) void main() int I,j,k; i=10;j=15;k=10*MIN(i,j); printf(“%dn”,

52、k);4、以下敘述中正確的是(D)用#include 包含的文件的后綴必須是“.h”。 若一些源程序中包含某個頭文件;當該文件有錯時,只需對該頭文件進行修改,包含此頭文件的所有源程序不必重新進行編譯。 宏命令行可以看作是一行 C 語句。 預處理是在編譯之前進行的。 5、以下敘述中正確的是(C) A、源程序中所有的行都參加編譯。 B、宏定義常量與 const 定義常量是一樣的。 C、宏定義可以嵌套定義,即在宏定義中的字符串可以引用另一個宏定義的標識符。 D、以上都不正確。二、填空題 以下程序中 for 循環(huán)執(zhí)行的次數(shù)是 6 。 #define N 2#define M N+1#define NU

53、M (M+1)*M/2void main() int i; for(i=1;i=A&c=a&c=z)?1:0) 第 9 章 指針 A 部分(本、專科必做)一、選擇題1、若有定義:int x,*pb;則以下正確的表達式是(A) A、pb=&x B、pb=x C、*pb=&x D、*pb=*x2、以下程序的輸出結果是(B) A、因變量無定義輸出不定值 B、0 C、-1 D、1 #include void main()printf(“%dn”,NULL);3、以下程序的輸出結果是(B) A、5,2,3 B、-5,-12,-7 C、-5,-12,-17 D、5,-2,-7#includevoid su

54、b(int x,int y,int *z)*z=y-x;void main() int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(“%d,%d,%dn”,a,b,c);4、以下程序的輸出結果是(C) A、4 B、6 C、8 D、10#includevoid main() int k=2,m=4,n=6; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf(“%dn”,n);5、已知指針 p 的指向(圖一)的 a1,則執(zhí)行語句*p+;后,*p 的值是(B)。 A、20 B、30 C、21

55、 D、31 a0 a1 a2 a3 a410 20 30 40 50 (圖一)6、已知指針 p 的指向(圖一)的 a1,則表達式*+p 的值是(B)。 A、20 B、30 C、21 D、317、已知指針 p 的指向(圖一)的 a1,則表達式+*p 的值是(C)。 A、20 B、30 C、21 D、318、以下程序的輸出結果是(D)。 A、23 B、24 C、25 D、26#includevoid prtv(int *x)printf(“%dn”,+*x);void main() int a=25;prtv(&a);9、以下程序的輸出結果是(B)。 A、運行出錯 B、100 C、a 的地址 D、

56、b 的地址#includevoid main()int *k,*a,b=100; a=&b;k=&a; printf(“%dn”,*k);10、以下程序運行后,輸出結果是(D)。A) 8 B) 7 C) 6 D) 5 #include ss(char *s) char *p=s; while(*p) p+; return(p-s); main() char *a=abded; int i; i=ss(a); printf(%dn,i); 二、填空題1、若有定義:char ch; (1)使指針 p 指向變量 ch 的定義語句是 char *p=&ch; 。 (2)若已定義 char *p;,使指

57、針 p 指向變量 ch 的賦值語句是 p=&ch; 。 (3)在(1)的基礎上,通過指針 p 給變量 ch 讀入字符的 scanf 調用語句是 scanf(“%c”,p); 。 (4)在(1)的基礎上,通過指針 p 給變量 ch 賦字符a的語句是*p=a; 。 (5)在(1)的基礎上,通過指針 p 用格式輸出函數(shù)輸出 ch 中字符的語句是printf(“%c”,*p); 。2、以下程序輸出的是 C 。 void main( ) int i=3, j=2; char *a=; printf(%c%cn,ai,aj); 3、以下函數(shù)的功能是,把兩個整數(shù)指針所指的存儲單元中的內(nèi)容進行交換。請?zhí)羁铡?

58、void exchange(int *x, int *y) int t; t=*y; *y= *x ; *x= t ; B 部分(本科必做)程序填空:1、下面程序的輸出結果是 A B C D B C D C D D 。 char b=; void main() char *chp; for(chp=b; *chp: chp+=2) printf(%s,chp); printf(n);下面是一個字符串連接函數(shù),請補充完整。 void mystrcat(char *s1,char *s2) char *p,*q; for(p=s1; *p ; p+ ); for( q=s2 ;*q;q+) *p+

59、=*q ; *p=0 ; 第 10 章 結構體與共用體 A 部分(本、??票刈觯┮?、選擇題1、設有如下定義: struct skint a;float b;data,*p; 若有 p=&data;,則對 data 中的 a 域的正確引用是(B)。A)(*p).data.a B)(*p).a C)p-data.a D)p.data.a 2、根據(jù)以下定義,能輸出字母 M 的語句是(D)。 A、printf(“%cn”,); B、printf(“%cn”,1); C、printf(“%cn”,1); D、printf(“%cn”,0); struct personchar name9;int age;struct person class10=“John”,17,”Paul”,19,”Mary”,18,”Adam”,16,;3、以下程序的輸出結果是

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論