admin 管理员组文章数量: 1087139
2023年12月16日发(作者:datetime是python的标准库吗)
第一章 C语言程序设计概述习题
1.
C语言程序的基本结构是【 】。
2.
3.
4.
5.
6.
A) 函数 B) 语句 C) 字符 D) 程序行
下列四个叙述中,正确的是【 】
A)在C程序中,主函数必须位于其他函数的最前面
B)在C程序中,一行只能写一条语句
C)C程序的基本结构是程序行
D)C语句是完成程序功能的最小单位
C语言规定,在一个C程序中,main()函数的位置是【 】
A) 必须在开始 B) 必须在最后
C) 可以任意 D) 必须在系统调用的库函数之后
以下叙述中,正确的是【 】 。
A) C语言程序总是从第一个定义的函数开始执行 .
B) C语言程序中,要调用的函数必须在main()函数中定义
C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分
在C语言提供的合法的关键字是【 】
A) switch B) cher C) Case D) FLOAT
以下用户标识符,其中合法的是【 】
A) For B) 4d C) f2.G3 D) _f#
第2章 数据类型、运算符和表达式习题
1. int x=43, y=0; char ch=‘A’;则表达式x*y+ch-‘B’的值是【 】。
2.
3.
4.
5.
6.
7.
8.
A) 43 B) 65 C) 1 D) 0
在C语言中,合法的字符常量是【 】
A) '084' B) 'x43' C) 'ab' D) "0"
若已定义: int x=5.5,y; 则表达式y=2.75+x/2的值是【 】。
A) 5.5 B) 5 C) 4 D) 4.0
a=2为整型变量,(a+‘E’-‘A’)*3表达式的值是【 】。
A) 18 B) 12 C) 8 D) 20
表达式5/2的值是【 】。
A)2.5 B) 2 C) 3 D) 1
设y=z=4,则表达式x=y==z的值为【 】。
A)4 B) –4 C) 1 D) 0
设int a,b;则表达式a=2,b=++a*2的值为【 】。
A)6 B) 4 C) 8 D) 2
列四组数据类型中,C语言允许的一组是【 】
A) 整型、实型、逻辑型,双精度型
B) 整型、实型、字符型,无值类型
C) 整型、双精度型、布尔型,无值类型
9.
10.
11.
12.
D) 整型、实型、复型、字符型
以下能正确定义变量a, b和c并为它们赋值的语句是【 】
A) int a=5; b=5; c=5;
B) int a,b,c=5;
C) a=5,b=5,c=5;
D) int a=5, b=5, c=5;
C语言所提供的五种基本数据类型包括:字符型、整型、双精度型、浮点型和【 】。
A) 指针型 B) 结构型 C) 数组型 D) 无值类型
设变量a为整型,f为实型,i为双精度型,则表达式10+‘a’+i*f 的数据类型是【 】。
A) int型 B) float 型 C) double型 D) 不确定
若有定义: int x=3, y=2; float a=2.5, b=3.5; 则表达式(x+y)%2+(int)a/(int)b的值是【 】。
A) 0 B) 2 C) 1.5 D) 1
13. 若d为double型, 表达式 d=1, d+5, d++ 的值是【 】。
A) 1 B) 6.0 C) 2.0 D) 1.0
14. 设int a=1, d=4;float b=2.0, c=3.0, 则表达式: a+b*c-d%2 的值是【 】。
A) 5 B) 6 C) 5.0 D) 6.0
15. 下列运算符中,优先级最高的是【 】。
A) * B) ++ C) + D) /=
16. 若希望当整型变量A的值为5时, 表达式的值为1, 则下面不能满足要求的表达式是【 】。
A) A/2-1 B) A%2 C)(A-2)/2 D) (A+3)%2
17. a、b均为整数, 且b≠0, 则表达式 a/b*b+a%b的值是【 】。
A) a B) b C) a被b除的余数部分 D) a被b除商的整数部分
18. 设x、y、z、s均为int型变量,且初值均为1,则执行语句s=(++x)+(++y)-(++z);后, s的值为【 】。
A) 3 B) 6 C) 4 D) 5
19. 若已定义: int x=5.5,y; 则表达式y=2.75+x/2的值是【 】。
A) 5.5 B) 5 C) 4 D) 4.0
20. 若已定义int a; 则表达式 a=10, a+10, a++的值是【 】。
A) 20 B) 10 C) 21 D) 11
21. 已知 int x=4, y=-1; char ch=‘A’; 则表达式(x-y+ch-‘B’-y) 的值是【 】。
A) 2 B) 1 C) 3 D) -2
22. 下列运算符中,运算优先级最低的是【 】。
A) -- B) / C) + D) -=
23. 若给定表达式 2.5+3/2-7%2,则与表达式的值是【 】。
A) 2 B) 1 C) 2.5 D) 2.0
24. 已定义int a;则表达式 a=10,a+10,a++的值是【 】。
A) 20 B) 10 C) 21 D) 11
25. 错误的转义字符是 【 】
A) '091' B) '' C) '0' D) '''
26. 设int a,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a, b和c的值分别是 【 】
A) 2, 1, 2 B) 2, 0, 3 C) 2, 2, 3 D) 2, 1, 3
27. 在C语言中,合法的长整型常数是【 】
A) 0L B) 49627 C) 324562& D) 216D
28. 假定x和y为double型,则表达式x=2,y=x+3/2的值是【 】
A) 3.500000 B) 3 C) 2.000000 D) 3.000000
29. 以下合法的赋值语句是【 】
A) x=y=100 B) d--; C) x+y; D) c=int(a+b);
30. 若能x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后x的值是【 】
A) 4 B) 16; C) 32 D) 52
31. 下面均是合法整型常量的是【 】。
A) 160 B) -0xcdf C) -01 D) -0x48a
-0xffff 01a 986.12 2e5
012 0xe 0668 0x
32. 下面不正确的字符串常量是【 】。
A) ‘abc’ B) “12’12” C) “0” D) “ ”
33. 符合语法的赋值表达式是【 】。
A) d=9+e+f=d+9 B) d=9+e,f=d+9 C) d=9+e,e++,d+9 D) d=9+e++=d+7
34. 要求运算数必须是整型的运算符是【 】。
A) / B) + C) % D) ++
35. 设变量a为整型,f为实型,i为双精度型则表达式a+i*f值的数据类型是【 】。
A) int B) float C) double D) 不确定
36. 在C语言中,char型数据在内存中的存储形式是【 】。
A) 补码 B) 反码 C) 原码 D) ASCII码
37. 正确标识符符是【 】。
A) 4d B) if C) Int D) AS$
38. 若有定义int b=7;float a=2.5,c=4.7 则表达式 a+(int)(b/3*(int)(a+c)/2)%4的值为【 】。
A) 5.5 B) 5 C) 6.5 D) 6
39. 有定义int a=2,b=3,c=10;则计算表达式 a+=b+2,c-=a+1 后c的值是【 】。
A) 3 B) 2 C) 1 D) 4
40. C语言中,int、char、和short三种类型数据占用的字节数是【 】。
A) 用户自定义 B) 均为2个字节 C) 任意的 D) 由机器字长决定
41. 以下选项中合法的字符常量是【 】
A) "B" B) '010' C) 68 D) D
第3章 C程序的基本控制结构习题
1.
2.
一、选择题
结构化程序设计中使用的基本程序控制结构是【 】。
A) 选择结构、顺序结构、循环结构
B) 条件结构、嵌套结构、顺序结构
C) 嵌套结构、转移结构、递归结构
D) 模块结构、递归结构、循环结构
下面程序运行的结果是【 】
main()
{
3.
4.
5.
6.
7.
8.
9.
int i=-1;
if(i>=0)
printf("****n");
}
A) **** B) %%%%
C) %%%%n D) ****%%%%
下列程序段的输出结果是【 】。
char m='a';
while (!m)
printf("%c",m);
A)a B)
C)不输出任何信息 D)'a'
运行下列程序,输出结果是【 】。
main()
{
char m='a';
do
{
printf("%c",m);
}
while(!m);
}
A) a B)
C) 'a' D) 不输出任何值
下列程序段执行后,s的值为【 】。
int k,s=0;
for(k=1;k<=10;++k)
s=s*k;
A)1*2*3*...*10 B)0
C)11 D)10
下列程序段执行后,s的值为【 】。
int k,s=0;
for(k=1;k<=10;)
s=s+k;k++;
A)1+2+3+...+10 B)10
C)11 D)死循环
以下四条语句中,有语法错误的是【 】。
A)if(a>b) m=a; B)if(a
C)if((a=b;)>=0) m=a; D)if((a=b)>=0) m=a;
运行下面程序段后,i的值是【 】。
int i;
for(i=0;i<10;i++)
printf("%d",i);
A)9 B)10
C)0 D)
有如下程序段:
10.
11.
12.
13.
14.
15.
16.
17.
int p=10;
while(p=0)
p=p-2;
则下面的描述中正确的是【 】。
A)while语句执行10次
B)循环是无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
语句while(!E);中的表达式 !E等价于【 】。
A)E==0 B)E!=1
C)E!=0 D)E==1
设a为整型变量,则下列不能正确表达数学关系1 A)a>1&&a<5 B)a==2||a==3||a==4 C)1=5) 设 int a=1,b=2,c=3,d=4,z;则表达式(a>b)?(z=c):(z=d)的值为【 】。 A)4 B)2 C)1 D)3 设 int i=4;则表达式(i==2)?i:i-1的值为【 】。 A)1 B)2 C)0 D)3 以下程序段在执行时,若从键盘输入3,则输出为【 】。 int x; scanf("%d",&x); switch (x) { case 5: printf("Excellent"); default: printf("Poor"); case 4: printf("Good"); case 3: printf("Pass"); case 2: printf("Fail"); } A)Pass B)Passpoor C)PoorPassFail D)PassFail 以下程序段的输出结果是【 】。 int i=0,j=0,k=6; if(i>0||j>=0) k++; printf("%d,%d,%dn",i,j,k); A)0,0,7 B)1,0,7 C)1,1,6 D)1,0,6 若希望当A的值为奇数时, 表达式的值为"真", A的值为偶数时, 表达式的值为"假",则下面满足要求的表达式是【 】。 A)A%2==1 B)(A%2==0) C)!(A%2) D)(A%2=0) 下面的程序运行时,若从键盘输入1和2,则输出结果是【 】。 main( ) { int a,b,s; scanf("%d%d",&a,&b); s=a; if(s s=b; s=s*s; printf("%dn",s); } A)6 B)4 C)2 D)1 18. 下列程序段执行后,s的值为【 】。 int k,s=0; for(k=1;k<=10;++k); s=s+k; A)55 B)0 C)11 D)10 19. 设 int i=2;则表达式 i==2 ? i:i-1的值为【 】。 A) 1 B) 2 C) 0 D) 3 20. 设ch是char型变量,其值为A,则表达式ch = (ch>=’A’&&ch<=’Z’)?(ch+32):ch 的值为【 】。 A) A B) a C) Z D) z 21. 已定义 x为int型变量,下面程序段的输出结果为【 】。 for( x=3;x<6;x++) printf(“ * * %dn”,x); A) * * 3 * * 4 * * 5 B) * * 3 , * * 4, **5 C) ** 3 * * 4, **5 D) * * 3** 4 **5 22. 下面的语句执行后,x的值是【 】 int x,s=0; for(x=0; x<10; x++) s+=x; A) 10 B) 0+1+2+3+4+5+6+7+8+9 C) 9 D) 0+1+2+3+4+5+6+7+8+9+10 23. 如果定义double x=2.5; int a=2,b=100;,则下面四组答案中正确的是【 】。 A) switch(a+b); { case 1: printf("10"); 24. case 2: printf("100"); } B) switch(x) { case 1: printf("10"); case 2: printf("100"); } C) switch(x); { case 1.0: printf("10"); case 2.5: printf("100"); } D) switch(a+b) { case 10+1: printf("10"); case 100+2: printf("100"); } 下列程序段运行后的输出结果是【 】。 int a=4; do { printf("%2d",a-=3); } while(!(--a)); A) 1 -3 B) 1 C) 是无限循环 D) 1 -2 25. 下列各程序段中,可以实现1×2×3×4×5×6×7×8×9×10的是【 】。 A) long k=1,M=0; for (;k<11;++k) M*=k; B) long k=1,M=1; while (k<10); M*=k,k++; C) long k=1,M=1; for (;;++k); M*=k; D) long k=1,M=1; while (k<=10) {M*=k;k++;} 26. 下面程序段运行的结果是【 】。 int n=0; while(n++<=1) printf("%d",n); A) 1 B) 2 C) 1 D) 123 27. 若定义int d, c=1;则执行下面的语句后,d的值为【 】。 switch(c) { case 0:d=0;break; case 1: case 2:d=1; case 3: case 4:d=2;break; default:d=3; } A)0 B)1 C)2 D)3 28. 若定义int d, c=0;则执行下面的语句后,d的值为【 】。 switch(c++) 29. { case 0:d=0;break; case 1: case 2:d=1; case 3: case 4:d=2;break; default:d=3; } A)0 B)1 C)2 D)3 下面程序段,不是死循环的是【 】。 A) int i=100; while(2) { i=i%100+1; if(i>100) break; } B) for( ; ; ); C) int k=0; do{++k;} while(k>=0); D) int s=45; while(s); s--; 30. 下列程序段运行后的输出结果是【 】。 int a=1,m=0; while(a-->=0) m++; printf("%d,%dn"a,m); A)-2,2 B)0,1 C)-1,2 D)-1,1 31. 执行下列程序后,x和z的值是【 】。 main() { int x,y=1,z ; if(x=z=y) x=3 ; printf("%d,%dn",x,z); } A)3,0 B)0,0 C)0,1 D)3,1 32. 运行以下程序段的输出结果是【 】。 int i=0,j=0,k=6; if((++i>=0)||(++j>0)) k++; printf("%d,%d,%dn",i,j,k); A)0,0,7 B)1,0,7 C)1,1,7 D)1,0,6 33. 若a,b,c,x,y均为整型变量并且已赋值,则以下正确的switch语句是【 】。 A)switch(a*a+b*b) { case 1: case 2+1:y=a+b;break; case 0: case 5:y=a-b;break; } B)switch a*2 { case 1: case 2:y=a+b; break; case 4:y=b-a; } C)switch(a/10) { default: printf("Failn"); break; case 6,7: printf("Passn"); break; } D)switch a { case b:x=1;break; case c:x=0; } 34. 下列程序执行时,若从键盘输入12,则输出为 【 】 。 main() {int num,c; scanf("%d",&num); do { c=num%10; printf("%d",c); } while ((num/=10)>0); printf("n"); } A)21 B)2 C)1 D)12 35. 下列程序的输出结果是【 】。 main() { int x , i ; for(i=1;i<=50;i++) { x=i ; if(x%2==0&&x%3==0&&x%7==0) printf("%d",i); } } A)14 B)21 C)42 D)6 36. 以下两条条件语句语义等价的是【 】。 A)if(a=2) printf("%dn", a); if(a==2) printf("%dn", a); B)if(a-2) printf("%dn", a); if(a!=2) printf("%dn", a); C)if(a)printf("%dn", a); if(a==0) printf("%dn", a); D)if(a-2) printf("%dn", a); if(a==2) printf("%dn", a); 37. 以下程序段的运行结果是【 】。 x=5; do { y=x--; if(!y) {printf("*"); continue;} printf("#"); } while(3<=x<=4); A)### B)##* C)死循环 D)输出错误信息 38. 运行下面程序段的输出结果是【 】。 int a=4,b=5,t; if(a t=a, a=b, b=t; printf("%d,%dn",a,b); A)5,4 B)4,5 C)5,0 D)语法错误 39. 若定义int d, c=6;则执行下面的语句后,d的值为【 】。 switch(c) { case 0:d=0;break; case 1: case 2:d=1;break; case 3: case 4:d=2;break; default:d=3; } A)0 B)1 C)2 D)3 40. 若变量已正确定义,则以下程序段的运行结果是【 】。 int a,b; a=2;b=7; switch(a>b) { case 0: printf("@");break; case 1: printf("!");break; case 2: printf("*");break; default: printf("#"); } A)@ B)! C)* D)# 41. 运行下面程序段的输出结果是(【 】)。 int n=10; while(n>7) {n--;printf("%d",n);} A) 876 B) 987 C) 789 D) 78 42. 以下程序运行后结果是【 】 main( ) { int x=3,y=0,z=0; if (x=y+z) printf (“* * * * ”); else printf (“# # # #”); } A)有语法错误不能通过编译 B)输出* * * * C)可以通过编译,但不能通过连接,因而不能运行 D)输出# # # # 43. 有程序如下: main( ) { int a ; float b , c ; scanf (“%2d %3f %4f”, &a,&b,&c); printf( “na=%d,b=%f,c=%fn”,a,b,c); } 若运行以上程序时从键盘输入9876543210 A)a=98 , b=765 , c=4321 B)a=10 , b=432 , c=8765 C)a=98 , b=765.000000 , c=4321.000000 D)a=98 , b=765.0 , c=4321.0 44. 以下程序运行后结果为【 】 main ( ) { int num=0; while (num <= 2) { num++;printf(“%dn”,num);} } A) 1 B) 1 2 C) 1 2 3 D) 1 2 3 4 45. 以下程序运行后输出结果为【 】 main( ) { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; } printf(“a=%d,b=%dn”,a,b); } A) a=2 , b=1 B) a=1 , b=1 C) a=1 , b=0 D) a=2 , b=2 46. 运行以下程序段的输出结果是【 】。 int a=5,b; b=a++; if(b>5) printf("%dn",a+2); else printf("%dn",a-2); A) 7 B) 8 C) 3 D) 4 47. 若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是【 】。 for(i=5;i;i--) for(j=0;j<4;j++) { ...... } A) 20 B) 24 C) 25 D) 30 48. 假定所有变量均已正确说明,下列程序段运行后x的值是【 】。 a=b=c=0;x=35; if (!a) x--; else if (b); if (c) x=3; else x=4; A) 34 B) 4 C) 35 D) 3 49. 下面的程序运行后,输出为【 】。 main() {int i=1,j=2,k=3; do { if(i%j==0 && i%k==0) { printf("%dn",i); break; } i++; } while(1); } A) 12 B) 13 C) 14 D) 6 50. 下面的程序段运行后,输出为【 】。 int x=3,y=6,a=0; while (x++!=(y-=1)) { a+=1; if (y printf("x=%d,y=%d,a=%dn",x,y,a); A) x=4,y=4,a=1 B) x=5,y=5,a=1 C) x=5,y=4,a=1 D) x=5,y=4,a=3 二、读程序写结果 1. 下面程序段的输出结果是【 】。 main() { int i,b,k=0; for(i=1;i<=5;i++) { b=i%2; while(b-->=0) k++; } printf("%d,%dn",k,b); } 2. 下面的程序段运行后,输出为【 】。 int x=3,y=6,a=0; while (x!=(y-=1)) {x++;a+=1; if (y } printf("x=%d,y=%d,a=%dn",x,y,a); 3. 运行下面程序段的输出结果是【 】。 int n,a,s=0,p=1,i; n=2;a=2; for(i=1;i<=n;++i) {p=p*a;s+=p;} printf("s(%d,%d)=%d",a,i,s); 4. 运行下面程序段的输出结果是【 】。 int i=5; do { switch(i%2) { case 4:i--;break; case 6:i--;break; } i--; i--; printf("%2d",i); }while(i>0); 5. 运行下面程序段的输出结果是【 】。 main() { int i=0,s=0; for(;;) { i+=2; if (i>10) { printf("%d ",s);break;} s=s+i; } printf("%dn",i); } 6. 下列程序运行后输出结果是【 】。 main( ) { int a,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break ; if(b%3==1) { b+=3; continue; } b-=5; } printf(“%d,%dn”,a,b); } 7. 下面程序运行后输出结果是【 】。 main() { int x=100,a=10,b=20,ok1=5,ok2=1; if(a if(b!=15) if(!ok1) x=1; else if(ok2) x=10; x=-1; printf("%dn",x); } 8.下面程序运行后输出结果是【 】。 main() { int f1=2,f2=3,f; printf("%d %d ",f1,f2); f1=f1+f2; f2=f1+f2; printf(" %d %dn",f1,f2); } 9.下面程序运行后输出结果是【 】。 #include #include void main() { int i,j,k; for(i=2;i<=10;i++) { k=sqrt(i); for(j=2;j<=k;j++) if(i%j==0) break; if(j>k) printf("%3d",i); } } 10.下面程序运行后输出结果是【 】。 main() {int n,a,s=0,p=1,i; n=2;a=2; for(i=1;i<=n;++i) {p=p*a;s+=p;} printf("%d,%d",i,s);} 三、将程序填写完整 1. 下面的程序是求s=1-1/3+1/5-1/7+…,直到最后一项的绝对值小于0.00001为止。程序【 】处应填。 #include #include main() { int m; float n,t,s; t=1.0;s=0.0;n=1.0;m=1; while((fabs(t))>=1e-5) {【 】; n=n+2; m=-m; t=m/n; } printf("s=%fn",s); } 2. 以下程序判断输入的一个整数是否能被5整除,若能整除,则输出"Y",否则输出"N"。在【 】中填入适当的选项。 #include "stdio.h" main() { int k; printf("Enter a int number:"); scanf("%d",&k); if(___【 】___) printf("Yn"); else printf("Nn"); } 3. 求Fibonacci数列1,1,2,3,5,8,13……的前40个数(数列中的每一个数都是它的前两个数之和)。请将程序填完整。 main() {long int f1,f2; int i; f1=1;f2=1; for(i=1;i<=【1】;i++) {printf("%12ld %12ldn ",f1,f2); f1= f1+【2】; f2= f2+【3】; } } 四、编程题 1. 有3个整数a、b、c,由键盘输入,输出其中最小数。 2. 求[1,30]之间,能被3或7整除的数的平方和。 3. 计算算式:1!+2!+3!+…+10! 各章习题参考答案 第1章 1. A 2. D 3. C 4. C 5. A 6. A 第2章 1. C 11. C 21. C 31. A 41. B 2. B 12. D 22. D 32. A 3. C 13. D 23. C 33. B 4. A 14. D 24. B 34. C 5. B 6. C 15. B 16. C 25. A 26. B 35. C 36. D 7. A 17. A 27. A 37. C 8. B 18. B 28. D 38. A 9. D 19. C 29. A 39. B 10. D 20. B 30. C 40. D 第3章 一、选择题 1. A 2. B 3. C 4. A 5. B 6. D 11. C 12. A 13. D 14. D 15. A 16. A 21. A 22. B 23. D 24. A 25. D 26. C 31. D 32. B 33. A 34. A 35. C 36. B 41. B 42. D 43. C 44. C 45. A 46. D 二、读程序写结果 1. 8,-2 2. x=4,y=4,a=1 3. s(2,3)=6 4. 3 1 -1 5. 30 12 6. 8,22 7. -1 8. 2 3 5 8 9. 2 3 5 7 10. 3,6 三、填空题 1. s+=t 2. k%5==0 3. 【1】20 【2】f2 【3】f1 四、编程题 1. main() {int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a if(a else printf("min=%dn",c); else if(b else printf("min=%dn",c); } 2. main() 7. C 8. D 17. B 18. C 27. C 28. A 37. C 38. A 47. A 48. B 9. C 10. A 19. B 20. B 29. C 30. A 39. D 40. A 49. D 50. C {int i;long s=0; for(i=1;i<=30;i++) if(i%3==0||i%7==0) s+=i*i; printf("s=%ldn",s); } 3. main() {int i;long p=1,s=0; for(i=1;i<=10;i++) { p=p*i; s=s+p;} printf("s=%ldn",s); }
版权声明:本文标题:C语言考试习题及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1702698595a427251.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论