C语言试题及答案Word文档下载推荐.docx
《C语言试题及答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言试题及答案Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
![C语言试题及答案Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/4/7e9bba6b-dd76-4080-ad2c-849f3e1561a6/7e9bba6b-dd76-4080-ad2c-849f3e1561a61.gif)
A.&
&
,!
,||B.||,&
C.&
,||,!
D.!
,&
,||
(7)表达式!
x||a==b等效于D。
A.!
((x||a)==b)B.!
(x||y)==bC.!
(x||(a==b))D.(!
x)||(a==b)
(8)设整型变量m,n,a,b,c,d均为1,执行(m=a>
b)&
(n=c>
d)后,m,n的值是A。
A.0,0B.0,1C.1,0D.1,1
(9)intb=0,x=1;
执行语句if(x++)b=x+1;
后,x,b的值依次为A。
A.2,3B.2,0C.3,0D.3,2
(10)设有语句inta=3;
,则执行了语句a+=a-=a*=a;
后,变量a的值是B。
A.3B.0C.9D.-12
(11)在以下一组运算符中,优先级最低的运算符是D。
A.*B.!
=C.+D.=
(12)设整型变量i值为2,表达式(++i)+(++i)+(++i)的结果是B。
A.6B.12C.15D.表达式出错
(13)若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是C。
A.1B.2C.2.0D.2.5
(14)sizeof(double)的结果值是A。
A.8B.4C.2D.出错
(15)设a=1,b=2,c=3,d=4,则表达式:
a<
b?
a:
c<
d?
d的结果为D。
A.4B.3C.2D.1
(16)设a为整型变量,不能正确表达数学关系:
10<
15的C语言表达式是A。
A.10<
15B.a==11||a==12||a==13||a==14
C.a>
10&
a<
15D.!
(a<
=10)&
!
(a>
=15)
(17)设f是实型变量,下列表达式中不是逗号表达式的是D。
A.f=3.2,1.0B.f>
0,f<
10C.f=2.0,f>
0D.f=(3.2,1.0)
(18)设ch是char型变量,其值为'
A'
,则下面表达式的值是B。
ch=(ch>
='
ch<
Z'
)?
(ch+32):
ch
A.AB.aC.ZD.Z
(19)以下运算符中,结合性与其他运算符不同的是A。
A.++B.%C./D.+
(20)以下用户标识符中,合法的是B。
A.intB.nitC.123D.a+b
(21)C语言中,要求运算对象只能为整数的运算符是%。
A.%B./C.>
D.*
(22)PC机中,'
\n'
在内存占用的字节数是A。
A.1B.2C.3D.4
(23)字符串"
ABC"
在内存占用的字节数是B。
A.3B.4C.6D.8
(24)要为字符型变量a赋初值,下列语句中哪一个是正确的B。
A.chara="
3"
;
B.chara=’3’;
C.chara=%;
D.chara=*;
(25)下列不正确的转义字符是C。
A.\\B.\'
C.074D.\0
2.填空题
(1)C语言中的逻辑值“真”是用非0表示的,逻辑值“假”是用0表示的。
(2)符号常量的定义方法是#defineN10。
(3)无符号基本整型的数据类型符为unsignedint,双精度实型数据类型符为double,字符型数据类型符为char。
(4)设c='
w'
a=1,b=2,d=-5,则表达式'
x'
+1>
c,'
y'
!
=c+2,-a-5*b<
=d+1,b==a=2的值分别为1、0、1、表达式错误。
(5)设floatx=2.5,y=4.7;
inta=7;
,表达式x+a%3*(int)(x+y)%2/4的值为2.5。
(6)判断变量a、b的值均不为0的逻辑表达式为(a!
=0)&
(b!
=0)。
(7)求解赋值表达式a=(b=10)%(c=6),表达式值、a、b、c的值依次为4,4,10,6。
(8)求解逗号表达式x=a=3,6*a后,表达式值、x、a的值依次为18,3,3。
(9)数学式a/(b*c)的C语言表达式a/(b*c)。
第3章顺序结构程序设计习题
1.选择题
(1)printf("
f=%3.2f%%"
3.478);
的输出结果是A。
A.f=3.48%B.f=3.5%C.f=3.48%%D.f=347.8%
(2)printf("
%c,%d"
'
'
);
A.a,97B.a97C.97,aD.97a
(3)scanf("
%c"
&
a);
若要给变量输入大写字母A,则以下正确的输入是B。
<
CR>
B.A<
\C."
A"
D.以上都不对
(4)若一个int类型的数据占2字节,则程序段:
intx=-1;
printf("
%u,%d"
x,x);
A.65535,-1B.-1,65535C.32767,32768D.32768,32767
(5)在TC中,getchar、putchar、printf、scanf四个函数,均包含在头文件B
中。
A.math.hB.stdio.hC.stbio.hD.stdlib.h
(6)复合语句是用C括起来的语句组。
A.()B.[]C.{}D.<
>
(7)下列格式符中,哪一个可以用于以八进制形式输出整数C。
A.%dB.%8dC.%oD.%ld
(8)下列格式符中,哪一个可以用于以十六进制形式输出整数B。
A.%16dB.%8xC.%d16D.%d
(9)a是int类型变量,c是字符变量,下列输入语句中哪一个是错误的B。
A.scanf("
%d,%c"
a,&
c);
B.scanf("
%d%c"
a,c);
C.scanf("
D.scanf("
d=%d,c=%c"
(10)要使doublex;
longa;
的数据能正确的输出,输出语句应是D。
A.printf("
%d,%f"
a,x);
B.printf("
%d,%1f"
%1d,%1f"
a,&
x);
D.printf("
%1d,%lf"
2.程序改错题(以下各个程序段均有5个错误,请先找出错误的位置,然后再改正)
(1)以下程序的功能是,从键盘输入一个字符并鸣笛输出。
#include"
stdio.h"
mian()//main()
{charc//charc;
getchar(c);
//c=getchar();
putchar('
\007'
);
/*鸣笛*/
c=putchar();
//putchar(c);
//}
(2)以下程序的功能是,输入长方形的两边长(边长可以取整数和实数),输出它的面积和周长。
main//main()
{
inta,b,s,l;
//doublea,b,s,l;
scanf("
%d,%d"
b);
//scanf("
%lf,%lf"
s=a*b;
l=a+b;
//l=(a+b)*2;
printf("
l=%f,s=%f\n"
l);
//printf("
l=%lf,s=%lf\n"
l,s);
}
3.写出程序运行结果
(1)
main()
inta,b;
%2d%*2s%2d"
%d\n"
a+b);
运行时输入:
12345678//输出:
68
(2)
inta=3,b=5,x,y;
x=a+1,b+6;
y=(a+1,b+6);
x=%d\ny=%d\n"
x,y);
}
输出:
x=4
y=11
第4章选择结构程序设计习题
(1)选择结构程序设计的特点是___B____。
A.自上向下逐个执行B.根据判断条件,选择其中一个分支执行
C.反复执行某些程序代码D.以上都是
(2)假定所有变量均已正确定义,下列程序段运行后x的值是__B_。
a=b=c=0,x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
A.34B.4C.35D.3
(3)下面的程序片段所表示的数学函数关系是_A____。
if(x<
0)y=-1;
elseif(x>
0)y=1;
elsey=0;
(4)下列各语句序列中,能够且仅输出整型变量a、b中最大值的是(C)。
A.if(a>
b)printf("
a);
b);
B.printf("
if(a>
C.if(a>
elseprintf("
D.if(a<
(5)以下程序段的输出结果是A
intx=5;
if(x>
elseif(x==0)y=0;
elsey=1;
%d"
y);
A.1B.5C.0D.2
(6)程序段intx=5,y=8,max;
max=(x>
y)?
x:
y;
max);
的输出结果是B。
A.5B.8C.3D.13
(7)程序段intx=3,a=1;
switch(x){case4:
a++;
case3:
case2:
case1:
}printf("
的输出结果是D。
(8)下列语句应将小写字母转换为大写字母,其中正确的是(B)。
A.if(ch>
ch<
z'
)ch=ch-32;
B.if(ch>
)ch=ch-32;
C.ch=(ch>
ch-32:
’’;
D.ch=(ch>
'
ch;
2.阅读程序,写出运行结果
(1)
voidmain()
{
inta=10,b=4,c=3;
if(a<
b)a=b;
c)a=c;
%d,%d,%d\n"
a,b,c);
输出:
10,4,3
voidmain()
intx=100,a=10,b=20,ok1=5,ok2=0;
b)if(b!
=15)if(!
ok1)x=1;
elseif(ok2)x=10;
elsex=-1;
x);
-1;
(3)
intk,a=1,b=2;
k=(a++==b)?
2:
3;
k);
3
(4)
voidmain()
{
ints=1,k=0;
switch(s)
{
case1:
k+=1;
case2:
k+=2;
default:
k+=3;
}
printf(“%d”,k);
}输出:
6
(5)
break;
1
第5章循环结构程序设计习题
(1)for(i=1;
i<
9;
i+=1);
该循环共执行了B次。
A.7B.8C.9D.10
(2)inta=2;
while(a=0)a--;
该循环共执行了A次。
A.0B.1C.2D.3
(3)执行完循环for(i=1;
100;
i++);
后,i的值为B。
A.99B.100C.101D.102
(4)以下for语句中,书写错误的是D。
A.for(i=1;
5;
B.i=1;
for(;
C.for(i=1;
)i++;
D.for(i=1,i<
5,i++);
(5)C语句,在循环条件初次判断为假,还会执行一次循环体。
A.forB.whileC.do-whileD.以上都不是
(6)循环结构的特点是C。
A.从上至下,逐个执行B.根据判断条件,执行其中一个分支
C.满足条件时反复执行循环体D.以上都对
(7)i、j已定义为int类型,则以下程序段中内循环体的执行次数是A。
for(i=5;
i;
i--)
for(j=0;
j<
4;
j++){…}
A.20B.24C.25D.30
(8)C语言while语句中,用于条件的表达式是D。
A.关系表达式B.逻辑表达式C.算术表达式D.任意表达式
(9)inta=1,x=1;
循环语句while(a<
10)x++;
的循环执行D。
A.无限次B.不确定次C.10次D.9次
(10)下列程序段执行后s的值为A。
inti=1,s=0;
while(i++)if(!
(i%3))break;
elses+=i;
A.2B.3C.6D.以上均不是
(1)三种循环语句是等价价的。
(2)当循环体中的switch语句内有break语句,则只跳出swicth语句。
同样,当switch语句中有循环语句,内有break语句,则只跳出循环语句。
(3)循环体执行遇到continue语句时跳过本次循环进入下次循环。
(4)下列程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0,请为程序填空。
voidmain()
inti,x,y=1;
&
for(i=2;
i<
=x/2;
i++)
if(x%i==0){y=0;
break;
(5)输入N个实数,输出其中的最大值、最小值。
#include<
stdio.h>
intn,i;
floatno1,nmax,nmin;
n);
%f"
no1);
nmax=no1;
nmin=no1;
=n;
i++)
&
no1);
if(no1>
nmax)nmax=no1;
if(no1<
nmin)nmin=no1;
MAX=%fMIN=%f\n"
nmax,nmin);
(6)输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。
#include<
charch;
ints1=0,s2=0;
while((ch=getchar())!
)
if(ch>
9'
)s1++;
||ch>
=’A’||ch<
=’Z’)s2++;
3.阅读下列程序,写出程序运行的输出结果
{inty=9;
for(;
y>
0;
y--)
if(y%3==0){printf("
--y);
continue;
852
(2)main()
intk,n,m;
n=10;
m=1;
k=1;
while(k++<
=n)
m*=2;
m);
1024
{inti=5;
do
{switch(i%2)
{case4:
i--;
case6:
i--;
i=%d"
i);
}while(i>
0);
i=3i=1i=-1
(4)#include<
intk=0;
charc='
switch(c++)
case'
:
k++;
B'
k--;
C'
D'
k=k%2;
E'
k=k*10;
default:
k=k/3;
}while(c<
G'
);
k=%d\n"
k);
8
(5)输入数据:
2,4
ints=1,t=1,a,n;
inti;
scanf("
%d,%d"
for(i=1;
n;
i++){
t=t*10+1;
s=s+t;
s*=a;
SUM=%d\n"
s);
2468
4.程序改错
(1)以下程序是显示[200,300]所有能被7整除的数,每行显示5个数,此程序有5处错。
inti,n=0;
/*n用来记录每行已打印数的个数*/
while(i<
300)//while((i<
=300)&
(i>
=200))
{//i++;
if(i%7==0)//if(i%7!
=0)
//continue;
%5d"
i);
n=n+1;
if(n=5)/*满5个换行*///if(n==5)
p