C语言培训班老师发的资料包C语言题集二.docx
《C语言培训班老师发的资料包C语言题集二.docx》由会员分享,可在线阅读,更多相关《C语言培训班老师发的资料包C语言题集二.docx(25页珍藏版)》请在冰豆网上搜索。
C语言培训班老师发的资料包C语言题集二
第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.033.0<回车>
D)1022<回车>33<回车>
2.若执行下述程序时,若从键盘输入6和8时,结果为
main()
{inta,b,s;
scanf("%d%d",&a,&b);
s=a
if(a
s=b;
s*=s;
printf("%d",s);
}
A)36
B)64
C)48
D)以上都不对
3.下列程序段的输出结果是:
inta=1234;
floatb=123.456;
doublec=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中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
5.下列程序的输出结果是
main()
{doubled=3.2;intx,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.以下程序段的输出结果是
inta=1234;
printf("%2d\n",a);
A)12
B)34
C)1234
D)提示出错、无结果
7.已有定义inta=-2;和输出语句printf("%8lx",a);以下正确的叙述是
A)整型变量的输出形式只有%d一种
B)%x是格式符的一种,它可以适用于任何一种类型的数据
C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的
D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
8.以下程序的输出结果是
main()
{inta=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,不正确的输入形式是
A)3<回车>
5<回车>
8<回车>
B)3,5,8<回车>
C)3<回车>
58<回车>
D)35<回车>
8<回车>
10.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是
A)INPUTx、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=10y=3,则以下语句的输出结果是
printf("%d,%d\n",x--,--y);
A)10,3
B)9,3
C)9,2
D)10,2
12.下面程序的输出结果为
main()
{inta,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)scanf("%d,%d,%d",&i,&j,&k);
D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);
15.下列程序运行的结果是
main()
{floatx;
inti;
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.已知intk=10,m=3,n;则下列语句输出结果是
printf("%d\n",n=(k%m,k/m));
A)2
B)3
C)4
D)5
17.已知inta;floatb;所用的scanf调用语句格式为:
scanf("a//%d,b=%f",&a,&b);
为了将数据3和25.08分别赋给x和y,正确的输入应当是
A)3,25.08
B)a=3,b=25.08
C)a//3,b=25.08
D)a//3b=25.08
填空题
1.以下程序的输出结果是【1】。
inta=1234;
printf("%2d\n",a);
2.以下程序的输出结果是【2】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",a);}
第4章选择结构
选择题:
1.有如下程序:
main()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
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()
{inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%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()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);
}
该程序的输出结果是
A)0.000000
B)0.250000
C)0.500000
D)1.000000
4.设intx=1,y=1;表达式(!
x||y--)的值是
A)0
B)1
C)2
D)-1
5.若运行时给变量x输入12,则以下程序的运行结果是
main()
{intx,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)10
B)01
C)非0非0
D)11
7.若已定义:
inta=25,b=14,c=19;以下三目运算符(?
:
)所构成语句的执行后a<=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()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x>10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);
}
该程序的输出结果是
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>=10ora<=0
B)a>=0|a<=10
C)a>=10&&a<=0
D)a>=10‖a<=0
11.有如下程序
main()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec++;
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)!
(xz||1)
13.若有条件表达式(exp)?
a++:
b--,则以下表达式中能完全等价于表达式(exp)的是
A)(exp==0)
B)(exp!
=0)
C)(exp==1)
D)(exp!
=1)
14.以下程序的输出结果是
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);}
A)1
B)0
C)非0的数
D)-1
15.设有:
inta=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()
{inta,b,k;
scanf("%d,%d",&a,&b);
k=a;
if(a
elsek=b%a;
printf("%d\n",k);
}
A)5
B)3
C)2
D)0
18.请阅读以下程序:
main()
{inta=5,b=0,c=0;
if(a=b+c)printf("***\n");
elseprintf("$$$\n");
}
以上程序
A)有语法错不能通过编译
B)可以通过编译但不能通过连接
C)输出***
D)输出$$$
19.当k的值不为0时,在下列选项中能够将k的值赋给变量m,n的是
A)m=k=n
B)(m=k)&&(n=k)
C)(m=k)||(n=k)
D)(k=m)&&(n=k)
20.下列程序的运行结果是
#include"stdio.h"
main()
{intx=-9,y=5,z=8;
if(xif(y<0)z=0;
elsez+=1;
printf("%d\n",z);
}
A)6
B)7
C)8
D)9
填空题
1.阅读下面程序,则执行后的输出结果是【1】。
#include"stdio.h"
main()
{intx,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)
printf("%d",x);
elseprintf("%d",y);
printf("%d\n",z);
}
第5章循环结构
选择题
1.已知
intt=0;
while(t=1)
{...}
则以下叙述正确的是
A)循环控制表达式的值为0
B)循环控制表达式的值为1
C)循环控制表达式不合法
D)以上说法都不对
2.有如下程序:
main()
{intn=9;
while(n>6){n--;printf("%d",n);}
}
该程序的输出结果是
A)987
B)876
C)8765
D)9876
3.在下列选项中,没有构成死循环的是
A)inti=100;
while
(1)
{i=i%100+1;
if(i>100)break;
}
B)for(;;);
C)intk=10000;
do{k++;}while(k>10000);
D)ints=36;
while(s)--s;
4.设有以下程序段
intx=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(!
x);
A)是死循环
B)循环执行两次
C)循环执行一次
D)有语法错误
6.在下述程序中,判断i>j共执行的次数是
main()
{inti=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
main()
{inti=0,j,k;
do{i++;k=316-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
main()
{inty=10;
do{y--;}while(--y);
printf("%d\n",y--);
}
A)-1
B)1
C)8
D)0
9.下面程序的运行结果是
#include
main()
{inta=1,b=10;
do
{b-=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()
{intx=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)不定
12.有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。
下面程序是求这堆零件总数,请选择填空。
#include
main()
{inti;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!
((i-3)%7))
if(_______)
printf("%d",i);
}
A)i%9=5
B)i%9!
=5
C)(i-5)%9!
=0
D)(i-5)%9==0
13.设有程序段
intk=10;
while(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()
{inta,i;a=0;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}
}
printf("%d\n",a);
}
A)31
B)13
C)10
D)20
16.若有如下语句
intx=3;
do{printf("%d\n",x-=2);}
while(!
(--x));
则上面程序段
A)输出的是1
B)输出的是1和-2
C)输出的是3和0
D)是死循环
17.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空。
#include
main()
{inta,b,t;
scanf("%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()
{inti,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.设有以下程序段
intx=0,s=0;
while(!
x!
=0)s+=++x;
printf("%d",s);
则
A)运行程序段后输出0
B)运行程序段后输出1
C)程序段中的控制表达式是非法的
D)程序段执行无限次
21.对下Ⅰ,Ⅱ两个语句描述正确的是
Ⅰ.while
(1)Ⅱ.for(;;)
A)都是无限循环
B)Ⅰ是无限循环Ⅱ错误
C)Ⅰ循环一次,Ⅱ错误
D)以上答案都错
22.以下描述中正确的是
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do-while循环体中,是先执行一次循环,再进行判断
D)do-while循环中,根据情况可以省略while
23.下列说法正确的是
inti,x;
for(i=0,x=0;i<=9&&x!
=876;i++)scanf("%d",x);
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.现有定义intk=1;则执行语句while(++k<4);后,k的值为
A)4
B)5
C)6
D)8
26.以下程序的运行结果为
#include"stdio.h"
main()
{intm,n;
for(m=0,n=10;mprintf("%d,%d\n",m,n);}
A)6,7
B)7,6
C)9,7
D)7,9
27.阅读下列程序,程序的输出结果是
#include"stdio.h"
main()
{
intm,n;
floatk;
for(m=6;m>2;m--)
{k=0;
for(n=m;n>1;n--)
k=k+m*n;
}
printf("%f\n",k);
}
A)5.000000
B)15.000000
C)25.000000
D)35.000000
28.下列程序的输出结果是
#include"stdio.h"
main()
{inti,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.有说明语句:
charc='\72';则变量c
A)包含1个字符
B)包含2个字符
C)包含3个字符
D)说明不合法,c的值不确定
2.在C语言中,退格符是
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(表示回车),则下面程序的运行结果是
#include
main()
{charc;
intv0=1,v1=0,v2=0;
do
{switch(c=getchar())
{case′a′:
case′A′:
case′e′:
case′E′:
case′i′:
case′I′:
case′o′:
case′