C语言复习题及答案全.docx
《C语言复习题及答案全.docx》由会员分享,可在线阅读,更多相关《C语言复习题及答案全.docx(21页珍藏版)》请在冰豆网上搜索。
C语言复习题及答案全
C语言程序设计复习题及答案
第一部分程序设计基本概念
1.1在TRUBOC环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______。
1.2C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是_____。
1.3结构化程序由_____、_____、_____三种基本结构组成。
第二部分C程序设计的初步知识
一、选择题
2.1以下选项中正确的整型常量是
A)12. B)-20 C)1,000 D)4 5 6
2.2以下选项中正确的实型常量是
A)0 B)3. 1415 C)0.329×10
(2)(10的2次方) D).871
2.3以下选项中不正确的实型常量是
A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2
2.4以下选项中不合法的用户标识符是
A)abc.c B)file C)Main D)PRINTF
2.5以下选项中不合法的用户标识符是
A)_123 B)printf C)A$ D)Dim
2.6C语言中运算对象必需是整型的运算符是
A)% B)/ C)!
D)**
2.7可在C程序中用作用户标识符的一组标识符是
A)void define WORD
B)as_b3 _123 If
C)For -abc case
D)2c DO SIG
2.8若变量已正确定义并赋值,符合C语言语法的表达式是
A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b
2.9以下叙述中正确的是
A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:
实型变量中允许存放整型值。
B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。
C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0。
D)已有a=3,b=5。
当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3。
第三部分、顺序结构
一、选择题
3.1若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是
A)a=b=c=100; B)d++; C)c+b; D)d=(c=22)-(b++);
3.2以下选项中不是C语句的是
A){inti;i++;printf("%d\\n",i);}
B); C)a=5,c=10 D){;}
3.3以下合法的C语言赋值语句是
A)A=B=58 B)k=int(a+b); C)a=58,b=58 D)--i;
3.4以下程序的输出结果是
A)0 B)1 C)3 D)不确定的值
main()
{
intx=10,y=3;
printf("%d\\n",y=x/y);
}
3.5若变量已正确说明为int类型,要给a、b、c输入数据,以下不正确的输入语句是
A)read(a,b,c); B)scanf("%d%d%d",a,b,c);
C)scanf("%D%D%D",&a,&b,&c); D)scanf("%d%d%d",&a,&b,&c);
3.6若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是
A)102233 B)10.0,22.0,33.0 C)10.022.033.0 D)102233
scanf("%f%f%f",&a,&b,&c);
3.7若变量以正确定义,要将a和b中的数进行交换,下面不正确的语句组是
A)a=a+b,b=a-b,a=a-b; B)t=a,a=b,b=t;
C)a=t;t=b;b=a; D)t=b;b=a;a=t;
3.8若变量已正确定义,以下程序段的输出结果是
A)输出格式说明与输出项不匹配,输出无定值
B)5.17000 C)5.168000 D)5.169000
x=5.16894;
printf("%f\\n",(int)(x*1000+0.5)/(float)1000);
3.9若有以下程序段,c3中的值是
A)0 B)1/2 C)0.5 D)1
3.10若有以下程序段,intc1=1,c2=2,c3;
c3=c1/c2;其输出结果是
A)0,0,-10 B)0,0,5 C)-10,3,-10 D)3,3,-10
inta=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf("%d,%d,%d\\n",a,b,c);
3.11当运行以下程序时,在键盘上从第一列开始输入9876543210(此处代表Enter),则程序的输出结果是
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,c=4321.0
main()
{
inta;floatb,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\\na=%d,b=%f,c=%f\\n",a,b,c);
}
3.12以下程序的输出结果是
A)a=%2,b=%5 B)a=2,b=5 C)a=%%d,b=%%d D)a=%d,b=%d
main()
{ inta=2,b=5;
printf("a=%%d,b=%%d\\n",a,b);
}
第四部分、选择结构
一、选择题
4.1下列运算符中优先级最高的运算符是
A)!
B)% C)-= D)&&
4.2下列运算符中优先级最低的运算符是
A)|| B)!
= C)<= D)+
4.3为表示关系x≥y≥z,应使用的C语言表达式是
A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z)
4.4设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是
A)a&&b B)a<=b C)a||b+c&&b-D)!
((a
c||1)
4.5以下程序的输出结果是
A)0 B)1 C)2 D)3
main()
{ inta=2,b=-1,c=2;
if(a
if(b<0) c=0;
else c+=1;
printf("%d\\n",c);
}
4.6以下程序的输出结果是
A)1 B)2 C)3 D)4
main()
{ intw=4,x=3,y=2,z=1;
printf("%d\\n",(ww:
zz:
x));
}
4.7若执行以下程序时从键盘上输入3和4,则输出结果是
A)14 B)16 C)18 D)20
main()
{ inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a
s*=s;
printf("%d\\n",s);
}
4.8下面的程序片段所表示的数学函数关系是
-1(x<0)
A)y= 0(x=0)
1(x>0)
1(x<0)
B)y= -1(x=0)
0(x>0)
0(x<0)
C)y= -1(x=0)
1(x>0)
-1(x<0)
D)y= 1(x=0)
0(x>0)
y=-1;
if(x!
=0)y=1;
if(x>0)y=1;
elsey=0;
答案:
本题没有正确答案。
程序片段所表示的数学函数关系应该是
0(x<0)
y= 0(x=0)
1(x>0)
4.9运行以下程序后,输出
A)**** B)&&&&
C)####&&&& D)有语法错误不能通过编译
main()
{ intk=-3;
if(k<=0)printf("****\\n")
elseprintf("&&&&\\n");
}
4.10若a和b均是正整型变量,以下正确的switch语句是
A) switch(pow(a,2)+pow(b,2))
{case1:
case3:
y=a+b; break;
case0:
case5:
y=a-b;
}
B) switch(a*a+b*b);
{case3:
case1:
y=a+b;break;
case0:
y=b-a;break;
}
C) switcha
{default:
x=a+b;
case10:
y=a-b;break;
case11:
x=a*d;break;
}
D) switch(a+b)
{case10:
x=a+b;break;
case11:
y=a-b;break;
}
答案:
没有正确答案。
如果C选项改为:
switch(a)
{default:
x=a+b;
case10:
y=a-b;break;
case11:
x=a*b;break;
}
则答案可以选择C
第五部分、循环结构
一、选择题
5.1以下程序段的输出结果是
A)9 B)1 C)11 D)10
intk,j,s;
for(k=2;k<6;k++,k++)
{ s=1;
for(j=k;j<6;j++) s+=j;
}
printf("%d\\n",s);
5.2以下程序段的输出结果是
A)12 B)15 C)20 D)25
inti,j,m=0;
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4)m++;
printf("%d\\n",m);
5.3以下程序段的输出结果是
A)10
9
8
B)9
8
7
C)10
9
8
7
D)9
8
7
6
intn=10;
while(n>7)
{ n--;
printf("%d\\n",n);
}
5.4以下程序段的输出结果是
A)1 B)30 C)1-2 D)死循环
intx=3;
do
{ printf("%3d",x-=2);}
while(!
(--x));
5.5以下程序段的输出结果是
A)15 B)14 C)不确定 D)0
main()
{ inti,sum;
for(i=1;i<6;i++)sum+=sum;
printf("%d\\n",sum);
}
5.6以下程序段的输出结果是
A)741 B)852 C)963 D)875421
main()
{ inty=10;
for(;y>0;y--)
if(y%3==0)
{ printf("%d",--y);continue; }
}
5.7若x是int型变量,以下程序段的输出结果是
A)**3
##4
**5
B)##3
**4
##5
C)##3
**4##5
D)**3##4
**5
for(x=3;x<6;x++)
printf((x%2)?
("**%d"):
(##%d\\n"),x);
5.8以下程序的输出结果是
A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$
main()
{ inti;
for(i=1;i<=5;i++)
{ if(i%2) printf("*");
else contionue;
printf("#");
}
printf("$\\n");
}
5.9以下叙述正确的是
A)do_while语句构成的循环不能用其它语句构成的循环来代替。
B)do_while语句构成的循环只能用break语句退出。
C)用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。
D)用do_while语句构成循环时,只有在while后的表达式为零时结束循环。
5.10以下程序的输出结果是
A)3981 B)4284 C)2668 D)2870
main()
{ intx,i;
for(i=1;i<=100;i++)
{ x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf("%d",x);
}
printf("\\n");
}
二、填空题
5.11当执行以下程序段后,i的值是____、j的值是____、k的值是____。
inta,b,c,d,i,j,k;
a=10; b=c=d=5; i=j=k=0;
for(;a>b;++b)i++;
while(a>++c)j++;
dok++; while(a>d++);
5.12以下程序段的输出结果是____。
intk,n,m;
n=10;m=1;k=1;
while(k<=n) m*=2;
printf("%d\\n",m);
5.13以下程序的输出结果是____。
main()
{ intx=2;
while(x--);
printf("%d\\n",x);
}
5.14以下程序段的输出结果是____。
inti=0,sum=1;
do{sum+=i++;}while(i<5);
printf("%d\\n",sum);
第六部分、字符型数据
一、选择题
6.1C语言中的简单数据类型有
A)整型、实型、逻辑型 B)整型、实型、字符型
C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型
6.2C语言中,字符(char)型数据在微机内存中的存储形式是
A)反码 B)补码 C)EBCDIC码 D)ASCII码
6.3设有语句chara=\'\'\\72\'\';,则变量a
A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法
6.4C语言中不合法的字符常量是
A)\'\'\\0xff\'\' B)\'\'\\65\'\' C)\'\'&\'\' D)\'\'\\028\'\'
答案:
本题A)和D)选项都是不合法的字符常量。
若A)选项改为\'\'\\xff\'\',则正确。
6.5C语言中不合法的字符串常量是
A)"\\121" B)\'\'y=\'\' C)"\\n\\n" D)"ABCD\\x6d"
第七部分、函数
一、选择题
7.1以下说法中正确的是
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main函数中定义
C)C语言程序总是从main函数开始执行
D)C语言程序中的main函数必须放在程序的开始部分
7.2以下函数的类型是
A)与参数x的类型相同 B)void类型 C)int类型 D)无法确定
fff(floatx)
{ printf("%d\\n",x*x);}
7.3以下函数调用语句中,含有的实参个数是
A)1 B)2 C)4 D)5
func((exp1,exp2),(exp3,exp4,exp5));
7.4以下程序的输出结果是
A)11 B)20 C)21 D)31
fun(inta,intb)
{ intc;
c=a+b;
returnc;
}
main()
{ intx=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\\n",r);
}
7.5以下程序的输出结果是
A)-1 B)0 C)1 D)2
main()
{ inti=2,p;
p=f(i,i+1);
printf("%d",p);
}
intf(inta,intb)
{ intc;
c=a;
if(a>b)c=1;
else if(a==b) c=0;
else c=-1;
return(c);
}
7.6以下程序的输出结果是
A)0 B)1 C)6 D)无定值
fun(inta,intb,intc)
{ c=a*b; }
main()
{ intc;
fun(2,3,c);
printf("%d\\n",c);
}
7.7以下程序的输出结果是
A)5.500000 B)3.000000 C)4.000000 D)8.25
doublef(intn)
{ inti; doubles;
s=1.0;
for(i=1;i<=n;i++)s+=1.0/i;
returns;
}
main()
{ inti,m=3;floata=0.0;
for(i=0;i printf("%f\\n",a);
}
二、填空题
7.8以下程序的输出结果是____。
unsignedfun6(unsignednum)
{ unsignedk=1;
do
{ k*=num%10; num/=10; }
while(num);
returnk;
}
main()
{ unsignedn=26;
printf("%d\\n",fun6(n);
}
答案:
12
7.9以下程序的输出结果是____。
doublesub(doublex,doubley,doublez)
{ y-=1.0;
z=z+x;
returnz;
}
main()
{ doublea=2.5,b=9.0;
printf("%f\\n",sub(b-a,a,a));
}
答案:
9.000000
7.10以下程序的输出结果是____。
fun1(inta,intb)
{ intc;
a+=a