C语言习题集练习含答案Word格式.docx
《C语言习题集练习含答案Word格式.docx》由会员分享,可在线阅读,更多相关《C语言习题集练习含答案Word格式.docx(31页珍藏版)》请在冰豆网上搜索。
,({等表示缺少;
,({
'
T'
:
undeclaredidentifierT没有定义(T要先定义然后才能使用)
sqrt'
undefined;
sqrt如果是函数名则表示它的头文件没有包含
redefinitionT重复定义(可能是多次定义了T)
Cannotopenincludefile头文件的拼写或路径的不对
第二章数据类型,运算符与表达式
C的数据类型(整型,字符型,浮点型)及其定义方法。
2.
C运算符的种类、运算优先级和结合性。
3.
不同类型数据间的转换与运算。
4.
C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
1.C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为
大小写字母和下划线
。
2.字符常量使用一对单引号界定单个字符,而字符串常量使用一对双引号来界定若干个字符的序列。
3.浮点数有十进制小数形式;
(2)指数形式两种表示形式。
4.C语言%(取余的操作符)要求两个操作数是整型。
5.关系运算的值是整型。
6.Sizeof(int)的意义返回int型变量在内存中占的字节数
7.假设所有变量均为整型:
a=b=5;
i=++a;
j=b++;
则i等于6j等于5。
8.假设所有变量均为整型:
a=3;
b=5;
a>
b&
&
++a;
a<
b||++b则a等于3b等于5。
9.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+B)的值为9。
提示:
a=2,b=5,a++,b++,i=a,j=b,a+b的值
10.a=(2,5,2+5)则a的值为7。
11.表达式:
(int)(7.2/2)的值是3。
12.C语言中,不同运算符之间运算次序存在先后的区别,同一运算符之间运算次序存在结合性的规则。
13.32与八进制数40相等,75与十六进制数4b相等
14.已知x=2.5,a=7,y=4.7则x+a%3*(int)(x+y)%2/4的值是2.5
15.下列关于C语言用户标识符的叙述中正确的是(C)
A)用户标识符中可以出现下划线和字母,可以和关键字同名
B)用户标识符中不可以出现中划线,但可以出现下划线
C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
16.有以下程序
#include<
stdio.h>
{charc1,c2;
c1='
A'
+'
8'
-'
4'
;
c2='
5'
printf("
%c,%d\n"
c1,c2);
}已知字母A的ASCII码为65,程序运行输出后的结果是(A)
A)E,68B)D,69C)E,DD)输出无定值
17.以下各组标识符中,合法的用户标识符是(D)
A)B01table_10_tk%
B)Fast_voidpblbook
C)xy_longdouble*pCHAR
D)sjInt_xyw_y23
18.在C语言中,字符型数据在内存中以(D)形式存放。
A)原码B)BCD码C)反码D)ASCII码
19.已知字符’A’的ASCⅡ代码值是65,字符变量c1的值是’A’,c2的值是’D’。
执行语句printf("
%d,%d"
c1,c2-2);
后,输出结果是C
A)A,BB)A,68C)65,66D)65,68
20.1MB等于(D)
A)1000字节B)1024字节C)1000*1000字节D)1024*1024字节
21.与十六进制数200等值得十进制数为(B)
A)256B)512C)1024D)2048
22.设变量n为float型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是(B)
A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0
23.以下叙述中错误的是(D)
A)C程序中的#include和#define行均不是C语句
B)除逗号运算符外,赋值运算符的优先级最低
C)C程序中,j++;
是具有赋值功能的语句
D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算
24.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(D)
A)均占4个字节B)根据数据的大小来决定所占内存的字节数
C)由用户自己定义D)由C语言编译系统决定
25.已知x=10,y=20,则表达式y+=5+x的值为(C)
A)25B)-10C)35D)10
26.以下常量正确的是(D)
A)0X7a,078,6a,57L,
B)10.,-.5e3,1e0,0.0012e-101
C)‘’,‘\”’,‘\0127’,‘\xff’
D)56,-.3,.e2,1.2e2.1,”xy”
27.有以下定义语句,编译时会出现编译错误的是C
A)chara=’a’;
B)chara=’\n’;
C)chara=’aa’;
D)chara=’\x2d’;
第三章顺序结构
1.
赋值
输入与输出函数的调用,正确输入数据并正确设计输出格式。
常见的编程题
1.已知x=1,y=2,则表达式y*=5+x的值为12。
2.putchar(getchar());
从键盘上输入A。
则最终的输出是A。
3.printf函数和scanf函数的格式说明都使用%字符开始。
4.printf(“%-m.nf”,A);
其中-m表示长度为m,左对齐,n表示小数位长度为n。
5.已知a=17则printf(“%o,%#o”,a,A);
输出的结果是。
(#输出0八进制标志)
6.已知a=17则printf(“%*d,%d”,-5,a);
输出的结果是170。
*表示跳过改项目,%d没有对应会输出0
7.scanf处理输入数据时,遇到下列情况时该数据认为结束:
空格,
Tab,回车。
8.一般地,调用标准字符或格式输入输出库函数时,程序开头应有包含头文件的预编译命令:
stdio。
h
9.下列符合语法的赋值语句是(cd)
A)a=7+b=8;
B)++a=7;
C)a=b,b++,a+7;
D)a+=2*b,c=++b;
10.关于赋值过程中类型转换叙述错误的是(d)
A)实数赋值给整数变量时,将小数位不会四舍五入,会直接截断
B)整数赋值给实数变量时,整数位不变,小数位补0
C)整型变量赋值给short时,则只保留2个低字节
D)Double变量赋值给float变量,则只保留前面的7位有效数字
E)长度相同的有符号整型变量和无符号整型变量可以直接赋值
11.putchar()函数可以向终端输出一个。
d
A)整型变量表达式值B)实型变量值
C)字符串D)字符或字符型变量值
12.有以下程序
{printf("
%d\n"
NULL);
程序运行后的输出结果是(A)
A)0B)1C)-1D)NULL没定义,出错
13.执行下列程序片段时输出结果是(a)。
unsignedinta=65535;
A)65535B)-1C)-32767D)1
14.执行下列程序片段时输出结果是(B)。
floatx=-1023.012
printf(“\n%8.3f,”,x);
printf(“%10.3f”,x);
A)1023.012,-1023.012B)-1023.012,-1023.012
C)1023.012,-1023.012D)1023.012,1023.012
15.对于下述语句,若将10赋给变量k1和k3,将20赋给变量k2和k4,则应按(D)方式输入数据。
intk1,k2,k3,k4;
scanf(“%d%d”,&
k1,&
k2);
scanf(“%d,%d”,&
k3,&
k4);
A)1020↙B)1020↙C)10,20↙D)1020↙
1020↙1020↙10,20↙10,20↙
16.若运行时输入:
12345678↙,则下列程序运行结果为(d)。
main()
{inta,b;
scanf(“%2d%2d%3d”,&
a,&
b);
可以在后面加&
c就对了a
printf(“%d\n”,a+b);
}//按照教育部考试中心教材标准
A)46B)579C)5690D)出错
17.有定义语句:
intx,y;
scanf("
x=%d,y=%d"
&
x,&
y);
若想让x值为11,y值为12,下面四组键盘输入正确的是(D)
A)1112<
回车>
B)11,12<
C)a=11,b=12<
D)x=11,y=12<
18.阅读以下程序
{intcase;
floatprintF;
printf(“请输入2个数:
”);
scanf(“%d%f”,&
case,&
printF);
printf(“%d%f\n”,case,printF);
该程序在编译时产生错误,其出错原因是A
A)定义语句出错,case是关键字,不能用作用户自定义标识符
B)定义语句出错,printF不能用作用户自定义标识符
C)定义语句无错,scanf不能作为输入函数使用
D)定义语句无错,printf不能输出case的值
19.有以下程序
#include<
main()
{inta=1,b=0;
printf(“%d,”,b=a+B);
printf(“%d\n”,a=2+B);
程序运行后的输出结果是D
A)0,0B)1,0C)3,2D)1,3
20.有以下程序段
intm=0,n=0;
charc='
a'
scanf("
%d%c%d"
m,&
c,&
n);
%d,%c,%d\n"
m,c,n);
若从键盘上输入:
10A10<
,则输出结果是:
A
A)10,A,10B)10,a,10C)10,a,0D)10,A,0
21.在屏幕中显示如下字符(提示:
用printf)
****Hello*****
World
============
22.从键盘输入一个小写字母,将其变成大写字母输出?
(提示:
1.假定输入的字母一定符合要求2.大小写字母ASCII码相差32)
23.从键盘输入一个100—999之间的数,将该数的个,十,百位数字相加的和输出?
1.假定输入的数一定符合要求2.可以通过%,/实现)
inta,b,c,num,sum;
scanf(“%d”,&
num);
a=num%10;
b=num/10%10;
c=num/100;
sum=a+b+c;
printf(“%d”,sum);
第四章选择结构
1.逻辑关系的表示。
2.条件运算符。
3.用if语句实现选择结构。
4.用switch语句实现多分支选择结构。
5.选择结构的嵌套。
1.下面各逻辑表达式的值,设a=3,b=4,c=5。
(1)a>
b<
c:
1
(2)!
(a>
B)&
!
c||1:
(3)!
(x=A)&
(y=B)&
0:
0
2.下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”的要求(B)。
A)x%2==0B)!
x%2!
=0C)(x/2*2-x)==0D)!
(x%2)
3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是(C)。
A)(x>
=1)&
(x<
=10)&
(x>
=200)&
=210)
B)(x>
=1)||(x<
=10)||(x>
=200)||(x<
C)(x>
D)(x>
4.以下程序段中与语句k=a>
b?
(b>
c?
1:
0):
0;
功能等价的是(A)
A)if((a>
C))k=1;
B)if((a>
B)||(b>
C))k=1
elsek=0;
C)if(a<
=B)k=0;
D)if(a>
B)k=1;
elseif(b<
=C)k=1;
elseif(b>
C)k=1;
5.对if语句的理解错误的是:
(C)
A)if结构,将判断表达式的值视为逻辑值B)系统将if---else结构视为一条语句
C)else总是与其之前最近的且尚未配对的if配对D)else可以独立出现
(以下6到12题必须掌握)
6.有如下程序。
#include<
voidmain()
{
intn=20;
if(n<
10);
printf("
n<
10"
);
if(n=10)printf("
n=10"
else
if(n>
10)printf("
n>
elseprintf("
}
程序执行后输出的结果是:
7.有如下程序。
intn;
%d"
switch(n/10)
{
default:
printf("
E"
case6:
D"
case10:
case9:
A"
case8:
B"
case7:
C"
从键盘上输入的数是:
999,输出的结果是
100,输出的结果是
8.有如下程序。
intx,y;
charop;
x=20;
y=10;
%c"
op);
switch(op)
{case'
:
y+=x;
break;
case'
y-=x;
*'
y*=x;
/'
y/=x;
default:
y);
从键盘上输入的字符是:
’+’,输出的结果是
9.以下if嵌套中实现的逻辑意义不同的是
(1)voidmain()
scanf("
if(n==10)printf("
(2)#include<
if(n!
=10)
elseprintf("
n=10"
(3)
10.下面程序的输出结果是:
#include<
intx=100,a=20,b=10;
intv1=5,v2=0;
if(a<
B)
if(b!
=15)if(!
v1)
x=1;
else
if(v2)x=10;
x=-1;
x);
11.有如下程序段。
if(a<
if(c<
D)x=1;
else
C)
if(b<
D)x=2;
elsex=3;
elsex=6;
elsex=7;
当a=1,b=3,c=5,d=4时执行完下面一段程序后x的值是
当a=4,b=3,c=5,d=4时执行完下面一段程序后x的值是
当a=1,b=3,c=4,d=3时执行完下面一段程序后x的值是
当a=1,b=3,c=1,d=1时执行完下面一段程序后x的值是
12.有三个整数a,b,c,由键盘输入,输出其中最大的数。
13.某商店推出打折活动,要求购物达到或超过2000元的打八折,购物达到或超过1000元不到2000元的打八五折,购物达到或超过500元不到1000元的减50元,购物不到500元的原价,请写出相应的程序(分别用switch和if—else结构)
13.随机给出一个不多于5位的数,计算出他的位数,按个十百千的顺序输出。
第五章循环结构
for循环结构。
while和do-while循环结构。
continue语句和break语句。
循环的嵌套。
1.C语言三个循环语句分别是while语句,do-while语句和for语句。
2.至少执行一次循环体的循环语句是do-while。
3.以下对循环结构相关知识描述错误的(E)。
A)循环结构需要包含结束循环的条件,否则循环结构将陷入死循环
B)break的意义是直接跳出循环结构,continue的意义是结束本次循环进入下次循环
C)死循环是指无限循环下去,永远不结束,所以死循环一定是有害的
D)for循环结构的表达式1,只执行一次
E)for循环结构的表达式1,2,3都可以省略,所以表达式1,2,3之间的分号可以省略
F)for循环结构如表达式2省略,则系统认为表达式2的值永远为真
4.下面程序段
intn=2;
while(n=0){printf(“%d”,n);
n--;
则下面描述中正确的是(C)。
A)while循环执行2次B)循环是无限循环
C)循环题语句一次也不执行D)循环体语句执行一次
5.下述程序段中,(C输出5150)与其他程序段的作用不同。
A)s=0;
k=1;
B)s=0;
while
(1){Repeat:
s+=k;
s+=k;
k=k+1;
if(++k<
=100)
if(k>
100)break;
gotoRepeat;
}printf(“\n%d”,s);
输出5050
printf(“\n%d”,s);
输出5050
C)k,s=0;
D)s=0;
for(k=1;
k<
=100;
s+=++k);
do
s+=k;
while(++k<
=100);
6.以下程序段的循环次数是(B)。
for(i=2;
i==0;
)printf(“%d”,i--);
A)无限次B)0次C)1次D)2次
7.有以下程序
main()
{inti,n=0;
for(i=2;
i<
5;
i++)
{do
{if(i%3)continue;
n++;
}while(!
i);
printf(“n=%d\n”,n);
}程序执行后的输出结果是(D)
A)n=5B)n=2C)n=3D)n=4
8.下面程序的输出结果是。
{intx=9;
for(;
x>
0;
x--){
if(x%3==0){
printf(“%d”,--x);
continue;
9.有以下程序
{intx=0,y=5,z=3;
while(z-->
0&
++x<
5)y=y-1;
printf(“%d,%d,%d\n”,x,y,z);
}程序执行后的输出结果是
10.下面程序的功能是输出以下形式的金字塔图案是:
*
***