C语言期末复习题docx.docx
《C语言期末复习题docx.docx》由会员分享,可在线阅读,更多相关《C语言期末复习题docx.docx(37页珍藏版)》请在冰豆网上搜索。
![C语言期末复习题docx.docx](https://file1.bdocx.com/fileroot1/2023-2/25/9de18d1c-b4f3-4de8-b16f-3ccfcaf56187/9de18d1c-b4f3-4de8-b16f-3ccfcaf561871.gif)
C语言期末复习题docx
基本数据类型
一、选择题
1.下列数据中,不正确的数值或字符常量是(D)。
A.0.825e2B.5L
C.OxabcdD.ol3
2.以卞字符中,不正确的C语言转义字符是(B)。
A.'WB」\018‘
C.^xaa^D.'\f
3.已知大写字母A的ASC1I码值是65,小写字母a的ASCI1码是97,贝lj用八进制表示的字符常量‘\10「是(A)。
A.字符AB.字符aC.字符eD.非法的常量
4.以下选项中可作为C语言合法整数的是(C)。
A.10110BB.0386C.OXffaD.x2a2
5.以下符合C语言语法的实型常量是(C)。
A.1.2E0.5B.3.14.159EC..5E—3D.E15
6.已定义ch为字符型变量,以下赋值中错误的是(A)o
A.ch=V;B.ch=62+3;C.ch=NULL;D.ch=^xaa';
7.已定义c为字符型变量,则下列赋值中正确的是(C)o
A.c=*97*;B.c=“97”;C.c=97;D.c=uau;
8.C语言中授基本的数据类型包括(B)o
A.整型、实型、逻辑型B.整型、实型、字符型
C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型
9.在C语言中,合法的字符常量是(B)。
A..,\084,B.*\x43*C.'abfD.”\0”
10.已知在ASCII代码中,字母A的序号为65,以下程序的输出结果是(D)。
#include
main()
{charcl=*A;c2=*Yprintf(n%d,%d\nn,cl,c2);}
A.输出格式非法,输出错误信息B.65,90C.A,YD.65,89
二、填空题
1.C语言中,常量包括整型常量、实型常量、字符型常量和字符串
常量_0
2.C语言中,数据类空包括_基本类型_、—构造类型—、_指针类型_和_
空类型O
3.字符串ab在C语言中表示为。
4.C语言中的变量实际代表内存中的一个—连续的内存单元_。
5.在C语言中,整数可用—十—进制数、_八—进制数与—十六—进制数3种来表示,以ox打头的是_±丄进制数,以o打头的是_A_进制数。
6.若有说明语句:
charc=,\O35,;则变量c包含丄个字符。
三、简答题
1.C语言的基本数据类型有儿种,分别是什么,并指出各种数据类型的关键字?
基本数据类型分为三种:
整数型、实数型(浮点型)和字符型
int、floatxdouble、char、signed、unsigned、short、long.
2.常量和变量的区别是什么?
常量:
程序运行过程中,更值不发生改变的量。
变量:
程序运行过程中,更值可以发生改变的量。
区别:
常量是定义时可以对其设置值(数值常量除外),而在其后的任何时刻都不可以改变其值的,变量是可以在定义后的任何时刻改变其值的量。
3•在程序中如何使用变量?
必须先定义再使用,定义时可以直接赋值,也可以先定义再赋值。
4.字符和字符串表示形式有什么区别?
W和有什么不同?
9和9有何不同?
空字符*(y和空格字符「有何区别?
字符型常量是用单引号括起來的•个7符,字符串常量是用双引号括起來的字符序列S'在内存中占用一个字节。
”a”在内存中占用两个字节。
9表示整数9'9'表示一个ASCII码字符,ASC的值为57。
空字符⑷的ASCII码是0空格字符,ASCII码是32.
空字符表示没有字符空格字符门表示空白字符
运算符与表达式
一、选择题
1.在下列运算符中,优先级最高的运算符是(B)。
A.<=B.%C.=D.&&
2.若有代数式ae/be,则错误的C语言表达式是(B)。
A.a/b/c*eB.a*e/b*cC.a*e/b/cD.a*e/c/b
3.已知有以下变量定义:
inti=8,k,a,b;
unsignedlongw=5;
doublex=1.42,y=5.2;
则不符合C语言语法的表达式是(D)。
A.k=i++B.(int)x+0.4C.w+=-2D.a=2*a=3
4.运行以下程序段后,x的值为(D)。
intm=3,n=4,x;
x=-m-H-;〃x=・3,m=4
x=x+8/++n;//x=-3+8/5二3+1=-2
A.3B・5C.-1D.-2
5.设有以下定义
inta=0;
doubleb=1.25;
charc='A
#defined2
则下面语句中错误的是(D)。
A.a++;B.b++;C.c++;D.d卄;
6.设有如下程序段:
intx=2002,y=2003;
printf(“%d\n”,(x,y));(逗号表达式,送出最后一个变量的值)
则以卜-敘述中正确的是(D)。
A.输岀语句屮格式说明符的个数少于输出项的个数,不能正确输岀
B.运行时产空出错信息
C.输出值为2002
D.输出值为2003
7.以下非法的赋值语句是(C)。
A.n=(i=2,++i);B.j++;C.++(汁1);D.x=j>0;
8.设a和b均为double型变量,且a=5.5、b=2.5,贝!
J表达式(int)a+b/b的值是(D)。
A.6.500000B.6C.5.500000D.6.000000
9.若有以下程序:
main()
{
intk=2,i=2,m;
m=(k+=i*=k);
printf(”%d,%d\n”,m,i);
}
执行后的输出结果是(C)。
A.8,6B.8,3C.6,4D.7,4
10.若有定义:
inta=8,b=5,c;
执行语句c=a/b+0.4;后,c的值为(B)。
A.1.4B.1C.2.0D.2
11.F列选项中哪个是合法的标识符(C)。
A.charB.5abcC.t_aD._*m2
二、填空题
1.C语言中的表达式包括—算术表达式_、一赋值表达式_、—逻辑表达式_、—关系表达式一、—逗号表达式_和_条件表达式
2.C语言中的结合方向有左结合性和右结合性。
3.若有定义:
inta=0;则执行赋值语句a+=a*=a%=a-=15;后变量a中的值是
0o000-15
4.printfC'%d\n”,(int)(2.5+3.0)/3);的输出结果是1。
5.设intx=9;执行x+=3+x%(・3);后x的值为12。
6.假设变量a为整型,则执行a=3+5护4;printf(”%d\n”,a);后的输出结果是_8。
7.条件:
“0vx<8或xW4啲C语言表达式是_(x>0&&x<8)11x<=(・4)_。
8.设x和y均为int型变量,且x=l,y=2,贝0表达式1.0+x/y的值为_1.0。
9.在C语言中,要求运算数必须是整型的运算符是一%。
10.在C语言中,表示逻辑“假"的值用c
11・表达式7>6>5的值为—0
12.设a=0,b=l,c=2,则表达式3&&00||00
a||b+c&&b==c的值是0©
三、计算卜•列各表达式的值。
1.5/2+5.0/2+7%6=2+2.5+1=5.5
2.a=3,b=4,c=5,a+b>c&&b==c0
3.a=3*5,a*4,a+520
4.5>2>10
四、编程题
1•输入一个整数,取出它的个位数部分。
^include
mainO
{
intn,gw;
printf("inputanumber:
");
scanf("%d",&n);
gw=n%10;
printf("%d\n",gw);
return0;
}
2.输入一个浮点数,分别输出它的整数部分和小数部分。
#include
main()
{
floatx,xsw;
intzsw;
prints”inputanumber:
1');
scanf(n%f\&x);
zsw=(int)x;
xsw=x-zsw;
printf("整数位=%d,小数位=%f\n”,zsw,xsw);
return0;
}
顺序结构程序设计
一、选择题
1.请选岀合法的C语言赋值语句(D)。
A.a=b=58B.(汁1)++;C.a=58,b=58D.k=(int)a+b;
2.以下选项中,不正确的赋值语句是(D)。
A.t=t+l;B.nl=(n2=(n3=0));
C.k=i=j;D.a=b+c=l;
3.若冇定义:
inta?
b,c;,要给变量a,b,c输入数据,正确的输入语句是(A)。
A.scanf("%d%d%d",&a,&b,&c);
B.scanf(”%D%D%D”,&a,&b,&c);
C.read(a,b,c);
D.scanf(”%d%d%d”,a,b,c);
4.阅读程序:
#include
main()
{
inta;floatb,c;
scanf(n%2d%3f%,&a,&b,&c);
printf(n\na=%d,b=%f,c=%f*,a,b,c);
}
若运行时从键盘上输入987654321/,则程序的输出结果是(B)。
A.a=98,b=765,c=4321B.a=98,b=765.000000,c=4321.000000
C.a=98,b=765.0,c=4321.0D.a=98.0,b=765.0,c=4321.0
5.已知字母A的ASCII码为十进制的65,下血程序的输岀结果是(A)。
#include
main()
{
charchi,ch2;
chl=,A,+'5'-,3,;65+53-51
ch2='A'+W;65+54-51'D'=68
printf(u%d,%c\n",chl,ch2);
A.67,DB.B,CC.C,DD.不确定的值
6.设有如下定义:
intx=10,y=3,z;13
则语句:
printf(u%d\n'*,z=(x%y,x/y));的输出结果是(D)。
A.1B.0C・4D.3
7.若有以下定义和语句:
charcl-b',c2-e*;
printfC*%d,%c\n",c2-cl,c2」a屮A*);
则输出结果是(B)。
A.2,MB.3,EC.2,ED.输出结果不确定
8.以下叙述中正确的是(D)。
A.输入项可以是一个实型常量,例如:
scanf(u%f',3.5);
B.只冇格式控制,没有输入项,也能正确输入数据到内存,例如:
scanf("a=%d,b=%d”)
C.输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:
scanf("%4.2f',&d);
D.当输入数据时,必须指明变量地址,例如:
scanf(n%f',&f);
二、填空题
1.结构化程序设计所规定的三种基本控制结构是顺序结构、选择结构、循环结构。
2.输出字段宽为4的十进制数应使用%4d,字段宽度为6的十六进制数应使
用%6x,八进制整数应使用%。
,字段宽度为4的字符应使用%4c,
字段宽度为8,保留3位小数的实数应使用%8.3f,字段宽度为5的字符串应使
用%5s。
3.若冇定义:
intx=0;,则执行赋值语句:
x=(x=3+5,x*5);后,变量x中的值是40o
4.下血程序的输出结果是_17,21,11o
#include
main()
{
intk=17;
printf("%d,%o,%x\n”,k,k,k);
5.若冇定义:
inta=0,b=0,c=0;用下面语句输入时scanf(n%d”,&a);
scanf("%d”,&b);
scanf("%d”,&c);
从键盘输入:
1045<回车〉
则执行输入语句后,变量a的值是_10,变量b的值是4,变量c的
值是5o
三、编程题
1.编写程序,输入两个整数,求岀它们的商数和余数并进行输岀。
#include
main()
{
inta,b;
printfC*请输入两个整数a,b:
\nM);
scanf(n%d%d”,&a,&b);
pTintf(”商为%丑余数为%d\n“,1.0*a/b,a%b);
return0;
}
2.从键盘输入一个字符,输岀这字符的ASCII码的值。
#include
main()
{
charc;
printfC1请输入一个字符c:
W);
scanf(”%c”,&c);
printf(M%d\n",c);
return0;
}
3.用x,y,z表示长方体三边边长,编写程序求其表血积a和体积v,然后进行输出。
其中x,y,z通过键盘输入。
#include
main()
{
floatx,y,z,a,v;
printf(H请依次输入长方体的三边长x,y,z:
\nu);
scanf(n%f%f&y,&z);
printf("x=%.2f,y=%.2f,z=%.2f\n",x,y,z);
a=2*(x*y+x*z+y*z);
v=x*y*z;
printf(”其表面积a=%.2f,体积v=%.2f\n”,a,v);return0;
4.编写程序,从键盘上输入两个电阻的值,求它们并联和串联的电阻值,输出结果保留两位小数。
【提示】并联和串联的电阻值计算公式如下:
并联电阻错误!
未找到引用源。
串联电阻RS二R1+R2
#include
main()
{
floatrl,r2,RP,RS;
printfC请输入rl,r2的电阻值:
”);
scanf(M%f%f',&rl,&r2);
printf(nRP=%.2fQ,RS=%.2fQ\nM,(rl*r2)/(rl+r2),rl+r2);
i
I
选择结构程序设计
一、选择题
1•对于条件表达式(m)?
(a++):
(a・・)來说,其中的表达式m等价于(C)。
A.m=0B.m==1C.m!
=0D.m!
=l
2.下述程序(B)。
main()
{
intx=0,y=0,z=0;
贞x=y+z)
printf(,,####u);
else
}
A.有语法错误,不能通过编译B.输出衬桂
C.可以编译,但不能通过连接,因而不能运行D.输出####
3.下列条件语句中,功能与英他语句不同的是(D)。
A.if(a)printf(u%d\nn,x);elseprintf(”%d\n”,y);
B.if(a=0)printf(”%d\n”,y);elseprintf(”%d\n”,x);
C.if(a!
=0)printf(”%d\n”,x);elseprintf(”%d\n”,y);
D.if(a=0)printf(H%d\nM,x);elseprintf(”%d\n”,y);
4.有以F程序:
main()
{
inta=5,b=4,c=3,d=2;
if{a>b>c)
print"%d\nM,d);
elseif((c—l>=d)==1)
print”%d\n",d+1);
else
print”%d\nH,d+2);
}
执行后输出结果是(B)。
A.2B.3C.4D.编译时有错,无结果
5.有以下程序:
main()
{
inta=3,b=4,c=5,d=2;
if(a>b)
if(b>c)
printf("%d”,d+++l);
else
printf("%d”,++d+l);
printf(n%d\n”,d);
}
程序运行后的输出结果是(A)。
A.2B.3C.43D.44
6.以下程序
inti,a=3,b=2;
i=(—a==b-H-)?
—a汁+b;
printf(Mi=%da=%db=%d”,i,a,b);
输出结果是(A)。
A.i=la=lb=3B.i=3a=2b=3C.i=4a=lb=4D.i=4a=2b=4
7.以下能够正确判断char型变量c是否为大写字母的表达式是(C)。
A.CAy=c)AND(Z>=c)B.(A*<=c)&(Z>=c)
C.CA*<=c)&&(Z*>=c)D.以上答案都不対
8.有如下程序
main()
intx=l,a=O,b=O;switch(x)
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf(”a=%d,b=%d\n”,a,b);
}
该程序的输出结果是(A)。
A.a=2,b=lB.a=l,b=lC.a=l,b=0D.a=2,b=2
二、填空题
1.条件:
“202.当a=3,b=2,c=l时,执彳亍if(a>c);b=a;a=c;c=b;语句后a=1
b=3,c=3o
3.设"a=l,b=2,c=3,d=4;”则表示式"a>b?
a:
c>d?
c:
d”的值是。
4.以下程序运行的输出结果是_0。
main()
{
intp=30;
printf(,'%d\n,,,(p/32>0?
p/10:
p%3));
}
5.写出运行结果。
^include
main()
{
intx=0,y=0,z=0;
if(x=y+z)
printf(”?
?
?
?
”);
else
printf(”!
!
!
!
”);
}
结果:
!
!
!
!
o
6.卞列程序的功能是把从键盘上输入的整数収绝対值后输岀。
main()
{
intx;
scanf(”%d”,_&x」;
if(x<0)
X=-X;
printf(n%d\nM,x);
}
7.写出运行结果。
#include
main()
{
intx=O,a=O,b=l;
switch(x)
{
case0:
a++,b++;break;
case1:
a++;
case2:
b++;
}
printf(ua=%d,b=%d\n,,,a,b);
}
结果:
a=l,b=2o
三、编程题
1.编程实现,输入一个整数,判断该数的奇偶性(输出和应的标志:
even——偶数,
odd奇数)。
^include
main()
{
inta;
scanf(”%d”,&a);
if(a%2=0)
printf^'aiseven\nn);
else
printf(Maisodd\nn);
return0;
}
2.编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。
#include
main()
floatx,y;
scanf(”%f,%f;&x,&y);
ifi(x*x+y*y=l)
printf(”(x,y)在单位圆上\n“);
else
printf(n(x9y)不在单位圆上\n“);return0;
3.编程实现,给定一个整数,判断它是否能同时被3、5、7整除。
#include
main()
{
intx;
printf(”请输入一个整数x:
-);
scanf(”%d”,&x);
if((x%3==0)&&(x%5==0)&&(x%7==0))printf(n%d能同时被3、5、7整除。
\n“,x);
else
printf(”%d不能同时被3、5、7整除。
\n”,x);
return0;
}
4.编写程序,从键盘输入3个整数,按山小到大次序输出这3个数。
#include
main()
{
intx,y,z,t;
scanf(”%d%d%d”,&x,&y,&z);
if(x>y){
t=x;x=y;y=t;}
if(x>z){
t=z;z=x;x=t;}
if(y>z){
t=y;y=z;z=t;}
printf("Aftersorted:
%d%d%d\n”,x,y,z);
}
5.编写程序,输入一个x值,计算分段函数的值。
-乂x<0
y=«3x+20S.v<5
—3x25
#include
main()
floatx,y;
printff请输入x的值:
”);
scanf("%f',&x);
if(x<0)
y=(・x);
elseif(x>=0&&x<5)
y=3*x+2;
else
y=x*x-3;
printf(”尸%.2f\n”,y);
}
循环结构程序设计
一、选择题
1.在C语言中,为了结朿山while语句构成的循环,while后一对圆括号中表达式的值应该为(A)。
A.0B.1C.trueD.非0
2.如下程序段执行后输出(D)。
main()
{
intnum=0;
while(num<=2)
{
num++;
printf("%d”,num);
A.1234B.12C.1D.123
3.下血程序段执行时(A)。
x=-l;
do
{
x=x*x;
}while(!
x);
A.循环体将执行一次B.循环体将执行两次
C.循坏体将执行无限次D・提示有语法错误
4.以下的foi•循坏(B)。
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A.执行3次B.执行4次
C.循坏次数不定D.是无限循坏
5.执行语句:
for(i=l;i++<4;)后,变量i的值是(B)。
A.3B.4C.5D.不定
6.下面的程序段执行后sum