1.? C語言的主要特點有哪些?(多選)
??? A.簡潔、緊湊,使用方便、靈活,易于學習和應用。
??? B.C語言是面向結構化程序設計的語言。
??? C.C語言允許直接對位、字節和地址進行操作。
??? D.數據類型豐富。
??? E.C語言生成的目標代碼質量高。
???
??? 答案:? ABCDE
2.? C語言程序由什么組成?(單選)
?? A. 子程序?? B. 主程序和子程序?? C. 函數?? D. 過程
?? 答案: C
3.? 源程序要正確地運行,必須要有什么函數?(單選)
??? A. printf函數??? B. 自定義的函數
??? C. main函數????? D. 不需要函數
??? 答案: C
4.? 指出下面合法的標識符:(多選)
??? A. 3ab??? B. int??? C. ABC??? D. a_3
??? E. sum.a? F. #abc? G. _stu2? H. abc f
??? 答案:CDG
5.? 指出下面哪些是保留字:(多選)
??? A. char?? B. abc??? C. printf?? D. Int
??? E. float? F. define G. include? H. PI??
??? 答案:AEFG
6.? 指出下面哪些是合法的用戶定義的標識符?(多選)
??? A. P-S?? B. putchar?? C. double?? D. _908
??? E. *par? F. sheep!?? G. wind??? H. x y
??? 答案:BDG
7.? C語言的基本類型哪些:(多選)
??? A. 整型??? B. 枚舉型??? C. 數組型??? D. 指針型
??? E. 字符型? F. 構造型??? G. 實形????? H. 空類型
??? 答案: ABEG
8. 這段程序中的常量有:(多選)
?? #define PI? 3.14
?? void main()
?? {
????? int sum;
????? sum = 10 + 15;
????? printf("sum=%d\n",sum);
????? printf("result is 25\n");
?? }
?? 這段程序中常量有:
?? A. 10?? B. sum?? C. 15
?? D. 25?? E. main? F. PI
?? 答案:ACF
9. C語言中整形常量按進制劃分,有以下幾種:(多選)
?? A. 十六進制常量?? B. 十進制常量
?? C. 八進制常量???? D. 二進制常量
?? 答案:ABC
10. 75的十六進制寫法為___,八進制寫法為___。
??? 0x75的八進制寫法為___,十進制寫法為___。
??? 075的十進制寫法為___,十六進制寫法為___。
??? 答案: 0x4b?? 0113
????????? 0165?? 117
????????? 61???? 0x3d
11. 如果要把常量327存入變量a中,a可以定義成哪些類型?(多選)
??? A. int?????? B. char
??? C. long????? D. float
???
??? 答案: ACD
12. 下面哪些寫法是對的,而且是常量?(多選)
??? A. 125??? B.? -.456??? C. 1.25e20??? D. 'AB'
??? E. E6???? F.? 0238???? G. 0xabcdef?? H. "\n\\\'\123"
??? 答案: ABCGH
13. 下面哪個表達式的值為4.(單選)
?? A. 11/3?????????? B. 11.0/3
?? C. (float)11/3??? D. (int)(11.0/3+0.5)
?? 答案: D
14. 已知整型變量a=6,b=7,c=1,則下面表達式的值為多少?
?? a+3??????????????? ___
?? (b-a*3)/5????????? ___
?? c*(a+b)+b*(c+a)??? ___
?? 3.2*(a+b+c)??????? ___
?? 答案: 9
???????? -2???????
???????? 62
???????? 44.8
15. 已知整型變量a=6,字符型變量ch='A',浮點數變量f=2.1,則下面表達式的值為多少?
??? (提示:'A'的ASCII碼為65)
?? a+4.5??????? ___
?? ch+a+f?????? ___
?? (a+30)/5???? ___
?? (a+30)/5.0?? ___
??? 答案: 10.5
????????? 73.1
????????? 7
????????? 7.2
16. 指出下面錯誤的表達式:(多選)
?? A. a+b=5????????? B. 56=a11?? C. i=i++??
?? D. 5.6+6.2%3.1??? E. 12?????? F. a=5,b=6,c=7
?? 答案: BD
17. 若變量f已說明為float類型,i為int類型,則下面哪些表達式(或語句)能夠實現將f中的數值保留小數點后兩位,第三位進行四舍五入的運算?(多選)
??? A. f=(f*100+0.5)/100.0?????? B. i=f*100+0.5,f=i/100.0;
??? C. f=(int)(f*100+0.5)/100.0; D. f=(f/100+0.5)*100.0;
??? 答案: BC
18. 寫出下面這個程序的結果。
?? void main()
?? {
????? int count,i;
????? int x,y,z;
??
????? x=y=z=0;
????? scanf("%d",&count);
????? for(i=0;i<count;i++)
????? {
???????? x=(x+1)%2;
???????? y=(y+1)%3;
???????? z=(z+1)%5;
????? }
????? printf("x=%d,y=%d,z=%d\n",x,y,z);
?? }
?? 如果運行時輸入10, 結果是 x=___,y=___,z=___。
?? 如果運行時輸入17, 結果是 x=___,y=___,z=___。
?? 答案:0?? 1?? 0
???????? 1?? 2?? 2
19. 已知a為整型變量,那么與表達式 a!=0 真假值情況相同的表達式有哪些?(多選)
??? A. a>0||a<0??? B. a
??? C. !a==0?????? D. !a
??? 答案: ABC
20.若要輸出下列各種類型的數據,應使用什么轉換說明符。(答題請打上雙引號)
??? 字段寬度為4的十進制數應使用"%4d",字段寬度為6的十六進制數應使用___,八進制整數應使用___,字段寬度為3的字符應使用___,字段寬度為10,保留3位小數的實數應使用___,字段寬度為8的字符串應使用___。
??? 答案:"%6x"?? "%o"?? "%3c"?? "%10.3f"?? "%8s"
21. 該源程序執行后,屏幕上顯示什么?(單選)
?? void main()
?? {
????? int a;
????? float b;
????? a=4;
????? b=9.5;
????? printf("a=%d,b=%4.2f\n",a,b);
?? }
?? A. a=%d,b=%f\n??? B. a=%d,b=%f
?? C. a=4,b=9.50???? D. a=4,b=9.5
?? 答案: C
22. 下面哪些是非法的C語言轉義字符?(多選)
??? A. '\t'??? B. '\08'??? C. '\0xaf'?? D. '\\'???
??? 答案: BC
23. 以下程序輸入三個整數值給a,b,c,程序把b中的值給a,把c中的值給b,把a中的值給c,然后輸出a,b,c的值。請填空。
?? #include <stdio.h>
?? main()
?? {
????? ___
????? int temp;
????? printf("Enter a,b,c:");
????? scanf("%d%d%d",___);
????? ___
????? a=b;
????? b=c;
????? ___
????? printf("a=%d b=%d c=%d\n",a,b,c);
?? }
?? 答案: int a,b,c;
???????? &a,&b,&c
???????? temp=a;
???????? c=temp;
24. 若a為整型變量,且有以下語句___。(單選)
?? a=-017L;
?? printf("%d\n",a);
?? 則下面哪個說法是正確的?
?? A. 賦值不合法????? B. 輸出值為-17
?? C. 輸出為不確定值? D. 輸出值為-15
?? 答案: B
25. 若ch為char型變量,a為int型變量,(已知字符a的ASCII十進制代碼為97)則執行以下語句后的輸出為哪一個?(單選)
???
??? char ch;
??? int a;
??? ch='a';
??? a=12;
??? printf("%x,%o,",ch,ch,a);
??? printf("k=%%d\n",k);
??? A. 61,141,12,k=%d
??? B. 輸出項與格式描述符個數不符,輸出為零值或不定值
??? C. 61,141,k=%d
??? D. 61,141,k=%12
??? 答案: C
26. 若有以下說明語句:(單選)
??? char s='\\\092';
??? 則下面哪一項是正確的.
??? A. 使s的值包含2個字符??? B. 說明語句不合法
??? C. 使s的值包含6個字符??? D. 使s的值包含4個字符
??? 答案: B
27.若k,g均為int型變量,則以下語句的輸出為哪一項?(單選)
??? int k,g;
???
??? k=017;
??? g=111;
??? printf("%d,",k);
??? printf("%x\n",g);
???
??? A. 15,6f?? B. f,6f??? C. f,111??? D. 15,111
??? 答案: A
28. 請從下面的選項中選出正確的C語言的轉義字符。(多選)
???
??? A. '//'????? B. '\''????? C. '\t'?? D. '\n'
??? E. '\1011'?? F. '/018'??? G. '/123'?? H. '\xaa'
??? 答案:?? BCDH
29. 如這程序所示,如果運行時,輸入 18,18 ,那么 b的值為多少?(單選)
?? void main()
?? {
????? int a,b;
????? scanf("%d,%o",&a,&b);
????? b+=a;
????? printf("%d",b);
?? }
?? A. 36?? B. 34?? C. 輸入錯誤,b的值不確定?? D. 18
?? 答案: C
30. 讀懂程序并填空。
?? #include <stdio.h>
?? void main()
?? {
????? char ch=0x31;
????? printf("%d\n",ch);//屏幕顯示___
????? printf("%o\n",ch);//屏幕顯示___
????? printf("%x\n",ch);//屏幕顯示___
????? printf("%c\n",ch);//屏幕顯示___
?? }
??? 答案: 49
????????? 61
????????? 31
????????? 1
?
1.? C程序的結構可分為哪幾類?(多選)
??? A.順序結構
??? B.循環結構
??? C.程序結構
??? D.選擇結構
??? 答案: ABD
2.? 輸入兩個實數a,b,然后交換它們的值,最后輸出(提示:要交換兩個數得借助一個中間變量temp。首先讓temp存放a的值,然后把b存入a,再把temp存入b就完成了)。
?
?? void main()
?? {
????? float a,b,temp;
????? printf("請輸入a和b的值:");
????? scanf("%d,%d",___);
????? temp = a;
????? ___
????? ___
????? printf("交換后, a=%d , b=%d\n",___);
?? }
??? 答案: &a ,&b
????????? a = b;
????????? b = temp;
????????? a , b
3. 當a,b,c的值分別為3,4,5時,以下各語句執行后a,b,c的值為多少?
??????? (1)if(a>c)
?????????? {a=b;b=c;c=a;}
?????????? else
?????????? {a=c;c=b;b=a;}
??????????
?????????? 執行后a,b,c的值為___,___,___
??????? (2)if(a<c)
???????????? a=c;
?????????? else
???????????? a=b;c=b;b=a;
??????????
?????????? 執行后a,b,c的值為___,___,___
??????? (3)if(a!=c)
???????????? ;
?????????? else
???????????? a=c;c=b;b=a;
??????????
?????????? 執行后a,b,c的值為___,___,___
??? 答案: 5? 5? 4
????????? 5? 5? 4
????????? 3? 3? 4
4.? 當a=3,b=4,c=5時,寫出下列各式的值。
??? a<b的值為___, a<=b的值為___,
??? a==c的值為___, a!=c的值為___,
??? a&&b的值為___, !a&&b的值為___,
??? a||c的值為___, !a||c的值為___,
??? a+b>c&&b==c的值為___。
??? 答案: 1? 1
????????? 0? 1
????????? 1? 0
????????? 1? 1
????????? 0
5.? 假設所有變量均已說明,寫出下列各程序段運行后x的值。(多選)
??? ok1=1; ok2=2; ok3=0; x=15; a=3; b=4;
??? (1)if(!ok1)
???????? x++;
?????? else if(ok2)
?????? {
???????? if(ok3)
?????????? x=3;
???????? else??
?????????? x=4;
?????? }
??????
?????? 運行后x的值為下面哪一個?
?????? A. 15?? B. 3?? C. 16? D. 4
??? (2)if(ok1)
?????? {
???????? if(a<b)
???????? {
?????????? if(!ok3)
????????????? x=0;
?????????? else
????????????? x=1;
???????? }
???????? else
?????????? x=2;
?????? }
?????? else
???????? x=3;
??????
?????? 運行后x的值為下面哪一個?
?????? A. 0??? B. 1??? C. 2? D. 3
?????? 答案: D? A
?
6.? 若整數x分別等于95、87、100、43、66、79,則以下程序段運行后屏幕顯示是什么?
??? switch(x/10)
??? {
????? case 6:
????? case 7:
???????? printf("Pass\n");
???????? break;
????? case 8:
???????? printf("Good\n");
???????? break;
????? case 9:
????? case 10:
???????? printf("VeryGood\n");
???????? break;
????? default:
???????? printf("Fail\n");
??? }
??? x等于 95時,程序段運行后屏幕上顯示___
??? x等于 87時,程序段運行后屏幕上顯示___
??? x等于100時,程序段運行后屏幕上顯示___
??? x等于 43時,程序段運行后屏幕上顯示___
??? x等于 66時,程序段運行后屏幕上顯示___
??? x等于 79時,程序段運行后屏幕上顯示___
?
??? 答案: VeryGood??
????????? Good
????????? VeryGood
????????? Fail
????????? Pass
????????? Pass
7.? 在C語言的if語句中,用作判斷的表達式為___。(單選)
???
??? A. 關系表達式??????? B. 邏輯表達式
??? C. 算術表達式??????? D. 任意表達式
??? 答案: D
8.? 請問:下面這個程序段的輸出是什么?(單選)
??? int a,b,c;
??? a=7;b=8;c=9;
??? if(a>b)
?????? a=b,b=c;c=a;
??? printf("a=%d b=%d c=%d\n",a,b,c);
??? A. a=7 b=8 c=7???? B. a=7 b=9 c=7
??? C. a=8 b=9 c=7???? D. a=8 b=9 c=8
??? 答案: A
9. 該程序的運行結果是:(單選)
??? void main()
??? {
??????? int a,b,c;
??????? a=2;b=7;c=5;
??????? switch(a>0)
??????? {
??????? case 1:
?????????? switch(b<10)
?????????? {
????????????? case 1:printf("^");break;
????????????? case 0:printf("!");break;
?????????? }
??????? case 0:
?????????? switch(c==5)
?????????? {
????????????? case 0: printf("*");break;
????????????? case 1: printf("#");break;
????????????? default:printf("%%");break;
?????????? }
??????? default:
?????????? printf("&");
??????? }
??????? printf("\n");
??? }
??? A. ^#&???? B. ^?? C. &?? D. ^!*#%&
??? 答案: A
10. 該程序的輸出結果是多少?(單選)
??
??? m=37;n=13;
??? while(m!=n)
??? {
?????? while(m>n)
???????? m=m-n;
?????? while(n>m)
???????? n-=m;
??? }
??? printf("m=%d\n",m);
??? 輸出結果為:
??? A. m=13?? B. m=11
??? C. m=1??? D. m=2
??? 答案:C
11. 該程序的輸出結果是多少?(單選)
??
??? for(i=0;i<5;i++)
??? {
????? for(j=1;j<10;j++)
???????? if(j==5)
??????????? break;
????? if(i<2)
???????? continue;
????? if(i>2)
???????? break;
????? printf("%d,",j);
??? }
??? printf("%d\n",i);
??? 輸出結果為:
??? A. 10,3?? B. 5,2
??? C. 5,3??? D. 10,2
??? 答案:C
12. 該程序的輸出結果是什么?(單選)
? #include <stdio.h>
? void main()
? {
??? int n;?
??? n=0;
??? while(n<8)
??? {
????? switch(n%3)
????? {
????? case 2:
??????? putchar('2');
????? case 1:
??????? putchar('i');
??????? break;
????? case 0:
??????? putchar('H');
????? }
????? n++;
??? }
? }
??? A. Hi2Hi2Hi? B. Hi2
??? C. Hi2iHi2i? D. Hi2iHi2iHi
??? 答案: D
13. 該程序的輸出結果是多少?(單選)
?? #include <stdio.h>
?? main()
?? {
????? int i,j,x=0;
????? for(i=0;i<2;i++)
????? {
???????? x++;
???????? for(j=0;j<=3;j++)
???????? {
??????????? if(j%2)
?????????????? continue;
??????????? x++;
???????? }
????? }
????? printf("x=%d\n",x);
?? }
?? A. x=4??? B. x=8??? C. x=6??? D. x=12
?? 答案:? B
14. 若k為整型,以下while循環執行___次.(單選)
??? k=2;
??? while(k=0)
????? printf("%d",k),k--;
??? printf("\n");
??? A. 無限次?? B. 0次?? C. 1次?? D. 2次
??? 答案: D
15. 下面這個程序的輸出是什么?(單選)
?? #include <stdio.h>
?? main()
?? {
????? int y=10;
????? while(y--);
????? printf("y=%d\n",y);
?? }
?? A. y=0??? B. while構成死循環?? C. y=1?? D. y=-1
?? 答案: D
16. 以下程序從讀入的整數數據中,統計大于零的整數個數和小于零的整數個數.用輸入零來結束輸入,程序中用變量i統計大于零的整數個數,用變量j統計小于零的整數個數.請填空.
?? #include <stdio.h>
?? main()
?? {
????? ___ n,i,j;
??
????? printf("輸入非零的整數(輸入零結束程序)");
????? i=j=0;
????? scanf("%d",&n);
????? while___
????? {
???????? if(n>0)
??????????? i=___;
???????? if(n<0)
??????????? j=___;
???????? ___;
????? }
????? printf("i=%4d j=%4d\n",i,j);
?? }
?? 答案: int
???????? (n!=0)
???????? i+1
???????? j+1
???????? scanf("%d",&n)
17. 圓周率pi的近似率可用下面的公式求得:
???? pi*pi/6 約等于 1/(1*1) +1/(2*2) +...+1/(n*n)
??? 由以上公式可知,若n取值10000,則最后一項的值為1E-4,認為可達到精度要求。?? 以下程序用來求pi的近似值。請填空。(其中函數sqrt(a)用于求a的平方根)(單選)
?? #include <stdio.h>
?? #include <math.h>
?? main()
?? {
????? long i;
????? float pi;
??
????? pi=0.0;
????? for(i=1;i<=10000;i++)
???????? pi+=___;
????? pi=sqrt(6.0*pi);
????? printf("pi=%10.6lf\n",pi);
?? }
??? A. 1/i*i??? B. 1/(i*i)??? C. 1.0/i*i?? D. 1.0/(i*i)
??? 答案: D
18. 斐波哪契數列中的頭兩個數是0和1,從第三個數開始,每個數等于前兩個數的和,即:0,1,1,2,3,5,8,13,21,...等。下面這個程序就是求斐波哪契數列的前20個數。請填空。
?? #include <stdio.h>
?? void main()
?? {
?????? int f,f1,f2,i;
?????? f1=0;f2=___;
?????? printf("%d\n%d\n",f1,f2);
?????? for(i=3;i<=30;___)
?????? {
????????? f=___;
????????? printf("%d\n",f);
????????? f1=f2;
????????? f2=___;
?????? }
?? }
??? 答案: 1
????????? i++
????????? f1+f2
????????? f
19. 下面這個程序執行后i和s的值為多少?(單選)
#include <stdio.h>
void main()
{
??? int i,s;
??? i=0;s=0;
??? while(i<10);
??? {
??????? s+=(i++);
??????? printf("%d\n",s);
??? }
??? printf("i=%d\n",i);
}
??? A. i值為9,s值為45?? B. i值為10,s值為45
??? C. i值為10,s值為36? D. 程序陷入了死循環
??? 答案:? D
20. 下面這個程序打印出以下這個三角形.請填空。
0
11
222
3333
44444
555555
6666666
77777777
888888888
9999999999
?? void main()
?? {
????? int i,j;
????? for(i=0;i<=___;i++)
????? {
???????? for(j=0;j<___;j++)
???????????? printf(___);
???????? ___
????? }
?? }
?? 答案: 9
???????? i
???????? "%d",i
???????? printf("\n");
21. 讀懂下面的程序并填空。
?? #include <stdio.h>
?? void main()
?? {
????? long a,b,r;
?
????? scanf("%ld",&a);
????? b=0;
????? do{
???????? r=a%10;
???????? a=a/10;
???????? b=b*10+r;
????? }while(a);
????? printf("%ld",b);
?? }
??? 程序運行時如果輸入 37?? , 輸出為___。
??? 程序運行時如果輸入 -345 , 輸出為___。
??? 程序運行時如果輸入 10239, 輸出為___。
??? 答案: 73
????????? -543
????????? 93201
22. 如圖所示,該算式在四個字母所在處欠缺四個數位,下面這個程序用窮舉法搜尋解法。請填空。
??? 1A8??
?? * 3B??
_________
?? C73D??
#include <stdio.h>
void main()
{
? int A,B,C,D;
? int x,y,z;
? for(A=1;A<=9;A++)
??? for(B=1;B<=9;B++)
????? for(C=1;C<=9;C++)
??????? for(D=1;D<=9;D++)
??????? {
????????? x=100 + ___ + 8;
????????? y=___;
????????? z=___+700 +30 +___;
????????? if(___)
??????????? printf("A=%d,B=%d,C=%d,D=%d\n",
??????????????? A,B,C,D);
??????? }
}
??? 答案:A*10
???????? 30+B
???????? C*1000
???????? D
???????? x*y==z
1. 請改正下面這個遠程序的錯誤:
#include <stdio.h>
main()
{
?? int i,j,list(10);
?? for(i=0,i<10,i++)
?? {
?????? list[i] = 2*i+3;
?????? for(j=9,j>=0,j--)
????????? printf("%d\n",list[j]);
?? }
}
??? 答案: int i,j,list(10); 改為 int i,j,list[10];
????????? for(i=0,i<10,i++) 改為 for(i=0;i<10;i++)
????????? for(j=9,j>=0,j--) 改為 for(j=9;j>=0;j--)
2.? 指出下面各說明語句中哪些是合法的:(多選)
??? A. int abcd[0x80];???? B. char 9ab[10];
??? C. char chi[-200];???? D. int aaa[5]={3,4,5};
??? E. float key[]={3.0,4.0,1,0};??? F. char disk[];
??? G. int n,floppy[n];????? H. int cash[4]={1,2,3,4,5,6};
??? 答案: ADE
3.根據以下說明,寫出正確的說明語句。
??? (1)men是一個有10個整型元素的數組。
?????? ___
??? (2)step是一個有4個實型元素的數組,元素值分別為1.9, -2.33, 0, 20.6。
?????? ___
??? (3)grid是一個二維數組,共有4行,10列整型元素。
?????? ___
??? 答案: int mesh[10];
????????? float step[4] = {1.9, -2.33, 0, 20.6};
????????? int grid[4][10];
4.? 請回答下列問題。
??? (1)array是一個一維整形數組,有10個元素,前6個元素的初值是9,4,7,49,32,-5,請寫出正確的說明語句。
?????? ___
??? (2)該數組下標的取值范圍是從___到___(從小到大)。
??? (3)如何用scanf函數輸入數組的第二個元素。
?????? ___
??? (4)如何用賦值語句把39存入第一個元素。
?????? ___
??? (5)如何表示把第六個和第四個元素之和存入第一個元素。
?????? ___
??? 答案:? int array[10] = {9,4,7,49,32,-5};
?????????? 0?? 9
?????????? scanf("%d",&array[1]);
?????????? array[0] = 39;
?????????? array[0] = array[5] + array[3];
5.? 寫出以下初始化數組的長度。
??? (1)int chn[3];
?????? 數組chn的長度為___。
??? (2)float isa[]={1.0,2.0,3.0,4.0,5.0};
?????? 數組isa的長度為___。
??? (3)int doom[8];
?????? 數組doom的長度為___。
??? (4)float pci[4][2];
?????? 數組pci的長度為___。
??? (5)int ast[3][3];
?????? 數組ast的長度為___。
??? (6)int att[3][4];
?????? 數組att的長度為___。
??? (7)float dell[][3]={{1,4,7},{2,5},{3,6,9}};
?????? 數組dell的長度為___。
??? 答案: 6
????????? 20
????????? 16
????????? 32
????????? 18
????????? 24
????????? 36
6.? 這個程序輸入了20個數存放在一個數組中,并且輸出其中最大者與最小者、,20個數的和及它們的平均值。請填空。
??? void main()
??? {
??????? char array___;
??????? int max,min,average,sum;
??????? int i;
???
??????? for(i=0;i<___;i++)
??????? {
?????????? printf("請輸入第%d個數:",i+1);
?????????? scanf("%d",___);
??????? }
??????? max=array[0];
??????? min=array[0];
??????? for(i=0;i<=___;i++)
??????? {
?????????? if(max<array[i])
????????????? ___
?????????? if(min>array[i])
????????????? ___
?????????? sum=___;
??????? }
??????? average = ___;
??????? printf("20個數中最大值是%d,",max);
??????? printf("最小值是%d,",min);
??????? printf("和是%d,",sum);
??????? printf("平均值是%d.\n",average);
??? }
??? 答案: [20]
????????? 20
????????? &array[i]
????????? 19
????????? max=array[i];
????????? min=array[i];
????????? sum+array[i]
????????? sum/20
?????????
7.? 該程序的運行結果是: min=___,m=___,n=___。
??? void main()
??? {
????? float array[3][4]={
?????????? {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 = array[0][0];
??????? m=0;n=0;
??????? for(i=0;i<3;i++)
??????? for(j=0;j<4;j++)
????????? if(min > array[i][j])
????????? {
??????????? min = array[i][j];
??????????? m=i;n=j;
????????? }
??????? printf("min=%d,m=%d,n=%d\n",min,m,n);
??? }
??? 答案: -5.77? 1?? 2
8. 下面的程序中哪一行有錯誤?(單選)
#include <stdio.h>
main()
{
?? float array[5]={0.0};???????? //第A行
?? int i;
?? for(i=0;i<5;i++)
????? scanf("%f",&array[i]);
?? for(i=1;i<5;i++)
????? array[0]=array[0]+array[i];//第B行
?? printf("%f\n",array[0]);????? //第C行
}
??? A. 第A行? B. 第B行??
??? B. 第C行? D. 沒有
??? 答案: D
9. 若有以下整型的a數組,數組元素和它們得值如下所示:
?? 數組元素:? a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
?? 元素的值:? 9??? 4??? 12?? 8??? 2??? 10?? 7??? 5??? 1??? 3
??? (1)請寫出對該數組的說明,并賦以上初值。
?????? ___
??? (2)該數組的最小下標值為___,最大下標值為___。
??? (3)寫出下面各式的值:
???????? a[a[9]]的值為___
???????? a[a[4]+a[8]]的值為___
??? 答案: int a[10]={9,4,12,8,2,10,7,5,1,3};
????????? 0??? 9
????????? 8
????????? 8
?????????
10. 寫出下面這個程序的輸出結果:
void main()
{
? char str[]="ABCDEFGHIJKL";
? printf("%s\n",str);?????? 屏幕上顯示___
? printf("%s\n",&str[4]);?? 屏幕上顯示___
? str[2]=str[5];
? printf("%s\n",str);?????? 屏幕上顯示___
? str[9]='\0';
? printf("%s\n",str);?????? 屏幕上顯示___
}
??? 答案: ABCDEFGHIJKL
????????? EFGHIJKL
????????? AFCDEFGHIJKL
????????? AFCDEFGHI
11. 字符串"ab\n\\012/\\\""的長度為___。
??? 答案: 10
12. 下面哪一項是不正確的字符串賦值或賦初值的方式。(單選)
??? A. char *str; str="string";
??? B. char str[7]={'s','t','r','i','n','g'};
??? C. char str1[10];str1="string";
??? D. char str1[]="string",str2[]="12345678";
??? 答案: C
13. 若有以下說明和語句,則輸出結果是哪一項?(單選)
??? (strlen(s)為求字符串s的長度的函數)
??? char s[12]="a book!";
??? printf("%d",strlen(s));
??? A. 12?? B. 8?? C. 7?? D. 11
??? 答案: C
14. 若有以下說明和語句,則輸出結果是___。(單選)
??? (strlen(s)為求字符串s的長度的函數)
??? char sp[]="\t\v\\\0will\n";???
??? printf("%d",strlen(sp));
??? A. 14??? B. 3??? C. 9??? D. 字符串中有非法字符
??? 答案: B
15. 若有以下說明和語句,則輸出結果是___。(單選)
??? char str[]="\"c:\\abc.dat\"";
??? printf("%s",str);
??? A. 字符串中有非法字符???? B. \"c:\\abc.dat\"
??? C. "c:\abc.dat"?????????? D. "c:\\abc.dat"
??? 答案: C
16. 讀懂下面的程序并填空。
void main()
{
?? char str[80];
?? int i=0;
?? gets(str);
?? while(str[i]!=0)
?? {
????? if(str[i]>='a'&&str<='z')
??????? str[i]-=32;
????? i++;
?? }
?? puts(str);
}
?? 程序運行時如果輸入 upcase, 屏幕顯示___
?? 程序運行時如果輸入 Aa1Bb2Cc3, 屏幕顯示___
?? 答案: UPCASE
???????? AA1BB2CC3
1. 分析下面的程序,并寫出運行結果。
#include <stdio.h>
int max(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(a>b)
??? return(a);
? else
??? return(b);
}
??? 運行時若輸入:10,15,9? 則輸出:___
??? 運行時若輸入:300,129,300? 則輸出:___
??? 答案:15
????????? 300
2. 分析下面的程序,并寫出運行結果。
#include <stdio.h>
long sum(int a,int b);
long factorial(int n);
main()
{
? int n1,n2;
? long a;
?
? scanf("%d,%d",&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? 則輸出:___
??? 運行時若輸入:0, 5? 則輸出:___
??? 答案:8
????????? 121
3. 分析下面的程序,并寫出運行結果。
#include <stdio.h>
int s();
int x,y;
main()
{
?int n;
?x=1;y=2;
?n=s();
?printf("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
4.? C語言可執行程序從什么地方開始執行?(單選)
??? A. 程序中第一條可執行語句??? B. 程序中第一個函數
??? C. 程序中的main函數????????? D. 包含文件中的第一個函數
??? 答案: C
5. 有一個函數原型如下所示:(單選)
????? abc(float x,float y);
?? 則該函數的返回類型為___。
?? A. void?? B. double?? C. int?? D. float
?? 答案: C
6. 以下程序的輸出結果是___。(單選)
#include <stdio.h>
int func(int a,int b);
void main()
{
?? int k=4,m=1,p;
?? p=func(k,m);
?? printf("%d,",p);
?? p=func("%d\n",p);
}
int func(int a,int b)
{
?? static int m=0,i=2;
?? i+=m+1;
?? m=i+a+b;
?? return(m);
}
??? A. 8,17??? B. 8,16??? C. 8,20??? D. 8,8
??? 答案: A
7. 以下程序的輸出結果是a=___,b=___,c=___。
#include <stdio.h>
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.? 在C語言程序中,下面哪一個是正確的?(單選)
??? A. 函數的定義可以嵌套,但函數的調用不可以嵌套
??? B. 函數的定義不可以嵌套,但函數的調用可以嵌套
??? C. 函數的定義可以嵌套,函數的調用也可以嵌套
??? D. 函數的定義和函數的調用都不可以嵌套
??? 答案: B
9. 下面哪些是定義局部變量儲存類別的保留字?(多選)
??? A. int?? B. auto??? C.static??? D.float
??? E. register? F.extern? G. unsigned H.signed
??? 答案: BCE
10. 下面這個函數的功能是求兩個整數的積,并通過形參傳回結果。請填空。
void mul(___x,___y,___result)
{
?? ___=x*y;
}
??? 答案:int?? int?? int*
???????? *result
?
?
?
1.對于類型相同的指針變量,不能進行哪種運算?(單選)
??? A. +?? B. -?? C. =?? D. ==
??? 答案: A
2. 若有以下說明和語句,且0<=i<10, 則下面哪個是對數組元素的錯誤引用?(單選)
int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i;
p=a;
??? A. *(a+i)??? B. a[p-a]?? C. p+i?? D. *(&a[i])
??? 答案: C
3. 若有以下說明和語句,且0<=i<10,則下面哪個是對數組元素地址的正確表示?(單選)
??? int a[]={1,2,3,4,5,6,7,8,9,0}, *p,i;
??? p=a;
?? A. &(a+1)??? B. a++??? C. &p??? D. &p[i]
??? 答案: D
4. 以下程序的輸出結果是___。
#include <stdio.h>
main()
{
?? int a[]={1,2,3,4,5,6},*p;
?? p=a;
?? *(p+3)+=2;
?? printf("%d,%d\n",*p,*(p+3));
}
?? A. 0,5?? B. 1,5?? C. 0,6?? D. 1,6
?? 答案: D
5. 以下程序的輸出結果是哪一項?(單選)
#include <stdio.h>
main()
{
?? int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;
?? for(i=0;i<4;i++)
????? p[i]=&a[i*3];
?? printf("%d\n",p[3][2]);
}
??? A. 輸出項不合法??? B. 6
??? C. 8?????????????? D. 12
??? 答案: D
6. 如果有以下的定義:(多選)
struct person
{
?? char name[20];
?? int age;
?? char sex;
};
struct person a={"xiao min",20,'m'},*p=&a;
則對字符串"li ning"的引用方式可以是下面哪些?
?? A. (*p).name??? B. p.name??? C. a.name?? D. p->name
?? 答案: ACD
7. 下面哪些定義的結構在內存分配是等價的。(單選)
??
?? (1)struct abc{
??????? char x;
??????? char y;
??????? int data;
????? };
?? (2)struct abc{
??????? char x,y;
??????? int data;
????? };
?? (3)struct abc{
??????? int data;
??????? char x;
??????? char y;
????? };
??? A. (1)和(2)?? B. (2)和(3)
??? C. (1)和(3)?? D. (1)(2)和(3)
??? 答案: A
8. 若有以下說明和語句,, 則p1-p2的值為多少?(單選)
int a[10], *p1, *p2;
p1=a;
p2=&a[5];
??? A. 5?? B. 6?? C. 10?? D. 沒有指針與指針的減法
??? 答案: A
9. 讀懂源程序,并寫出正確結果。
#include <stdio.h>
struct stustruct{
? char name[10];
? int score[3];
};
?
void main()
{
?? struct stu student={
????????? "xiaowang",
????????? {99,87,90}
?? };
?? struct stu *p1=&student;
?? int *p2=student.score;
?? printf("%d\n",student.score[0]);//屏幕顯示___
?? printf("%s\n",p1->name);??????? //屏幕顯示___
?? printf("%d\n",p2[2]);?????????? //屏幕顯示___
?? printf("%d\n",*(p2+1));???????? //屏幕顯示___
}
??? 答案:99
???????? xiaoming
???????? 90
???????? 87
10. 已知有以下的說明,
int a[]={8,1,2,5,0,4,7,6,3,9};
??? 那么a[*(a+a[3])]的值為___.
??? 答案: 0
11. 已知有以下的說明,那么執行語句a=p+2;后, a[0]的值等于多少?(單選)
float a[3]={1.2,45.6,-23.0};
float *p=a;
??? A. 1.2???? B. 45.6
??? C. -23.0?? D. 語句有錯
??? 答案: D
1. 如果想把一些新的數據添加到文件xh.txt中,則應該以下面哪一種方式打開文件?(單選)
?? A. fp=fopen(xh.txt,"a");???? B. fp=fopen("xh.txt",a);
?? C. fp=fopen("xh.txt","a");?? D. fp=fopen("xh.txt",'a');
??? 答案:C
2.? 如果要把一個字符'A'寫入文件指針fp所指定的文件里,應該如何寫?
??? ___
??? 如果要把一個字符串"Hello!"寫入文件指針fp所指定的文件里,應該如何寫?
??? ___
??? 如果要把兩個整數23和567以ASCII碼方式寫入文件指針fp所指定的文件里,且整數之間以一個空格相隔,應該如何寫?
??? ___
??? 答案: fputc('A',fp);
????????? fputs("Hello!",fp);
????????? fprintf(fp,"%d %d",23,567);
???
3.? 如果有三個整數以ASCII碼方式寫入了文件指針fp所指定的文件里,且整數之間以逗號相隔。
??? 問:用a,b,c三個整形變量來獲取這三個整數,該如何寫?
??? ___
??? 答案: fscanf(fp,"%d,%d,%d",&a,&b,&c);
4. 一個abc.dat文件內容如下:
?????? 0123456789abcdefABCDEF
??? 一個對abc.dat文件進行操作的程序如下:
#include <stdio.h>
void main()
{
? FILE *fp;
? char ch;
? char str[15];
? fp=fopen("abc.dat","rb");
? if(fp!=NULL)
? {
??? fseek(fp,2,SEEK_SET);
??? fgetc(fp);
??? fgetc(fp);
??? fgets(str,15,fp);
??? fseek(fp,-4,SEEK_CUR);
??? fgetc(fp);
??? fseek(fp,4,SEEK_CUR);
??? ch=fgetc(fp);
??? printf("ch=%c",ch);
??? fclose(fp);
? }
}
?? 程序運行的結果是ch為字符___。
??? 答案: D
5.? 調用fopen函數以文本方式打開文本文件aaa.txt如下
??? FILE *fp=fopen("aaa.txt",___);
??? 如果為了輸出而打開應在空白處填入___,
??? 如果為了輸入而打開應在空白處填入___,
??? 如果為了追加而打開應在空白處填入___。
??? 答案: "r"
????????? "w"??
????????? "a"
6.? 下面哪條語句是從文件中讀取一個字符?(單選)
??? A. ch=getc();???????? B. fputc(ch,fp);
??? C. fscanf("%c",&ch);? D. scanf("%c",&ch);
??? 答案: C
7. 有5個學生的成績需要保存在文件score.dat文件中。保存格式如下:
?????? 學生姓名,年齡,成績<CR>
?????? 學生姓名,年齡,成績<CR>
?????????? ...
?????????? ...
??? 請完成下面這段源程序。
void main()
{
??? FILE *fp;
??? int i;
??? char name[80];
??? int age;
??? float score;
??? fp=fopen(___,"w");
??? for(i=0;i<5;i++)
??? {
?????? printf("請輸入第%d個學生的信息\n",___);
?????? printf("姓名:");
?????? scanf(___);
?????? printf("年齡:");
?????? ___
?????? printf("成績:");
?????? ___
?????? fprintf(fp,___,name,age,score);
??? }
??? ___
}
?? 答案: "score.dat"
???????? i
???????? "%s",name
???????? scanf("%d",&age);
???????? scanf("%f",&score);
???????? "%d,%d,%f\n"
???????? fclose(fp);
8. C語言中的文件類型如何劃分?(單選)
?? A. 索引文件和文本文件兩種
?? B. ASCII文件和二進制文件兩種
?? C. 只有文本文件一種
?? D. 只有二進制文件一種
?? 答案: B
9. 下面這個程序將用戶從鍵盤輸入的字符寫入keyb.dat文件中,當鍵入字符'!'時,結束輸入,把'!'寫入文件后關閉文件,程序結束。
?? 請找出錯誤。
#include <stdio.h>
void main()
{
? char ch;
? FILE *fp;
? fp=fopen("keyb.dat","wb");
? do
? {
??? ch=getchar();
??? fprintf(fp,"%c",ch);
? }while(ch!='!')
? close(fp);
}
?
??? 答案:? }while(ch!='!') 改為 while(ch!='!');
?????????? close(fp); 改為 fclose(fp);
?
1.下面這個程序的作用是統計公元1年到公元2000年的閏年個數。判斷閏年的方法是:能被400整除的年是閏年;除能被400整除的年以外,凡是能被4整除,但不能被100整除的年是閏年。其余年份是平年。請填空。
#include <stdio.h>
void main()
{
? int year;
? int count=0;
? for(year=0;year<=2000;year++)
??? if( (_____)
???????? ||( year%4==0 && ____) )
????? ____;
?
? printf("%d",count);
}
??? 答案:year%400==0
????????? year%100!=0
????????? count++
2. 讀懂程序并填空。
#include <stdio.h>
void main()
{
? int digit_num=0;
? int letter_num=0;
? int other_num=0;
? char ch;
? while(1)
? {
??? ch=getchar();
??? if(ch=='!')
????? break;
??? if(ch>='0'&&ch<='9')
????? digit_num++;
??? else if( (ch>='A'&&ch<='Z')
????????? ||(ch>='a'&&ch<='z') )
????? letter_num++;
??? else
????? other_num++;
? }
? printf("The number of digit? is %d\n",digit_num);
? printf("The number of letter is %d\n",letter_num);
? printf("The number of other? is %d\n",other_num);
}
??? 程序運行時如果輸入:
??????? 123adfhd^%234FDG%34%hJK+!_AAAD!<回車>
??? 最后,變量 digit_num的值為___,
???????? 變量letter_num的值為___,
???????? 變量 other_num的值為___。
??? 答案: 8
????????? 11
????????? 5
3. 下面這個程序要求用戶輸入兩個整數和一個字符。字符必須是'+'、'-'、'*'、'/'其中的一個。然后程序輸出兩數作相應運算的結果。
??? 例如:輸入 123,34,+? 程序輸出 123+34=157。請填空。
#include <stdio.h>
void main()
{
?? float d1,d2,result;
?? char op;
?? int error=0;
?? scanf("%f,%f,%c",&d1,&d2,&op);
?? switch(op)
?? {
?? case '+':result=___;break;
?? case '-':result=___;break;
?? case '*':result=___;break;
?? case '/':result=___;break;
?? default :error=1;
?? }
?? if(error)
???? printf("運算操作符輸入有錯!");
?? else
???? printf("%.2f%c%.2f=%.2f\n",___);
}
??? 答案: d1+d2
????????? d1-d2
????????? d1*d2
????????? d1/d2
????????? d1,op,d2,result
4. 除1外,只能被1和自己本身整除的自然數叫素數。下面這個程序就是求2到100之間的素數。其中判斷某數為素數的方法為用2到該數平方根之間的自然數去試整除該數。如果沒有哪個數能夠整除該數,那么該數為素數;如果有,那么時合數。請填空。
?? (函數sqrt(a)求a的平方根)
#include<math.h>
#include <stdio.h>
void main()
{
?? int i,j,k;
?? int flag;
?? for(i=2;i<=___;i++)
?? {
???? flag=1;
???? k=(int)sqrt(i);
???? for(j=2;j<___;j++)
?????? if(___==0)
?????? {
???????? flag=0;
???????? break;
?????? }
???? if(flag)
?????? printf("%d\n",i);
?? }
}
??? 答案:100
???????? k
???????? i%j
5.如圖所示為數學上的楊暉三角形,它的規律是:
???? 1.每一行的首尾列都是1。
???? 2.每一行的第i列(除首尾列外)是上一行的第i-1列與上一行的第i列的和。
1
1?? 1
1?? 2?? 1
1?? 3?? 3?? 1
1?? 4?? 6?? 4?? 1
1?? 5? 10? 10?? 5?? 1
1?? 6? 15? 20? 15?? 6?? 1
?? 下面這個程序打印了10層楊暉三角形,請填空。
#include <stdio.h>
#define LAYER??? 10
#define LAYER_1? (LAYER+1)
#define NUM? ( LAYER_1 * (LAYER_1 /2) )
void main()
{
?? int array[NUM],*p[LAYER],i,j,pos;
?? for(i=0;i<LAYER;i++)
?? {
????? pos= i*(i+1)/2;
????? p[i]=&array[pos];
?? }
?? for(i=0;i<LAYER;i++)
????? p[i][0]=p[i][i]=___;
?? for(i=2;i<LAYER;i++)
????? for(j=1;j<i;j++)
???????? p[i][j]=___;
?? for(i=0;i<LAYER;i++)
?? {
????? for(j=0;j<=i;j++)
??????? printf("%5d",___);
????? printf("\n");
?? }
??
}
??? 答案: 1
????????? p[i-1][j-1]+p[i-1][j]
????????? p[i][j]
6.? 當程序輸入0 -5 3時,程序依次輸出哪三個數? ___、___、___
??? 如果把SIZE改成5,輸入89,34,25,-1,22,程序依次輸出哪五個數? ___、___、___、___、___
#include <stdio.h>
#define SIZE? 3
void swap(int *a,int *b);
void main()
{
? int data[SIZE];
? int i,j;
?
? for(i=0;i<SIZE;i++)
??? scanf("%d",&data[i]);
? for(i=0;i<SIZE-1;i++)
??? for(j=i+1;j<SIZE;j++)
????? if(data[i]>data[j])
??????? swap(&data[i],&data[j]);
? for(i=0;i<SIZE;i++)
??? printf("%d? ",data[i]);
}
void swap(int *a,int *b)
{
? int temp;
? temp=*a;
? *a=*b;
? *b=temp;
}
??? 答案: -5? 0? 3
????????? -1? 22? 25? 34? 89
?
?
7.? 請選擇您認為正確的說法。
??? A.在C語言中,函數可以嵌套定義。
??? B.程序中的注釋部分可有可無,通常可以省略。
??? C.在函數中,只能有一條return語句。
??? D.C程序中,會檢查數組下標是否越界。
??? E.在C程序中,ABC和abc是兩個不同的變量。
??? F.在C語言中,函數中的變量可以賦初值,每調用一次該函數,就賦一次初值。
??? G.C語言中不能對數組名進行加減和賦值運算。
??? 答案: BEG
雖然這已經是很古老的東西了,但是還是留起來,做個紀念。。。