C语言练习题及参考答案.docx
- 文档编号:7528171
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:45
- 大小:50.78KB
C语言练习题及参考答案.docx
《C语言练习题及参考答案.docx》由会员分享,可在线阅读,更多相关《C语言练习题及参考答案.docx(45页珍藏版)》请在冰豆网上搜索。
C语言练习题及参考答案
练习题1及参考答案
1.单项选择题
(1)以下并非C语言的特点的是。
A.C语言简洁和紧凑
B.能够编制出功能复杂的程序
C.C语言可以直接对硬件进行操作
D.C语言移植性好
【答】B
(2)一个C程序的执行是从。
A.main()函数开始,直到main()函数结束
B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束
D.main()函数开始,直到最后一个函数结束
【答】A
(3)在C程序中,main()的位置。
A.必须作为第一个函数
B.必须作为最后一个函数
C.可以任意
D.必须放在它所调用的函数之后
【答】C
(4)一个C程序是由。
A.一个主程序和若干子程序组成
B.一个或多个函数组成
C.若干过程组成
D.若干子程序组成
【答】B
(5)下列说法正确的是。
A.在执行C程序时不是从main()函数开始的
B.C程序书写格式限制严格,一行内必须写一个语句
C.C程序书写格式比较自由,一个语句可以分行写在多行上
D.C程序书写格式严格要求一行内必须写一个语句,并要求行号
【答】C
2.填空题
(1)一个C源程序至少有①个main()函数和②个其他函数。
【答】①一②若干
(2)任何C语句必须以结束。
【答】分号
(3)C语言源程序的基本单位是。
【答】函数
(4)C编译程序的功能是。
【答】将C源程序编译成目标代码
练习题2及参考答案
1.单项选择题
(1)以下字符串为标识符的是。
A._MYB.2_2222C.shortD.LINE5
【答】A
(2)下列符号可以作为变量名的是。
A.+aB.*pC._DAYD.nextday
【答】C
(3)设c是字符变量,则以下表达式正确的是。
A.c=666B.c='c'C.c="c"D.c="abcd"
【答】B
(4)23+'m'+'b'的结果是型数据。
A.charB.doubleC.intD.longint
【答】和均为double型,运算结果也是double型。
本题答案为B。
(5)若变量已正确赋值,以下符合C语言语法的表达式是。
A.a=a+7;B.a=7+b+c,a++
C.int%4)D.a=a+7=c+b
【答】选项A错误,以分号结尾是一个语句而不是表达式;选项B正确,是一个逗号表达式;选项C错误,因为%求模运算的两个运算数必须均为整数;选项D错误,给一个表达式(a+7)而非变量赋值是不正确的。
本题答案为B。
(6)整型变量x=1,y=3,经下列计算后,x的值不等于6的表达式是。
A.x=(x=1+2,x*2)B.x=y>26:
5
C.x=9-(--y)-(--y)D.x=y*(int)2)
【答】选项A的计算过程——x=1+2=3,再计算x=x*2=6;选项B的计算过程——y>2为真,x=6;选项C的计算过程——式中有两个--运算,最后y=1,x=9-1-1=7;选项D的计算过程——x=y*(int)2)=y*2=6。
本题答案为C。
(7)若定义
intm=7,n=12;
则能得到值为3的表达式是。
A.n%=(m%=5)B.n%=(m-m%5)
C.n%=m-m%5D.(n%=m)-(m%=5)
【答】A、B、C、D选项各表达式的值分别是0、2、2、3。
本题答案为D。
(8)以下程序的运行结果是。
#include<>
main()
{
inti=5,j=6,m=i+++j;
printf("%d,%d,%d\n",i,j,m);
}
A.6,6,11B.5,6,11C.5,6,12D.6,6,12
【答】m=i+++j等价于m=(i++)+j。
本题答案为A。
(9)以下程序的运行结果是。
#include<>
voidmain()
{
doublef=;
intn;
n=(int)(f+10)%3;
printf("%d\n",n);
}
A.1B.0C.2D.3
【答】f+10=,(int)(f+10)=13,13%3=1。
本题答案为A。
(10)以下程序的运行结果是。
#include<>
voidmain()
{
intn,i=2,j=4;
n=(++i==j--);
printf("%d\n",n);
}
A.0B.1C.2D.3
【答】++i返回3,j--返回4,两者不等,故n=0。
本题答案为A。
2.填空题
(1)表达式语句与表达式的不同是。
【答】语句必须以分号结尾,而表达式结尾没有分号;语句可以出现在函数体中数据定义或声明语句后面的任何位置,而表达式只能出现在语句中规定的位置或表达式中(嵌套出现)。
(2)在C语言中可以利用将一个表达式的值转换成指定的类型。
【答】强制类型转换
(3)写出完成下列功能的表达式:
·如果变量c是大写字母,则将c转换成对应的小写,否则c的值不改变。
①
·如果d是数字,则将d转换成相应的整数,否则d的值不改变。
②
·返回两个整数x、y中较大者。
③
·返回三个整数x、y和z中最大者。
④
【答】①c=(c>='A'&&c<='Z')c-'A'+'a':
c
②d=(d>='0'&&d<='9')d-'0':
d
③(x>y)x:
y
④(x>y)(x>zx:
z):
(y>zy:
z)或(x>y&&x>z)x:
(y>zy:
z)
(4)以下程序的运行结果是。
#include<>
#include<>
main()
{
chars[]="ab\n\\\'\r\b";
printf("%d,%d\n",sizeof(s),strlen(s));
}
【答】字符串s由字符'a'、'b'、'\n'、'\\'、'\''、'\r'、'\b'等7个字符组成,故长度为7,但字符串本身有一个结束标志'\0'。
所以,s的长度为7,在内存中占用8个字节。
输出为:
8,7。
(5)以下程序的运行结果是。
#include<>
main()
{
inta=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d\n",y,x);
}
【答】结果为y=6,x=6。
(6)以下程序的运行结果是。
#include<>
main()
{
chara,b;
a='a';b='b';
a=a-32;b=b-32;
printf("%c,%c,%d,%d\n",a,b,a,b);
}
【答】A,B,65,66
(7)以下程序的运行结果是。
#include<>
main()
{
inti,j,x,y;
i=5;j=7;
x=++i;y=j++;
printf("%d,%d,%d,%d\n",i,j,x,y);
}
【答】执行x=++i后,i=6,x=6;执行y=j++后,j=8,y=7;所以输出为:
6,8,6,7。
(8)以下程序的运行结果是。
#include<>
main()
{
inta=1;
charc='a';
floatf=;
printf("①:
%d\n",a+2!
=c-100);
printf("②:
%d\n",(a>c)>=(f>4));
printf("③:
%d\n",!
a==!
f);
printf("④:
%d\n",(!
a&&1)!
=(!
c||1));
printf("⑤:
%d\n",(!
a>2)3:
0)<((f!
=1)0:
1);
printf("⑥:
%d\n",(1,2,3)==(3,3,3));
}
【答】①:
1(a+2=3,c-100=-3,表达式结果=1(真))
②:
1(a>c的结果是0(假),f>4的结果是0,表达式结果=1)
③:
1(!
a的结果是0,!
f的结果是0,表达式结果=1)
④:
1(!
a&&1的结果是0,!
c||1的结果是1,表达式结果=1)
⑤:
0(!
a>2的结果是0,(!
a>2)3:
0的结果是0,f!
=1的结果是1,(f!
=1)0:
1的结果是0,表达式结果=0)
⑥:
1((1,2,3)表达式的结果是3,(3,3,3)的结果是3
练习题3及参考答案
1.单项选择题
(1)以下说法正确的是。
A.输入项可以为一个实型常量,如scanf("%f",
B.只有格式控制没有输入项也能进行正确输入,如scanf("%d")
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f)
D.当输入数据时,必须指明变量的地址,如scanf("%f",&f)
【答】D
(2)若a为整型变量,则以下语句。
a=-2L;
printf("%d\n",a);
A.赋值不合法B.输出值为-2
C.输出为不确定值D.输出值为2
【答】B
(3)若x和y均定义为int型,z定义为double型,以下scanf()函数调用语句不合法的是。
A.scanf("%d%lx,%le",&x,&y,&z);B.scanf("%2d*%d%lf",&x,&y,&z);
C.scanf("%x%*d%o",&x,&y);D.scanf("%x%o%6.2f",&x,&y,&z);
【答】scanf()函数中没有精度控制。
本题答案为D。
(4)若a,b,c均定义为int型,要给它们输入数据,正确的输入语句是。
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);
【答】D
(5)若有定义和语句:
intn=10;
printf("%\n",n);
其输出结果是。
A.输出10B.输出一空行C.没有输出D.编译不通过
【答】D
(6)若a是float型变量,b是unsigned型变量,以下输入语句中合法的是。
A.scanf("%6.2f%d",&a,&b); B.scanf("%f%n",&a,&b);
C.scanf("%f%3o",&a,&b); D.scanf("%f%f",&a,&b);
【答】C
(7)字母a的ASCII码为97,则下列语句的运行结果为。
chara='a';
a--;
printf("%d,%c\n",a+'2'-'0',a+'3'-'0');
A.b,cB.a--运算不合法,故有语法错
C.98,cD.格式描述和输出项不匹配,输出无定值
【答】C
(8)若k1,k2,k3,k4均为int型变量,为了将整数10赋给k1和k3,将整数20赋给k2和k4,则对应以下scanf()函数调用语句的正确输入方式是。
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
【答】D
(9)有如下程序,输入数据12345678↙后,x的值是①,y的值是②。
#include<>
main()
{
intx;
floaty;
scanf("%3d%f",&x,&y);
}
①A.12345B.123C.45
【答】①B②A
(10)有如下程序,输入数据25,13,10↙后,正确的运行结果是。
#include<>
main()
{
intx,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);
}
A.x+y+z=48B.x+y+z=35
C.x+y+z=38D.不确定值
【答】输入的数据与scanf()函数的格式不匹配。
本题答案为D。
(11)有如下程序,输入数据12345↙后,x的值是①,y的值是②。
#include<>
main()
{
intx;
floaty;
scanf("%3d%f",&x,&y);
}
①A.12B.123C.12345D.0
②A.B.C.D.
【答】①A②B
(12)有如下程序,输入数据后,程序的运行结果是。
#include<>
main()
{
inta;
floatb,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("a=%d,b=%f,c=%f\n",a,b,c);
}
A.a=98,b=765,c=4321B.a=10,b=432,c=8765
C.a=98,b=,c=D.a=98,b=,c=
【答】C
(13)以下程序的运行结果是。
#include<>
main()
{
floata=;
printf("|%6.0f|\n",a);
}
A.||B.||C.|3|D.|3.|
【答】C
(14)以下程序的运行结果是。
#include<>
main()
{
floata=;
printf("|%06.0f|\n",a);
}
A.|000003|B.||C.||D.|3|
【答】A
(15)以下程序的运行结果是。
#include<>
main()
{
floata=;
printf("|%-6.0f|\n",a);
}
A.|3|B.|000003|C.||D.||
【答】A
(16)以下程序的运行结果是。
#include<>
main()
{
inti=010,j=10;
printf("%d,%d\n",++i,j--);
}
A.11.10B.9,10C.010,9D.10,9
【答】B
(17)以下程序的运行结果是。
#include<>
main()
{
intx=10,y=10;
printf("%d,%d\n",x--,--y);
}
A.10,10B.9,9C.9,10D.10,9
【答】D
2.填空题
(1)以下程序的运行结果是。
#include<>
main()
{
floatf=;
printf("%f,%5.4f,%3.3f",f,f,f);
}
【答】,,
(2)以下程序的运行结果是。
#include<>
main()
{
floatf=;
printf("%f,%g",f,f);
}
【答】,
(3)以下程序的运行结果是。
#include<>
main()
{
floatf=;
printf("%f,%e",f,f);
}
【答】,+001
(4)以下程序的运行结果是。
#include<>
main()
{
intx=0177;
printf("%3d,%6d,%6o,%6x,%6u\n",x,x,x,x,x);
}
【答】127,127,177,7f,127
(5)以下程序的运行结果是。
#include<>
main()
{
intx=0177;
printf("%-3d,%-6d,%-6o,%-6x,%-6u\n",x,x,x,x,x);
}
【答】127,127,177,7f,127
(6)以下程序的运行结果是。
#include<>
main()
{
charc='A'+10;
printf("c=%c\n",c);
}
【答】c=K
(7)以下程序输入123456↙后,其运行结果是。
#include<>
main()
{
inta,b;
scanf("%2d%3d",&a,&b);
printf("a=%d,b=%d\n",a,b);
}
【答】a=12,b=345
(8)以下程序输入ABC↙后,其运行结果是。
#include<>
main()
{
charc;
scanf("%3c",&c);
printf("c=%c\n",c);
}
【答】c=A
(9)以下程序输入100↙后,其运行结果是。
#include<>
main()
{
intn;
scanf("%o",&n);
printf("n=%d\n",n);
}
【答】n=64
(10)以下程序输入x=,y=50↙后,其运行结果是。
#include<>
main()
{
floatx,y;
scanf("x=%f,y=%f",&x,&y);
printf("x=%7.2f,y=%7.2f\n",x,y);
}
【答】x=,y=
(11)执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=,y=,
c1='A',c2='a'正确的数据输入形式是。
#include<>
main()
{
inta,b;
floatx,y;
charc1,c2;
scanf("a=%db=%d",&a,&b);
scanf("x=%fy=%f",&x,&y);
scanf("c1=%cc2=%c",&c1,&c2);
printf("a=%d,b=%d,x=%g,y=%g,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
}
【答】a=3b=7x=y=71.82c1=Ac2=a↙
3.编程题
(1)编写一个程序,求出任一输入字符的ASCII码。
【解】程序如下:
/*文件名:
*/
VC++
#include<>
main()
{
charc;
printf("输入字符:
");
scanf("%c",&c);
printf("字符%c的ASCII码为%d\n",c,c);
}
(2)编写一个程序,输入一个字符,依次输出其前导字符、该字符和后续字符。
【解】程序如下:
/*文件名:
*/
VC++
#include<>
#definepi
main()
{
charc;
printf("输入一个字符:
");
scanf("%c",&c);
printf("输出结果:
%c,%c,%c\n",c-1,c,c+1);
}
(3)编写一个程序,输出任意一个十进制整数对应的八进制数和十六进制数。
【解】直接使用printf()的格式符输出八进制数和十六进制数。
程序如下:
/*文件名:
*/
VC++
#include<>
main()
{
inti;
printf("输入一个整数:
");
scanf("%d",&i);
printf("%d(10)<=>%o(8)\n",i,i);
printf("%d(10)<=>%x(16)\n\n",i,i);
}
(4)编写一个程序,从键盘输入圆锥体的半径r和高度h,计算其体积。
【解】圆锥体体积的计算公式为:
v=π×r×r×h/3
程序如下:
/*文件名:
*/
VC++
#include<>
main()
{
floatr,h,pi=,v;
printf("圆锥半径,高度:
");
scanf("%f,%f",&r,&h);
v=pi*r*r*h/;
printf("圆锥体积=%g\n\n",v);
}
练习题4及参考答案
1.单项选择题
(1)if后面的逻辑表达式之值。
A.只能是0或1B.只能是正整数或负整数
C.只能是整型或字符型数据D.可以是任何类型的数据
【答】A
(2)为了避免嵌套的if-else语句的二义性,C语言规定else总是与组成配对关系。
A.缩排位置相同的ifB.在其之前未配对的if
C.在其之前最近的未配对的ifD.同一行上的if
【答】C
(3)选择出合法的if语句(设intx,a,b,c;)。
A.if(a=b)x++;B.if(a=
C.if(a<>b)x++;D.if(a=>b)x++;
【答】选项B、C、D中的比较运算符不正确,在选项A中,a=b返回b,若b为0或空字符,则为假,否则为真。
本题答案为A。
(4)以下不正确的if语句是。
A.if(x>y);
B.if(x=y)&&(x!
=0)x+=y;
C.if(x!
=y)scanf("%d",&x);elsescanf("%d",&y);
D.if(x 【答】B。 应改为if(x=y&&x! =0)x+=y; (5)若定义floatx;inta,b;,则正确的switch语句是。 A.switch(x) { case: printf("*\n"); case: printf("**\n"); } B.switch(x) { case: printf("*\n"); case3: printf("**\n"); } C.switch(a+b) { case1: printf"*\n"}; case1+2: printf("**\n") } D.switch(a+b) { case1: printf("*\n"); case2: printf("**\n"); } 【答】D (6)执行下列程序,输入为1的运行结果是①,输入为3的运行结果是②。 #include<> main() { intk; scanf("%d",&k); switch(k) { case1: printf("%d",k++); break; case2: printf("%d",k++); case3: printf("%d",k++); break; case4: printf("%d",k++); default: printf("Full! \n"); } } ①A.1B.2C.2345D.1234 ②A.3B.4C.34D.45 【答】①A②A (7)执行下列程序,输入为1的运行结果是①,输入为3的运行结果是②。 #include<>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习题 参考答案
![提示](https://static.bdocx.com/images/bang_tan.gif)