C語言程序設計的試題及答案
大家在考程序員時,C語言程序設計大家有了解嗎?下面瑞文網小編為大家分享了C語言程序設計的試題及答案,供大家參考。
第一章 基礎知識
一、填空
1. 每個 C 程序都必須有且僅有一個________ 函數。
2. C 語言程序開發到執行通常要經過 6 個階段即編輯、預處理、________、 鏈接 、加載 和執行。
3. 軟件是程序,以及______、使用和維護所需要的所有文檔。
4. 國標中規定: “計算機程序是按照具體要求產生的適合于計算機處理的_________”。
5. 程序設計語言按照書寫形式,以及思維方式的不同一般分為低級語言和________兩大類 。
6. C 語言是由________組成的。
7. C 語言的函數可分為主函數 main、標準庫函數和_________。
8. 一個函數是由兩部分組成的,即:________和 函數體。
9. 編譯是將 C 語言所編寫的源程序________成機器代碼, 也稱為建立目標代碼程序的過程。
10. 程序是由某種程序設計語言編制出來, 體現了編程者的控制思想和對計算機執行操 作 的要求。不同的任務功能,就會需求不同的軟件程序,如:控制計算機本身軟硬件協調工作 ,并使其設備充分發揮效力,方便用戶使用的系統軟件程序,稱為操作系統;而為辦公自動 化(OA) 、管理信息系統(MIS) 、人工智能、電子商務、網絡互聯等等應用而開發的軟件程 序,統稱為_________。
11. 機器語言是以__________形式表示的機器基本指令的集合, 是計算機系統唯一不需要翻 譯可以直接識別和執行的程序設計語言。 12. 與機器語言相比,使用匯編語言來編寫程序可以用_______來表示指令的操作碼和操作 對 象,也可以用標號和符號來代替地址、常量和變量。
13. 在編譯程序之前,凡以____開頭的代碼行都先由預處理程序預處理。
14. C 程序的執行均是由執行_________開始。 15. 函數體即為包含在{ }內的部分。它分為________和為完成功能任務由若干個 C 語句 組成的執行部分。
16. C 語言程序中一條簡單語句是以________字符作為結束符的。
17. C 語言是結構化、________的程序設計語言。
18. 由于計算機硬件不能直接識別高級語言中的語句, 因此, 必須經過 “_______程序” , 將用高級語言編寫的程序翻譯成計算機硬件所能識別的機器語言程序方可執行。
19. 用高級語言編寫的程序需翻譯成計算機硬件所能識別的機器語言程序方可執行。 所 以 說,用高級語言進行程序設計,其編程效率高,方便易用,但_______沒有低級語言高。
20. 第一個系統體現結構化程序設計思想的教學工具語言是_______語言。
解答: 1. main() 2. 編譯 3. 開發 4. 指令序列 5. 高級語言 6. 函數 7. 自定義函數 8. 函數首部 9. 翻譯 10. 應用軟件 11. 二進制代碼 12. 助記符 13. # 14. main 函數 15. 聲明部分 16. ;(或分號) 17. 模塊化 18. 翻譯 19. 執行速度
20. PASCAL 二.閱讀程序寫結果 解答: 三.補充程序 解答: 四.改錯題 解答: 五.編程一 解答: 六.編程二 解答: 第二章 常量、變量和表達式 一.填空 1. 以 16 位計算機為例,若定義 long int a; 則變量 a 占______個字節的內存空間。 2. 以 16 位計算機為例,若定義 double a; 則變量 a 占______ 個字節的內存空間。
3. 以 16 位計算機為例,若定義 long double; 則變量 a 占 ______ 個字節的內存空間。 4. 在______ 位機,int 型占 4 個字節。 、空類型
5. C 語言的數據類型有:基本數據類型、構造數據類型、枚舉類型、______ 。
6. 在 C 語言中,基本數據類型有:______ 7. 整型常量 046 轉換為十進制數等于______ 8. 整型常量 054 轉換為十進制數等于______ 。 。
。
9. 整型常量 0x125 轉換為十進制數等于 ______。 10. 整型常量 0x7C 轉換為十進制數等于 11. 整型常量 39 轉換為八進制等于 ______。 ______。 ______。
12. 實數 473.468 寫成規范化指數形式,則應為
13. 實數 0.0453 寫成規范化指數形式,則應為 ______。
14. 將 0x123 轉換為二進制等于
______。
15. 字符’A’表示成十六進制等于 ______。 16. 在 C 語言中,稱代表常量的標識符為 ______。 17. C語言中是用編譯預處理命令______ 來定義符號常量 ,
18. 在 C 語言中,以反斜杠符(\)開頭,后跟字符的字符序列,稱之為 ______ 主 要用來表示控制及不可見的字符或者一些圖形符號 19. 語句 printf("\106")執行的結果輸出是 ______。 20. 語句 printf(“b”)執行的結果輸出是______。 21. 語句 printf(“\\b”)執行的結果輸出是 ______。 22. 語句 printf("\102")執行的結果輸出是 ______。 23. 若有 char ch1; ch1='a'+4; 則語句 printf("%c",x)的輸出結果為 ______。 24. 字符串常量“Hello, everyone! ”占據的內存空間為______ 25. 字符串常量“Hello,Bob!”占據的內存空間為 ______ 26. 十進制整型常量由 0~9 個數據組成,但不能以______ 27. 十六進制常量由 0~9 和______ 28. unsigned long 類型常量通常以______ 29. 實型常量通常有小數形式和______ 30. C語言中是用編譯預處理命令______ 組成 為后綴 兩種表達方式 來包含其他源文件 個字節 個字節 開始,沒有小數部分
31. 為了表示字符串的結束,系統自動在字符串的最后加一個______,但不被輸出
32. C 語言中,其值可被改變的量稱為變量,它具有三個基本要素:變量名、______ 和變量值 33. C 語言規定,變量的標識符只能由字母、數字和下劃線組成,且不能以______ 頭。 開
34. 在 16 位機中,sizeof(“hello\n”)等于 ______。 35. 在 16 位機中,printf(“\“hello\” ”)等于 ______。 36. 字符變量在內存中占用______ 個字節的存儲空間。 ______。 ______。
37. 若有定義 int x=27, y=6; 則表達式 x/y 的值為 38. 若有定義 int x=47, y=8; 則表達式 x%y 的值為
39. 若有定義 char ch1='A',ch2,ch3; 執行 ch2=ch1++; ch3=++ch1; printf("ch1=%c, ch2=% c",ch1,ch2); 則輸出為 ______。 40. 若有定義 char ch1='A',ch2,ch3; 執行 ch2=ch1++; ch3=++ch1; printf("ch2=%c, ch3=% c",ch2,ch3); 則輸出為 ______。 41. 若有定義 int i=5, j, k; 執行 j=i--; k=--i; printf("i=%d, j=%d\n", i, j); 則輸 出為 ______。 42. 表達式 (int)(13.7+25.6)/4%5 的值是 ______。 43. 表達式 3.6-5/2+1.2+5%3 的值是______。 44. 表達式 54%10/2+4.0*(8/5) 的值是 ______。 45. 若定義 int x; double b=5.45; 執行 x=b 后,則 x 的值為______。 46. 若定義 int y; char c='A'; 執行 y=c 后,則 y 的值為 47. 若定義 int a=8; float b=2.5; 則 a/(int)(b)的值為 48. 若 a=5,則執行 a*=7-3 語句后,a 的值是 ______。 ______。 ______。
49. 若 int a=1,b=0,c=4,d=2; 則表達式(a>b ? a:b)&&(c-d)的值為______。 50. 已知 a = 0 ,表達式 a = 1?b = 1:b = 0; 執行后,b 的值是 51. 若定義 int m=7,n=12; 則表達式 n%=m-m%5 的值是 ______。
______。
52. 若定義 int a=8; float b=4.5;執行 a*=a/=a-b 后,a 的值為 ______。 53. int a=2; !a++的值為 ______。 ______。
54. int a=0; !a++&++a 的值為
55. int a=7;float b=4.5;則 printf(“%d”,a*=a/=a-b)的值為 ______。 56. int k=7;float a=2.5,b=4.7;則表達式 a+k%3*(int)(a+b)%2/4 的值為 ______。 57. #define Max(a,b) (((a)-(b))&0x80000000)?(a):(b),int a=2,b=6;printf(“%d\n”,M ax(a,b))的值為 ______。 58. 在 32 位機中,int a=4,b=7; printf(“%0x”,a-b)的值為:______。 59. int x,y,z; x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值為: ______。
60. int i=2,j; printf(“%d”,j=i<1)的值為:______ 解答: 1. 0 2. 4 3. 10 4. 32 5. 指針類型 6. int、float、double、char 7. 38 8. 44 9. 293 10. 124 11. 047 12. 4.734680e+002 13. 4.530000e-002 14. 100100011
15. \x41/41H 16. 符號常量 17. #define 18. 轉義字符常量 19. F 20. b 21. \b 22. B 23. e 24. 16 25. 11 26. 0 27. A~F 28. U 29. 指數形式 30. #include 31. “\0” 32. 變量類型 33. 數字 34. 7 35. “hello” 36. 1
37. 4 38. 7 39. ch1=C, ch2=A 40. ch2=A, ch3=C 41. i=3, j=5 42. 4 43. 4.800000 44. 7.000000 45. 5 46. 65 47. 4 48. 20 49. 1 50. 1 51. 2 52. 4 53. 0 54. 0 55. 4 56. 2.500000 57. 2 58. fffffffd
59. 3,1 60. 0
二.閱讀程序寫結果 解答:
三.補充程序 解答:
四.改錯題 解答:
五.編程一 解答:
六.編程二 解答:
第三章 順序結構
一、填空
1. C 語言的語句可分為 5 類,它們是:控制語句、____________、函數語句、符合語句和空 語句。
2. 常用于字符輸入的函數為:________________ 。
3. 常用于字符輸出的函數為:________________。
4. 常用于字符串輸入的函數為:________________。
5. 常用于字符串輸出的函數為:________________。 6. 格式輸入函數的一般形式為:________________ 。 7. 格式輸出函數的一般形式為:________________ 。 8. printf 和 scanf 是標準的庫函數,它們的函數原型在頭文件________________中。 9. 有 char ch,則從鍵盤給 ch 賦值的格式輸入語句為:________________。 10. 如果要輸出字符串常量“HelloWord! ” ,則格式輸出語句為:________________。 11. 設有定義:long x=-123456L; ,請寫出能夠正確輸出變量 x 值的語句________________ 。 12. 若有 int a,b; ,想通過 scanf("%d%d",&a,&b);輸入語句給 a 賦于 1,給 b 賦于 2,則從鍵 盤
輸入數據的形式是________________。 13. 若有 int i,j; scanf("i=%d,j=%d";&i,&j); ,要求給 i 賦 10,給 j 賦 20,則應該從鍵盤 輸入_______。 14. 已知 i、j、k 為 int 型變量,若從鍵盤輸入:1,2,3<回車>,使 i 的值為 1、j 的值為 2、 k 的值為 3,請寫出正確的輸入語句________________ 。 15. 有 int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); 若想 從鍵盤上輸入數據,使變量 m 中的值為 123,n 中的值為 456,p 中的值為 789,則正確的輸入是 _____ ___________。 16. 有 int a; float b, c; %f\n", a, b, c); scanf("%2d%3f%4f",&a,&b,&c); printf("\na=%d, b=%f, c=
, 若 運 行 時 從 鍵 盤 上 輸 入 9876543210< 回 車 > , 則 程 序 的 輸 出 結 果 是 ___________________ __。 17. 有 int m=0256,n=256; 則 printf("%o %o\n",m,n); 的輸出結果是__________________ ___ 。 18. 有 int x=102,y=012; , 則 printf(“%2d,%2d\n”,x,y); 的輸出結果是______________ _______ 。 19. 有定義和語句:int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); , 則 printf("%d %d %3.1f %3.1f\n",a,c,f,x); 的輸出結果是_____________________ 。 20. 若有定義和語句:int m=0xabc,n=0xabc; m-=n; 則 printf("%o\n",m);的輸出結果是___ __________。 21. 若有 int m=32,n=032; ,則 printf("%d,%x\n",m,n); 執行后輸出結果是______________ _____ 。 22. 若有 int a=1234; ,則 printf("%2d\n",a); 的輸出結果是_____________________ 。 23. 若變量已正確說明為 float 類型,要通過語句 scanf(“%f %f %f ”,&a,&b,&c);給 a 賦于 1 0.0,b 賦予 22.0,c 賦予 33.0,不正確的輸入形式是_____________________ 。 A) 10 <回車>22<回車>33<回車> B) 10.0,22.0,33.0<回車> C) 10.0<回車> 22.0 33.0<回車> D) 10 22<回車> 33<回車>
24. 若有 int x=3,y=1; 則 printf("%d %d\n",x++,y+2); 的輸出結果是__________________ ___ 。 25. 若有定義和語句:double d; float f; long l; int i; i=f=l=d=20/3; 則 printf("% d %ld %f %f \n", i,l,f,d);的輸出結果是(小數點后只寫一位) _____________________。 26. 以下說法中正確的是 _____________________。 A) #define 和 printf 都是 C 語句 B) #define 是 C 語句,而 printf 不是 C) printf 是 C 語句,但#define 不是 D) #define 和 printf 都不是 C 語句 27. 若有 int k=17; ,則 printf("%d,%o,%x \n",k,k,k);的輸出結果是_________________ ____ 。 28. 以下敘述中正確的是_____________________ 。 A) 輸入項可以是一個實型常量,如:scanf("%f",3.5); B) 只有格式控制,沒有輸入項,也能正確輸入數據到內存,例如:scakf("a=%d,b=%d"); C) 當輸入數據時,必須指明變量地址,例如:scanf("%f",&f); 29. 若有定義和語句:int u=010,v=0x10,w=10;則 printf("%d,%d,%d\n",u,v,w); 輸出結果是 _____________________。 30. 若有 int a=1,b=4,c=2; float x=10.5, y=4.0, z; z=(a+b)/c+sqrt((double)y)*1.2/c+ x; ,則 printf("%f\n",z); 的輸出結果是_____________________ 。 31. 若有 int a=2,c=5; ,則 printf("a=%%d,b=%%d\n",a,c);的輸出結果是________________ _____ 。 32. 有 char c; int n=100; float f=10; double x; x=f*=n/=(c=50); 則 printf("%d %f\ n",n,x); 的輸出結果是_____________________。 33. 有 int i=0,j=0,k=0; scanf("%d%*d%d",&i,&j,&k); printf("%d%d%d\n",i,j,k); 若 從鍵盤輸入:10 20 30<回車>。輸出結果是_____________________。 34. 若有 int a,b,c; a=25; b=025; c=0x25;,則 printf("%d %d %d\n",a,b,c); 的輸出結果 是___________。 35. 有以下語句段 int n1=10,n2=20; printf(“________________”,n1,n2); 要求按以下格式輸出 n1 和 n2 的值,每個輸出行從第一列開始,請填空。 n1=10 n2=20 36. 若有語句 int i=-19,j=i%4; 則 printf("%d\n",j);的輸出結果是_____________________
。 37. 有 int a=0; a+=(a=8); 則 printf("%d\n",a);的輸出結果是_____________________。 38. 有 int a=1, b=2; a=a+b; b=a-b; a=a-b;則 printf(“%d,%d\n”, a, b );的輸出結果是 ______________。 39. 有 unsigned short a=65536; int b;,則 printf(“%d\n”,b=a);的輸出結果是________ ______。 40. 語句 printf("\10289\n");的數據結果為:__________________ 。 解答: 1. 表達式語句 2. getchar( ) 3. putchar( ) 4. gets( ) 5. puts( ) 6. scanf(“格式控制字符串” ,地址表列); 7. printf(“格式控制字符串” ,輸出表列); 8. stdio.h 9. scanf (“%c” ,&ch); 10. printf (“%s” ,HelloWord!); 或者:printf (“HelloWord!”); 11. printf(“x=%1d\n”,x); 12. 1 2 或者 1 2 13. i=10,j=20 14. scanf(“%d,%d,%d”,&i,&j,&k); 15. m=123n=456p=789
16. a=98, b=765.000000, c=4321.000000 17. 256 400 18. 102,10 19. 1 65 1.5 6.5 20. 0 21. 32,1a 22. 1234 23. B 24. 3 3 25. 6 6 6.0 6.0 26. D 27. 17,21,11 28. C 29. 8,16,10 30. 13.700000 31. a=%d,b=%d 32. 2 20.000000 33. 10300 34. 25 21 37 35. n1=%d\nn2=%d 36. -3 37. 16
38. 2,1 39. 0 40. B89 二.閱讀程序寫結果 解答: 三.補充程序 解答: 四.改錯題 解答: 五.編程一 解答: 六.編程二 解答: 第四章 選擇結構 一.填空 1. 在 if, while, case, do, else 等關鍵字中,用于選擇結構的有( ). 2. 已知 a = 1; 那么 if ( a = 2) printf("%d", 2); else printf("%d", 1); 的輸出結 果是( ). 3. 已知 char a = 'A'; 那么 if ( a > 65) printf("%s", "bigger"); else printf("%s" , "smaller"); 的輸出結果是( ). 4. 表示“x≥ y≥ z”的 C 語言表達式是 ( 5. 在 C 語言中,用于實現選擇結構的語句有( 。 6. 判斷兩個浮點型變量 x 和 y 是否相等一般用:if( 7. 設有程序段: t=6;a=7;b=8; if(a=b) t=a;,這段程序執行后,t 的結果是( 。 8. 設 a=1,b=2,c=3,d=4,則表達式:a>b?a:c>d?a:d 的結果為( 9. 表達式 98 && 8 && 31 && (98 - 'a')的值為( 10. 若 int a = 3; 則表達式 (a > 2)&& ! ('D'> 69) 的值為( )。 )。 ) 。 )語句和( )。 ) 語句
<1e-6 )? 。 )
解答: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 二.閱讀程序寫結果 1. #include void main( ) { int x,y,t; x=7;y=9; if(x
2. #include void main( ) { int x=1,a=2,b=3; switch(x) { case 1: case 2: case 3: a--; break; b++; break; a++;b++;
} printf("\na=%d,b=%d\n",a,b); }
3. #include void main( ) { char ch1 = 'E'; if(ch1 >= 'A') ch1++; else ch1+=32; printf("ch1 = %c\n", ch1); }
4. #include void main( ) { int x,y,t; x=5;y=3;
if(x>y) { t=x;x=y;y=t;} printf("%d,%d\n" , x,y ); }
5. #include int main() { int a,b,c,m; printf("Enter three integers:"); scanf("%d%d%d",&a,&b,&c); if(a<=b) m=a; else m=b; if(c
6. #include int main() { char ch1='a',ch2='B',ch3='E'; if(ch1>ch2) if(ch2>ch3) else --ch3; printf("ch3=%c\n",ch3); return 0; }
ch3++;