1、第3章 顺序结构 选择题 1. 若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.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<回车> 2. 若执行下述程序时,若从键盘输入6和8时,结果为 main() { int a,b,s; scanf("%d%d",&a,&b); s=a if(a
2、",s); } A)36 B)64 C)48 D)以上都不对 3. 下列程序段的输出结果是: int a=1234; float b=123.456; double c=12345.54321; printf("%2d,%2.1f,%2.1f",a,b,c); A)无输出 B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5 4. 以下不正确的叙述是 A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量 C)若a和b类型相同,在计算了赋值表达式a=b后b中的值
3、将放入a中,而b中的值不变 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 5. 下列程序的输出结果是 main() { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d\n", d*y); } A)3 B)3.2 C)0 D)3.07 6. 以下程序段的输出结果是 int a=1234; printf("%2d\n",a); A)12 B)34 C)1234 D)提示出错、无结果 7. 已有定义int a=-2;和输出语句 printf("%8lx",a
4、以下正确的叙述是 A)整型变量的输出形式只有%d一种 B)%x是格式符的一种,它可以适用于任何一种类型的数据 C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的 D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度 8. 以下程序的输出结果是 main() { int a=21,b=11; printf("%d\n",--a+b,--b+a); } A)30 B)31 C)32 D)33 9. 若变量已正确说明为int类型,要通过语句scanf("%d %d %d ",&a,&b,&c);给a赋值3,b赋值5,c赋值8,不正确的输入形式
5、是 A)3<回车> 5<回车> 8<回车> B)3,5,8<回车> C)3<回车> 5 8<回车> D)3 5<回车> 8<回车> 10. x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是 A)INPUT x、y、z; B)scanf("%d%d%d",&x,&y,&z); C)scanf("%d%d%d",x,y,z); D)read("%d%d%d",&x,&y,&z); 11. 设x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是 printf("%d,%d\n",x--,--y); A)10,3 B)9,3
6、 C)9,2 D)10,2 12. 下面程序的输出结果为 main() { int a,b;b=(a=3*5,a*4,a*5); printf("%d",b);} A)60 B)75 C)65 D)无确定值 13. C 语言中,系统的标准输入文件是指 A)键盘 B)显示器 C)软盘 D)硬盘 14. 已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是 A)scanf("%2d,%2d,%2d", i, j, k); B)scanf("%d %d %d",&i,&j,&k); C)
7、scanf("%d,%d,%d",&i,&j,&k); D)scanf("i=%d,j=%d,k=%d",&i,&j,&k); 15. 下列程序运行的结果是 main() {float x; int i; x=3.6; i=(int)x; printf("x=%f,i=%d ",x,i); } A)x=3.600000,i=3 B)x=3.6,i=3 C)x=3,i=3 D)x=3.600000,i=3.000000 16. 已知int k=10,m=3,n;则下列语句输出结果是 printf("%d\n",n=(k%m,k/m)); A)2 B)3 C)4
8、
D)5
17. 已知int a;float b;所用的scanf调用语句格式为:
scanf("a//%d,b=%f",&a,&b);
为了将数据3和25.08分别赋给x和y,正确的输入应当是
A)3,25.08
9、 printf("%d\n",a);} 第4章 选择结构 选择题: 1. 有如下程序: main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d\n",a,b); } 该程序的输出结果是 A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2 2. 有以下程序 main() { int i=1,j=1,k=2; if((j++||k++)&&i++) printf("
10、d,%d,%d\n",i,j,k); } 执行后输出结果是 A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 3. 有如下程序 main() { float x=2.0,y; if(x<0.0)y=0.0; else if(x<10.0)y=1.0/x; else y=1.0; printf("%f\n",y); } 该程序的输出结果是 A)0.000000 B)0.250000 C)0.500000 D)1.000000 4. 设int x=1,y=1;表达式(!x||y--)的值是 A)0 B)1 C)2 D)-1 5.
11、 若运行时给变量x输入12,则以下程序的运行结果是 main() { int x,y; scanf("%d",&x); y=x>12?x+10:x-12; printf("%d\n",y); } A)0 B)22 C)12 D)10 6. 在C程序中,判逻辑值时,用“非0”表示逻辑值“真”, 又用“0”表示逻辑值“假”。 在求逻辑值时,用()表示逻辑表达式值为“真”, 又用()表示逻辑表达式值为“假”。 A)1 0 B)0 1 C)非0 非0 D)1 1 7. 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a
12、<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是 A)***a=25,b=13,c=19 B)***a=26,b=14,c=19 C)### a=25,b=13,c=19 D)### a=25,b=14,c=19 8. 有如下程序 main() { float x=2.0,y; if(x<0.0)y=0.0; else if(x>10.0)y=1.0/x; else y=1.0; printf("%f\n",y); }
13、该程序的输出结果是 A)0.000000 B)0.250000 C)0.500000 D)1.000000 9. 以下4个选项中,不能看做一条语句的是 A); B)a=5,b=2.5,c=3.6; C)if(a<5); D)if(b!=5)x=2;y=6; 10. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是 A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0 11. 有如下程序 main() { int a=2,b=-1,c=2; if(a
14、e c++;
printf("%d\n",c);
}
该程序的输出结果是
A)0
B)1
C)2
D)3
12. 设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是
A)x&&y
B)x<=y
C)x||++y&&y-z
D)!(x 15、d;
d=!a&&!b||!c;
printf("%d\n",d);}
A)1
B)0
C)非0的数
D)-1
15. 设有:
int a=1,b=2,c=3,d=4,m=2,n=2;
执行 (m=a>b)&&(n=c>d)后n的值是
A)1
B)2
C)3
D)4
16. 设x,y,t均为int型变量,执行语句:
x=y=3;
t=++x||++y;
完成后,y的值为
A)不确定
B)4
C)3
D)1
17. 若执行下面的程序时,从键盘上输入5和2,则输出结果是
main()
{ int a,b,k;
scanf("%d,%d ",&a, 16、b);
k=a;
if(a 17、n=k)
D)(k=m)&&(n=k)
20. 下列程序的运行结果是
#include "stdio.h"
main()
{ int x=-9,y=5,z=8;
if(x 18、"%d",y);
printf("%d\n",z);
}
第5章 循环结构
选择题
1. 已知
int t=0;
while (t=1)
{...}
则以下叙述正确的是
A)循环控制表达式的值为0
B)循环控制表达式的值为1
C)循环控制表达式不合法
D)以上说法都不对
2. 有如下程序:
main()
{ int n=9;
while(n>6){n--; printf("%d",n);}
}
该程序的输出结果是
A)987
B)876
C)8765
D)9876
3. 在下列选项中,没有构成死循环的是
A) int i=100;
wh 19、ile(1)
{ i=i%100+1;
if(i>100)break;
}
B) for(;;);
C) int k=10000;
do{k++;}while(k>10000);
D) int s=36;
while(s)--s;
4. 设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
则
A)运行程序段后输出0
B)运行程序段后输出1
C)程序段中的控制表达式是非法的
D)程序段执行无限次
5. 以下程序段的描述,正确的是
x=-1;
do
{ x=x*x;
}while( 20、x);
A)是死循环
B)循环执行两次
C)循环执行一次
D)有语法错误
6. 在下述程序中,判断i>j共执行的次数是
main()
{ int i=0, j=10, k=2, s=0;
for (;;)
{ i+=k;
if(i>j)
{ printf("%d",s);
break;
}
s+=i;
}
}
A)4
B)7
C)5
D)6
7. 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。
#include 21、16-13*i;}while(______);
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
A)k/11
B)k%11
C)k/11==0
D)k%11==0
8. 下面程序的运行结果是
#include 22、a;a++;}while(b--<0);b<0成立循环继续,b<0不成立循环结束 然后b自减1
printf("a=%d,b=%d\n",a,b);
}
A)a=3,b=11
B)a=2,b=8
C)a=1,b=-1
D)a=4,b=9
10. 有如下程序
main()
{ int x=23;
do
{ printf("%d",x--);}
while(!x);
}
该程序的执行结果是
A)321
B)23
C)不输出任何内容
D)陷入死循环
11. 执行语句 for(i=1;i++<4;); 后变量 i 的值是
A)3
B)4
C)5
D 23、不定
12. 有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。
#include 24、le(k=0)k=k-1;
则下面描述中正确的是
A)while循环执行10次
B)循环是无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
14. 对表达式for(表达式1; ;表达式3)可理解为
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
15. 以下程序的输出结果是
main()
{ int a,i;a=0;
for(i=1;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 25、1:
case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
A)31
B)13
C)10
D)20
16. 若有如下语句
int x=3;
do{ printf("%d\n",x-=2);}
while(!(--x));
则上面程序段
A)输出的是1
B)输出的是1和-2
C)输出的是3和0
D)是死循环
17. 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空。
#include 26、"%d%d",&a,&b);
while(_______)
{if(a>b)
{t=a;a=b;b=t;}
printf("%d,%d\n",a,b);
scanf("%d%d",&a,&b);
}
}
A)!a=b
B)a!=b
C)a==b
D)a=b
18. 下面有关for循环的正确描述是
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
19. 以下程序的输出结果是
main()
27、{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<3;j++)
{ if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
A)x=4
B)x=8
C)x=6
D)x=12
20. 设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
则
A)运行程序段后输出0
B)运行程序段后输出1
C)程序段中的控制表达式是非法的
D)程序段执行无限次
21. 对下Ⅰ,Ⅱ两个语句描述正确的是
Ⅰ.w 28、hile(1)Ⅱ.for(;;)
A)都是无限循环
B)Ⅰ是无限循环Ⅱ错误
C)Ⅰ循环一次,Ⅱ错误
D)以上答案都错
22. 以下描述中正确的是
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do-while循环体中,是先执行一次循环,再进行判断
D)do-while循环中,根据情况可以省略while
23. 下列说法正确的是
int i,x;
for(i=0,x=0;i<=9 &&x!=876;i++)scanf("%d",x 29、
A)最多的执行10次
B)最多执行9次
C)是无限循环
D)循环体一次也不执行
24. C语言中 while 和do-while循环的主要区别是
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件更严格
C)do-while允许从外部转到循环体内
D)do-while 的循环体不能是复合语句
25. 现有定义int k=1;则执行语句while(++k<4);后,k的值为
A)4
B)5
C)6
D)8
26. 以下程序的运行结果为
#include "stdio.h"
main()
{ int 30、 m,n;
for(m=0,n=10;m 31、 下列程序的输出结果是
#include "stdio.h"
main()
{int i,a=0,b=0;
for(i=1;i<10;i++)
{ if(i%2==0)
{ a++;
continue;
}
b++;
}
printf("a=%d,b=%d",a,b);
}
A)a=4,b=4
B)a=4,b=5
C)a=5,b=4
D)a=5,b=5
第6章 字符型数据
选择题
1. 有说明语句:char c='\72';则变量c
A)包含1个字符
B)包含2个字符
C)包含3个字符
D)说明不合法,c的值不确定
2. 在C语言中,退格符是
32、A)\n
B)\t
C)\f
D)\b
3. 字符型数据在机器中是用ASCII码表示的,字符“5”和“7”在机器中表示为
A)10100011和01110111
B)01000101和01100011
C)00110101和00110111
D)01100101和01100111
4. 若运行以下程序时,从键盘输入 ADescriptor 33、 ′a′:case ′A′:
case ′e′:case ′E′:
case ′i′:case ′I′:
case ′o′:case ′O′:
case ′u′:case ′U′:v1+=1;
default:v0+=1;v2+=1;
}
}while(c!=′\n′);
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
}
A)v0=7,v1=4,v2=7
B)v0=8,v1=4,v2=8
C)v0=11,v1=4,v2=11
D)v0=13,v1=4,v2=12
5. 有如下程序段
int a=14,b=15,x;
34、char c=′A′;
x=(a&&b)&&(c<′B′);
执行该程序段后,x的值为
A)ture
B)false
C)0
D)1
6. 若变量c为char类型,能正确判断出c为小写字母的表达式是
A)′a′<=c<=′z′
B)(c>=′a′)||(c<=′z′)
C)(′a′<=c)and(′z′>=c)
D)(c>=′a′)&&(c<=′z′)
7. 在C语言中,char型数据在内存中的存储形式是
A)补码
B)反码
C)原码
D)ASCII码
8. 以下程序的输出结果是
main()
{ char c=′z′;
printf("%c",c-25);
}
A)a
B)Z
C)z-25
D)y
9. 下列选项可以正确表示字符型常量的是
A)′\r′
B)"a"
C)"\897"
D)296
填空题
1. 如下语句printf("%c\n",′B′+40);在执行后的输出结果是 【1】 。
2. 下列程序的输出结果是【2】。
maim ()
{ char b []="Hello you";
b[5]=0;
printf ("%s\n",b);}






