C语言第二章到第八章课后习题及答案.docx
- 文档编号:12870787
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:61
- 大小:35.95KB
C语言第二章到第八章课后习题及答案.docx
《C语言第二章到第八章课后习题及答案.docx》由会员分享,可在线阅读,更多相关《C语言第二章到第八章课后习题及答案.docx(61页珍藏版)》请在冰豆网上搜索。
C语言第二章到第八章课后习题及答案
第二章
习题
1、以下选项中可作为C语言合法常量的是
A)-80.
B)-080
C)-8e1.0
D)-80.0e
2、以下不能定义为用户标识符的是
A)Main
B)_0
C)_int
D)sizeof
3、以下选项中,不能作为合法常量的是
A)1.234e04
B)1.234e0.4
C)1.234e4
D)1.234e0
4、以下不能正确计算代数式值的C语言表达式是
A)1/3*sin(1/2)*sin(1/2) B)sin(0.5)*sin(0.5)/3
C)pow(sin(0.5),2)/3 D)1/3.0*pow(sin(1.0/2),2)
5、以下能正确定义且赋初值的语句是
A)int n1=n2=10; B)char c=32;
C)float f=f+1.1; D)double x=12.3E2.5;
6、设有定义:
int k=1,m=2; float f=7;,则以下选项中错误的表达式是
A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m
7、设有定义:
int a=2,b=3,c=4;,则以下选项中值为0的表达式是
A)(!
a==1)&&(!
b==0) B)(a
c||1
C)a&&b D)a||(b+b)&&(c-a)
8、有以下程序段
int k=0,a=1,b=2,c=3;
k=a
b:
a; k=k>c?
c:
k;
执行该程序段后,k的值是
A)3 B)2 C)1 D)0
9、若以下选项中的变量已正确定义,则正确的赋值语句是
A)x1=26.8%3 B)1+2=x2C)x3=0x12D)x4=1+2=3;
10、以下4个选项中,不能看作一条语句的是
A){;} B)a=0,b=0,c=0; C)if(a>0); D)if(b==0)m=1;n=2;
11、若变量x,y以正确定义并赋值,以下符合c语法的表达式是
A.++x,y=x-- B.x+1=y c.x=x+10=x+yD.double(x)/10
12、以下叙述中错误的是
A)C程序中的#include和#define行均不是C语句
B)除逗号运算符外,赋值运算符的优先级最低
C)C程序中,j++;是赋值语句
D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算
二、填空题
1.intk=11,则k++后表达式的值_____和变量k的值______。
2.doublex=3.2,++x后表达式的值_____和x的值_______。
3.表达式3.5+1/2的计算结果是_____。
4.把a1、a2定义成双精度实型变量,并赋初值1的定义语句是____。
5.表达式s=10应当是读做“_________”。
三、上机改错题
1.请指出以下C程序的错误所在:
#includestdio.h
main();/*mainfunction*/
floatr,s;/*/*risradius*/,/*sisareaofcircular*/*/
r=5.0;
s=3.14159*r*r;
printf(“%f\n”,s)
2.请指出以下C程序的错误所在:
main/*mainfunction*/
{
floata,b,c,v;/*a,b,caresides,vsivolumeofcube*/
a=2.0;b=3.0;c=4.0
v=a*b*c;
printf(“%f\n”,v)
}
答案
一.选择题
1.A2.D3.B4.A5.B6.D7.A8.B9.C10.D11.A12.D
二.填空题
1.11,122.4.2,4.23.3.54.doublea1=1,a2=1;5.把10赋值给变量s
三.略
第三章
习题
一、选择题
(1)有以下程序
main()
{intm,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是
a)m=123n=456p=789
b)m=123n=456p=789
c)m=123,n=456,p=789
d)123456789
(2)已知i、j、k为int型变量,若从键盘输入:
1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是
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);
(3)设有定义:
longx=-123456l;,则以下能够正确输出变量x值的语句是
a)printf(“x=%d\n”,x);b)printf(“x=%1d\n”,x);
c)printf(“x=%8dl\n”,x);d)printf(“x=%ld\n”,x);
(4)以下程序段的输出结果是
inta=1234;
printf("%2d\n",a);
a)12b)34c)1234d)提示出错、无结果
(5)x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是
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);
(6)若变量已正确说明为float类型,要通过语句scanf(“%f%f%f”,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:
a)10<回车>b)10.0,22.0,33.0<回车>
22<回车>
33<回车>
c)10.0<回车>d)1022<回车>
22.033.0<回车>33<回车>
(7)有如下程序
main0
{inty=3,x=3,z=1;
printf(“%d%d\n”,(++x,y++),z+2);
}
运行该程序的输出结果是
a)34b)42c)43d)3
(8)有以下程序
main()
{intm,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是
A)m=123n=456p=789
B)m=123n=456p=789
C)m=123,n=456,p=789
D)123456789
(9)有以下程序
#include
main()
{char c1=1,c2=2;
c1=getchar(); c2=getchar(); putchar(c1); putchar(c2);
}
当运行时输入:
a<回车> 后,以下叙述正确的是
A)变量c1被赋予字符a,c2被赋予回车符
B)程序将等待用户输入第2个字符
C)变量c1被赋予字符a,c2中仍是原有字符2
D)变量c1被赋予字符a,c2中将无确定值
(10).有以下程序
main()
{char a1=’M’,a2=’m’;printf("%c\n",(a1,a2)); }
以下叙述中正确的是
A)程序输出大写字母M B)程序输出小写字母m
C)格式说明符不足,编译出错 D)程序运行时产生出错信息
二、填空题
1.若有以下定义,请写出以下程序段中输出语句执行后的输出结果。
inti=-100,j=2300;
printf(“
(1)%d,%d”,i,j);
printf(“
(2)i=%d,j=%d\n”,i,j);
printf(“(3)i=%d\nj=%d\n”,i,j);
2.变量i,j,k已定义为int型并均有初值0,用以下语句进行输入时;
scanf(“%d”,&i);scanf(“%d”,&j);scanf(“%d”,&k);
从键盘输入12.3
则变量i,j,k的值分别是
(1),
(2),(3)。
3.以下程序段要求通过scanf语句给变量赋值,然后输出变量的值。
写出运行时给k输入50,给m输入13.61,给n输入3.14159时的三种可能的输入形式为
(1),
(2),(3)。
intk;floatm;doublen;
scanf(“%d%f%lf”,&k,&m,&n);
printf(“k=%d,m=%f,n=%f\n”,k,m,n);
4、有以下程序
#include
main()
{ charch1,ch2; intn1,n2;
ch1=getchar(); ch2=getchar();
n1=ch1-‘0’; n2=n1*10+(ch2-‘0’);
printf("%d\n",n2);
}
程序运行时输入:
12<回车>,执行后输出结果是__。
5、已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:
B33<回车>.输出结果是
#include"stdio.h"
main()
{
chara,b;
a=getchar();scanf("%d",&b);
a=a-'A'+’0’;
b=b*2;
printf("%c%c\n",a,b);
}
三.编程题
1.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=‘a’,c2=‘b’。
想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出,凵表示空格)。
a=凵3凵凵b=凵4凵凵c=凵5
x=1.200000,y=2.400000,z=-3.600000
x+y=凵3.600凵凵y+z=-1.20凵凵z+x=-2.40
c1=ˊaˊ凵or凵97(ascii)
c2=ˊbˊ凵or凵98(ascii)
2.用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊaˊ,c2=ˊaˊ,问在键盘上如何输入?
main()
{
inta,b;floatx,y;charc1c2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
答案
一、选择题
1、A2、C3、B4、C5、B6、B7、D8、A9、A10、B
二、填空题
1、
(1)-100,2300
(2)i=-100,j=2300
(3)i=-100
J=2300
2、
(1)12
(2)0(3)0
3、
(1)5013.613.14159
(2)50
13.61,3.14159
(3)50
13.61
3.14159
4.125.1B
三、编程题
1、
参考源程序如下:
main()
{inta=3,b=4,c=5;
longintu=51274,n=128765;
floatx=1.2,y=2.4,z=3.6;
charc1='a',c2='b';
printf("a=%2db=%2dc=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ldn=%9ld\n",u,n);
printf("%s%s%d%s\n","c1='a'","or",c1,"(ASCII)");
printf("%s%s%d%s\n","c2='a'","or",c2,"(ASCII)");
}
2、输入方法如下:
a=3凵b=7
凵x=8.5凵y=71.82
凵c1=A凵c2=a
3、
参考源程序:
main()
{floatr,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
printf("C1=%.2f\n",C1);
printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);
}
第四章
一、选择题
1、以下叙述中正确的是()
a)c语言程序总是从第一个定义的函数开始执行
b)在c语言程序中,要调用的函数必须在main()函数中定义
c)c语言程序总是从main()函数开始执行
d)c语言程序中的main()函数必须放在程序的开始部分
2、已定义了以下函数:
test(floatx)
{printf(“%d\n”,x*x);}
该函数的类型是()
a)与参数x的类型相同b)void类型c)int类型d)无法确定
3、有以下程序:
#include
intfunc(inta,intb)
{intc;
c=a+b;returnc;}
main()
{intx=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf(“%d\n”,r)
}
程序输出结果是
a)11b)20c)21d)31
4、有以下程序:
#include
intfun(inta,intb,intc)
{c=a*b;}
main()
{intc;
fun(2,3,c);printf(“%d\n”,c);
}
程序的输出结果是
a)0b)1c)6d)无定值
二、填空题
1、以下程序的输出结果是。
#include
doublesub(doublex,doubley,doublez)
{y-=1.0;z=z+x;returnz;
}
main()
{doublea=2.5,b=9.0;
printf(“%f\n”,sub(b-a,a,a));
}
2、以下程序的输出结果是。
#include
intfun2(inta,intb)
{intc;
c=(a*b)%3;
returnc;
}
intfun1(inta,intb)
{intc;
a+=a;b+=b;
c=fun2(a,b);
returnc*c;
}
main()
{intx=11,y=19;
printf(“%d\n”,fun1(x,y));
}
3.以下程序的执行结果是:
#include
doublesub(doublex,doubley,doublez)
{y-=1.0;z=z+x;returnz;}
main()
{
doublea=2.5,b=9.0;
printf(“%f\n”,sub(b-a,a,a));
}
三、编程题
1、编写函数intmymod(inta,intb)用以求a被b除之后的余数。
2、编写函数用以求表达式x2-5x+4的值,x作为参数传送给函数。
调用此函数求:
y1=22-5*2+4
y2=(x+15)2-5*(x+15)+4
y3=sin2x-5*sinx+4
y1的值为-2.0;x为0.5时,y2的值为166.75,y3的值为1.832721
答案
一、选择题
1、C2、C3、C4、D
二、填空题
1、9.02、43、9.0(或9.000000)
三、编程题
1、解:
参考源程序:
intmymod(inta,intb)
{
intc;
c=a%b;
returnc;
}
2、本题已给出了函数需要求值的表达式,读者只需确定函数的类型和形参的类型,就可以写出函数:
doublefun(doublex){returnx*x-5*x+4;}
读者应当写出正确的调用语句。
第五章
一、选择题:
1.在下面的条件语句中(其中S1和S2表示C语言语句),只有一个在功能上与其他三个语句不等价()。
A)if(a)S1;elseS2;B)if(a==0)S2;elseS1;
C)if(a!
=0)S1;elseS2;D)if(a==0)S1;elseS2;
2.以下程序的运行结果是()。
main()
{
intm=5;
if(m++>5)
printf(“%d\n”,m);
else;
printf(“%d\n”,m--);
}
A)4B)5C)6D)7
3.C语言对嵌套if语句的规定是:
else总是与()。
A)其之前最近的if配对B)第一个if配对
C)缩进位置相同的if配对D)其之前最近的且尚未配对的if配对
4.下面是错误的if语句(设intx,a,b;)()。
A)if(a=b)x++;B)if(a=
C)if(a-b)x++;D)if(x)x++;
5.以下程序片段()。
main()
{
intx=0,y=0,z=0;
if(x=y+z)
printf(“***”);
else
printf(“###”);
}
A)有语法错误,不能通过编译B)输出:
***
C)可以编译,但不能通过连接,所以不能运行。
D)输出:
###
6.对下述程序,()是正确的判断。
main()
{
intx,y;
scanf(“%d,%d”,&x,&y);
if(x>y)
x=y;y=x;
else
x++;y++;
printf(“%d,%d”,x,y);
}
A)有语法错误,不能通过编译。
B)若输入3和4,则输出4和5
C)若输入4和3,则输出3和4。
D)若输入4和3,则输出4和5
7.下述程序的输出结果是()。
main()
{
inta=0,b=0,c=0;
if(++a>0||++b>0)
++c;
printf(“%d,%d,%d”,a,b,c);
}
A)0,0,0B)1,1,1C)1,0,1D)0,1,1
8.以下程序输出结果是()。
main()
{
intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf(“a=%d,b=%d”,a,b);
}
A)a=1,b=0B)a=2,b=1C)a=1,b=1D)a=2,b=2
9.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()。
if(a
if(c else if(a if(b elsex=3; elsex=6; elsex=7; A)1B)2C)3D)4 10.若inti=10;执行下列程序后,变量i的正确结果是()。 switch(i) { case9: i+=1; case10: i+=1; case11: i+=1; default: i+=1; } A)10B)11C)12D)13 二.编程题 1.写一程序,判断某一年是否闰年。 2.输入某年某月某日,判断这一天是这一年的第几天? 3.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 4.一个5位数,判断它是不是回文数。 即12321是回文数,个位与万位相同,十位与千位相同。 5.某单位的工资是这样计算的: 工资=基本工资+工龄工资; 工龄为1年: 工龄工资=基本工资*0.1; 工龄为2—3年: 工龄工资=基本工资*0.25; 工龄为4—5年: 工龄工资=基本工资*0.5; 工龄为6—8年: 工龄工资=基本工资*0.8; 工龄大于8年的: 工龄工资=基本工资*工龄*0.1; 基本工资为1500元。 要求从键盘输入教师的工龄,可以根据工龄计算该教师的基本工资。 答案 一、选择题 1.D2.C3.D4.A5.D6.A7.C8.B 9.B10.D 二编程题 1.其中: leap代表闰年的信息,leap=1闰年,leap=0非闰年。 程序为: main() { intyear,leap; scanf(“%d”,&year); leap=0; if((year%4==0&&year%100! =0)|
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第二 第八 课后 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)