C语言练习题及答案1.docx
《C语言练习题及答案1.docx》由会员分享,可在线阅读,更多相关《C语言练习题及答案1.docx(54页珍藏版)》请在冰豆网上搜索。
C语言练习题及答案1
C
语
言
练
习
题
1
第一章C语言概述
1、所有C函数的结构都包括的三部分是(C)
A.语句、花括号和函数体
B.函数名、语句和函数体
C.函数名、形式参数和函数体
D.形式参数、语句和函数体
2、C语言中主函数的个数是(B)
A.2个B.1个C.任意个D.10个
3、下面可能不影响程序正常运行的是(C)
A.语法错误B.逻辑错误
C.警告提示D.算法错误
4、一个C程序的执行是从(A)
A.本程序的main()函数开始,到main()函数结束.
B.本程序文件的第一个函数开始,到本程序文件第一个函数结束.
C.本程序文件的第一个函数开始,到本程序main函数结束.
D.本程序的main()函数开始,到本程序文件的最后一个函数结束.
5、C程序由(C)组成。
A.子程序B.主程序和子程序
C.函数D.过程
6、下列关于C语言注释的叙述中错误的是(D)。
A.以“/*”开头并以“*/”结尾的字符串为C语言的注释内容。
B.注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义。
C.程序编译时,不对注释作任何处理。
D.程序编译时,需要对注释进行处理。
7、C语言源程序经过编译后,生成文件的后缀是____C_____。
A、.c B、.exe C、.obj D、.cc
8、以下说法中正确的是____C_____。
A、C语言程序总是从第一个函数开始执行
B、在C语言程序中,要调用函数必须在main()函数中定义
C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分
9、以下叙述中正确的是__A____。
A:
C程序中注释部分可以出现在程序中任意合适的地方
B:
花括号"{"和"}"只能作为函数体的定界符
C:
构成C程序的基本单位是函数,所有函数名都可以由用户命名
D:
分号是C语句之间的分隔符,不是语句的一部分
第二章变量与表达式
第一节简单表达式
1.算术运算符及其表达式
1、C语言中运算对象必须是整型的运算符是_____A______。
A、% B、* C、+ D、/
2.下面运算符优先级最高的是(C)
A.<=B.=C.%D.&&
3、下面程序
main()
{
intx=10,y=3;
printf("%d\n",y=x/y);
}
的输出是___C___。
A:
0B:
1C:
3D:
不确定的值
4、执行下面程序段后,c3中的值是_A____
intc1=1,c2=2,c3;
c3=c1/c2;
A:
0B:
1/2C:
0.5D:
1
2.C语言表达式书写规则
1、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的C语言表达式是___A___。
A:
x/y*zB:
x*(1/(y*z))C:
x/y*1/zD:
x/y/z
2、设有定义:
floata=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是___B___。
A:
(a+b)*h/2B:
(1/2)*(a+b)*hC:
(a+b)*h*1/2D:
h/2*(a+b)
第二节变量
1.变量
1、下列关于C语言的关键字的叙述中错误的是(C)
A.关键字是C语言规定的具有特定意义的字符串,通常也称保留字。
B.用户定义的标识符不应与关键字相同。
C.ANSIC标准规定的关键字有64个。
D.ANSIC标准规定的关键字有32个。
2、下面关于C语言用户标识符的描述,正确的是(D)
A.不区分大小写B.用户标识符不能描述常量
C.类型名也是用户标识符D.用户标识符可以作为变量名
3、以下(D)是正确的变量名。
A.a.beeB.-p11C.intD.p_11
4、下面属于C语言标识符的是(D)
A.2abB.@fC.?
bD._a12
5、下列保留字中用于构成循环结构的是(B)
A.ifB.whileC.switchD.default
6、以下定义语句中正确的是(C)。
A.chara='A'b='B';B.floata=b=10.0;
C.inta=10,*b=&a;D.float*a,b=&a;
7、下面标识符中,不合法的用户标识符为(D)
A)PadB)a_10C)_12abD)int
8、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符_____C____。
A、必须为下划线B、可以是字母、数字和下划线中任一种字符
C、必须为字母或下划线D、必须为字母
9、请选出可用作C语言用户标识符的一组标识符____B__。
①void②a3_b3③For④2a
define_123_abcDO
WORDIFcasesizeof
A:
①B:
②C:
③D:
④
9、以下选项中合法的用户标识符是___B___。
A:
longB:
_2TestC:
3DmaxD:
A.dat
10、以下不能定义为用户标识符的是__D____。
A:
scanfB:
VoidC:
_3com_D:
int
11、在C语言中,如果下面的变量都是int类型,则输出结果是__A____
sum=pad=5;
pad=sum++,pad++,++pad;
printf("%d\n",pad);
A:
7B:
6bC:
5D:
4
2.常量和符号常量
1、以下(B)是错误的整型常量。
A.-0xcdfB.018C.0xeD.011
2、下列符号中用来表示C语言中的回车换行的是(B)
A.\” B.\n C.\b D.\\
3、以下(C)是正确的字符常量。
A."c"B.'\\''C.'W'D."\32a"
4、下面不正确的字符串常量是(A)
A)'abc'B)"12'12"C)"0"D)""
6、以下列出C语言常量中,错误的是__B____。
A:
OxFFB:
1.2e0.5C:
2LD:
'\72'
7、以下选项中,非法的字符常量是___C___。
A:
'\t'B:
'\17'C:
"\n"D:
'\xaa'
第三节数据类型
1.整型数据
1、以下选项中不属于C语言的类型的是__D____。
A:
signedshortintB:
unsignedchar
C:
singedlongD:
longshort
2、以下选项中可作为C语言合法整数的是___C___。
A:
10110BB:
0386C:
0XffaD:
x2a2
2.实型数据
1、以下选项中属于C语言的数据类型是___C___。
A:
复数型B:
逻辑型C:
双精度型D:
集合型
2、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是___C___。
A:
1B:
2C:
2.0D:
2.5
3、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是___C___。
A:
x=x*100+0.5/100.0;B:
x=(x*100+0.5)/100.0
C:
x=(int)(x*100+0.5)/100.0;D:
x=(x/100+0.5)/100.0;
4、以下符合C语言语法的实型常量是__C____。
A:
1.2E0.5B:
3.14159EC:
.5E-3D:
E15
3.字符型数据
1、判断char型变量ch是否为大写字母的正确表达式是____C_____。
A、‘A’<=ch<=‘Z’ B、‘A’<=chandch<=‘Z’
C、‘A’<=ch&&ch<=‘Z’ D、‘A’<=ch||ch<=‘Z’
2.设有语句chara='\72';则变量a(A) 。
A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法
3.判断变量ch中的字符是否为数字字符,最简单的正确表达式是(D)。
A)ch>=0&&ch<=9B)’0’<=ch<=’9’
C)ch>=’0’||ch<=’9’D)ch>=’0’&&ch<=’9’
4、设有说明语句:
chara='\72';则变量a__A____。
A:
包含1个字符B:
包含2个字符C:
包含3个字符D:
说明不合法
5、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是___A___。
A:
字符AB:
字符aC:
字符eD:
非法的常量
6、若有以下定义和语句:
charc1='b',c2='e';
printf("%d,%c\n",c2-c1,c2-'a'+'A');
则输出结果是___B____
A:
2,MB:
3,EC:
2,eD:
输出结果不确定
7、已知字符A的ASCII码为十进制的65,下面程序的输出是__A___
main()
{
charch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A:
67,DB:
B,CC:
C,DD:
不确定的值
8、若变量c为char类型,能正确判断出c为小写字母的表达式是D
A:
'a'<=c<='z' B:
(c>='a')||(c<='z')
C:
('a'<=C)and('z'>=c)D:
(c>='a')&&(c<='z')
4.类型转换
1、表达式‘f’+10的类型是____A_______。
A、intB、char C、double D、float
2、设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是___D___。
A:
6.500000B:
6C:
5.500000D:
6.000000
第四节赋值语句
1、若有定义:
inta=2;则正确的赋值表达式是(A)。
A.a-=(a*3)B.double(-a)C.a*3D.a*4=3
2、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是(C)
A)–3B)9C)–12D)6
3、请选出合法的C语言赋值语句__B____。
A:
a=b=58B:
i++;C:
a=58,b=58D:
k=int(a+b);
4、若变量已正确定义并赋值,下面符合C语言的表达式是___B___。
A:
a:
=b+1B:
a=b=c+2C:
int18.5%3D:
a=a+7=c+b
5、若变量a、i已正确定义,且i已正确赋值,合法的语句是__B____。
A:
a==1B:
++i;C:
a=a++=5D:
a=int(i);
6、以下非法的赋值语句是__C____。
A:
n=(i=2,++i);B:
j++;C:
++(i+1);D:
x=j>0;
7、以下选项中非法的表达式是___D___。
A:
0<=x<100B:
i=j==0C:
(char)(65+3)D:
x+1=x+1
8、若以下选项中的变量已正确定义,则正确的赋值语句是___C___。
A:
x1=26.8%3;B:
1+2=x2;C:
x3=0x12;D:
x4=1+2=3;
第五节复杂表达式
1.自增、自减运算符
1、设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是printf(“%d,%d\n”,x--,--y);(D)
A)10,3B)9,3C)9,2D)10,2
2、设i为整型变量,且值为100,则语句++i;执行后i的值是____B_____。
A、100 B、101 C、102 D、语句错
3.以下程序的输出结果是(B)。
#include
main()
{
inti=010,j=10;
printf("%d,%d\n",++i,j--);
}
A)11,10B)9,10C)010,9D)10,9
4.下列程序的运行结果是( A )
#define A 5
#define B A+1
main()
{inta;
a=B;
printf(″%d\n″a--);
}
A.6 B.5 C.4 D.出错
5、以下程序的输出结果是___A___。
#include
main()
{
inti=10,j=10;
printf("%d,%d\n",++i,j--);
}
A:
11,10B:
9,10C:
010,9D:
10,9
6、有如下程序
main()
{inty=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
运行该程序的输出结果是___D___。
A:
34B:
42C:
43D:
33
7、设x,y均为int型变量,且x=10,y=3,则以下数据的输出结果是Dprintf("%d,%d\n",x--,--y)。
A:
10,3B:
9,3C:
9,2D:
10,2
8、下列关于单目运算符++、--的叙述中正确的是___D___。
A:
它们的运算对象可以是任何变量和常量
B:
它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C:
它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D:
它们的运算对象可以是char型变量、int型变量和float型变量
9.main()
{intm=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
程序运行后的输出结果是__D____。
A:
3B:
5C:
-1D:
-2
10、有以下程序
main()
{chara='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);
}
程序运行后的输出结果是___A___。
A:
b,bB:
b,cC:
a,bD:
a,c
11、若有以下定义和语句:
inta=5
a++;
此处表达式a++的值是__B__
A:
7B:
6C:
5D:
4
2.关系运算符与关系表达式
1、设有intx,y;以下语句判断x和y是否相等,正确的说法是该语句(B)
if(x=y)printf("xisequaltoy.");
A.语法错B.不能判断x和y是否相等
C.编译出错D.能判断x和y是否相等
2、表达式:
10!
=9的值是___D___。
A:
trueB:
非零值C:
0D:
1
3.逻辑运算符与逻辑表达式
1、能表示条件0≤x≤100的表达式是(D)
A)0<=x<=100B.x>=0,x<=100
C)0≤x≤100D)x>=0&&x<=100
2、设有:
inta=1,b=2,c=3,d=4,m=2,n=2;
执行(m=a>b)&&(n=c>d)后n的值为(C)
A)0B)1C)2D)3
3、能正确表示a和b同时为正或同时为负的逻辑表达式是___D______。
A、(a>=0‖b>=0)&&(a<0‖b<0) B、(a>=0&&b>=0)&&(a<0&&b<0)
C、(a+b>0)&&(a+b<=0) D、a*b>0
4、设有定义inta=1,b=2,c=3;则下面的值为1的表达式是___A_______。
A、a&&7 B、a
c C、a&&!
b D、b〉=c
5、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是___D___。
A:
'a'&&'b'B:
a<=bC:
a||+c&&b-cD:
!
((a
c||1)
6、设a=5、b=6、c=7、d=8、m=2、n=2,执行
(m=a>b)&&(n=c>d)
后n的值为___B___。
A:
1B:
2C:
3D:
4
7、有如下程序段
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为___D___。
A:
trueB:
falseC:
0D:
1
8、设x、y、t均为int型变量,则执行语句:
x=y=3;t=++x||++y;后,y的值为____C__。
A:
不定值B:
4C:
3D:
1
9.以下程序的输出结果是__A____。
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d)
}
A:
1B:
0C:
非0的数D:
-1
10、有以下程序
main()
{inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a
printf("%d,%d\n",k,m);
}
程序运行后的输出结果是__C____。
A:
0,0B:
0,1C:
1,0D:
1,1
11、有以下程序
main()
{inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是C
A:
1,1,2B:
2,2,1C:
2,2,2D:
2,2,3
12、以下程序的输出结果是A
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);
}
A:
1B:
0C:
非0的数D:
-1
4.逗号运算符
1、若x,i,j,k都是int型变量,则执行下面表达式后x的值为____C____
x=(i=11,j=22,k=33)
A、11 B、22 C、33 D、66
2、若x和y都是int型变量,x=100、y=200,且有下面的程序片段
printf("%d",(x,y));
上面程序片段的输出结果是__A____。
A:
200B:
100C:
100200D:
输入格式符不够,输出不确定的值
3、若执行以下程序段,其输出结果是__B____
inta=0,b=0,c=0;
c=(a-=a-5),(a=b,b+3);
printf("%d,%d,%d\n",a,b,c);
A:
3,0,-10B:
0,0,5C:
-10,3,-10D:
3,0,3
第六节基本输入输出语句
2.格式化输入与输出函数
1、若有说明语句:
inta,b,c,*d=&c;,则能从键盘读入三个整数分别赋给变量a、b、c的语句是(A)
A.scanf("%d%d%d",&a,&b,d);B.scanf("%d%d%d",&a,&b,&d);
C.scanf("%d%d%d",a,b,d);D.scanf("%d%d%d",a,b,*d);
2、调用scanf(“%d,%d”,&a,&b);时,正确的键盘输入是(A)
A)10,20B)a=10,b=20C)10:
20D)1020
3、下面的程序段
inti=6;
printf(“***%-4d***\n”,i);
的输出是______B______。
A、***6*** B、***6***
C、***0006*** D、出错
4.已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是(D)。
#include
main()
{
charc1='A',c2='Y';
printf("%d,%d\n",c1,c2);
}
A)因输出格式不合法,输出错误信息B)65,90C)A,YD)65,89
5、以下程序的输出结果是__D____。
main()
{intk=17;
printf("%d,%o,%x\n",k,k,k);
}
A:
17,021,0x11B:
17,17,17C:
17,0x11,021D:
17,21,11
6、若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:
___B___。
A:
10
22
33
B:
10.0,22.0,33.0
C:
10.0
22.033.0
D:
1022
33
7、X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是___B___。
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);
8、已知i、j、k为int型变量,若从键盘输入:
1,2,3↙,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是__C____。
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);
9、设有定义:
longx=-123456L;,则以下能够正确输出变量x值的语句是___B___。
A:
printf("x=%d\n",x);B:
printf("x=%ld\n",x);
C:
printf("x=%8dL\n",x);D:
printf("x=%LD\n",x);
10、有以下程序段
intm=0,n=0;charc='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n