C语言作业.docx
《C语言作业.docx》由会员分享,可在线阅读,更多相关《C语言作业.docx(12页珍藏版)》请在冰点文库上搜索。
C语言作业
本周五的4节课已调、已补。
在周五及以前时间完成以下题目。
不要等不要靠,小明就掌握在自己手中。
按下述要求答题:
对于程序代码类的选择题、阅读理解填充题,务必手工执行分析结果。
录入代码到计算机只是为了验证自己的分析是否正确,切勿直接运行来获取结果。
一道题,如果你能讲出令人信服的道理,则你给出的答案应该是正确的。
在答题时,请务必写出答题的理由和解题过程。
请标清题号(不抄题目)。
编程题需要书写完整的代码。
习题2
1.选择题
(1)一个C语言程序总是从______开始执行的。
A.程序中第一个函数B.main函数
C.包含文件(头文件)的第一个函数D.程序中的第一个语句
(2)以下叙述正确的是______。
A.程序中每一行只能写一条语句B.程序中注释会参与编译
C.C语言语句必须以分号作为结束符D.程序的基本组成单位是语句
(3)合法的用户自定义标识符是______。
A.βB.includeC.a_b_c258D.char
(4)C语言中操作数必须为整型的是______。
A.%B.++C./D.=
*(5)以下合法的字符常量为______。
A.'ab'B.'a'C.65D.'\n'
*(6)以下合法的浮点型常量是______。
A.1.5e+2LB.1.5e+2.4C.e-3D.1.5e+5
(7)若有inti;,则执行语句i=8.8;后,i的值为______。
A.8B.9C.8.8D.不确定
(8)若有inta,b,c;并且已赋大于1的值,则表达式
的正确书写是______。
A.1/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD.1.0/a/b/c
E.1.0/(a*b*c)F.1/(float)(a*b*c)G.(float)1/a/b/cH.(float)(1/a/b/c)
*(9)以下程序段执行后c的值为______。
inta=8,b=5,c;
chard='A';
c=a/b+d%a+0.5;
A.2B.2.5
C.3D.类型不一致,无法计算,编译出错
(10)以下程序段执行后输出结果为______。
inta=20;
intb=3;
printf("%d\n",a+=(b%=2));
A.20B.21C.0D.23
(11)以下程序段执行后输出结果为______。
inti=65;
putchar(i);
printf(",%d",i);
printf(",%c",i);
A.A,65,AB.65,65,AC.A,A,65D.A,A,A
(12)在内存中,若int型数据占四个字节,float型数据占四个字节,double型数据占8个字节,以下程序段执行后的输出结果是______。
floata=2;
intb=3;
printf("%d",sizeof(a*b)+2/5);
A.1B.2C.3D.4
*(13)假设int型占2个字节,以下程序段执行后的输出结果是______。
inti=-2;
printf("%u",i);
A.0B.-2C.65534D.65535
(14)以下程序段执行后z的值为______。
intx,y,z,a=100;
x=a++;
y=--a;
z=x+y-a--;
A.100B.99C.101D.102
*(15)以下程序段执行后输出结果是______。
intx,a,i=1;
printf("%d,%d",-i++,(x=a=3.6*3));
A.-1,10B.-2,1.8C.0,3D.1,10
(16)以下程序段执行后输出结果是______。
intx=1,y=5,z=9,a;
a=(x,y,z);
printf("%d",a);
A.1B.5C.9
(17)以下程序段执行后输出结果是______。
intx=1,y=5,z=9,a;
a=(x++,++y,--z);
printf("%d,%d,%d,%d",x,y,z,a);
A.2,6,8,1B.2,6,8,8C.2,6,8,9D.1,5,9,9
(18)以下程序段执行后输出结果是______。
intx=1;
floaty=-2,z=3,a;
a=sqrt(fabs(x+y)+(int)(z/y)-(z>y));
printf("%f",a);
A.1B.1.0C.1.414D.有错
2.填空题
*
(1)设a为int型变量,请用两种方式写出“x是奇数”的关系表达式______。
*
(2)若有inta=3;,则执行语句a+=a-=a*a后,变量a的值是______。
*(3)若有程序段:
inta=2,b=3,c=4;
a*=5+(b++)-(++c);
printf("%d,%d,%d",a,b,c);
则执行后,输出结果是______。
*(4)若floatPI=3.14159;,则执行语句printf("%f\n",(int)(PI*1000+0.5)/1000.0);后的输出结果是______,功能是______。
(5)以下程序的功能是输入一个小写字母,输出对应的大写字母。
请将程序补充完整。
#include
intmain()
{
charc;
______;/*从键盘输入一个小写字母,可使用两种函数完成字符输入*/
______;/*将该字母转换为大写字母*/
______;/*输出转换后的字符,可使用两种函数完成字符输出*/
return1;
}
*(6)以下程序执行后输出结果是______。
#include
intmain()
{
printf("%12.5f\n",123.1234567);
printf("%12f\n",123.1234567);
printf("%12.8s\n","abcdefghij");
return1;
}
*(7)若有:
inta=1,b=2,c=3,d;
d=(a>b&&(c=b|c));
执行后a、b、c、d的值依次是______。
(8)有以下程序段,若从键盘上输入:
10A10<回车>,则输出结果是______。
intm=0,n=0;
charc='a';
scanf("%d%d%d\n",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
printf("%d,%d,%d\n",m,c,n);
(9)以下程序执行时,若从键盘上输入abcdefg<回车>,则输出结果是______。
#include
intmain()
{
charch1,ch2,ch3;
ch1=getchar();ch2=getchar();ch3=getchar();
putchar(ch1);putchar(ch2);putchar(ch3);
return1;
}
*(10)以下程序执行时,若从键盘上输入2<空格>8<回车>28<空格>28.48<回车>abc<回车>后,输出结果是______。
#include
intmain()
{
inta,b;
floatx,y;
charc1,c2;
scanf("%d%d",&a,&b);
scanf("%f%f",&x,&y);
scanf("%c%c",&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
return1;
}
习题3
1.选择题
(1)若有inta=3,b=0,c=5;则值为0的表达式是______。
A.a&&bB.a&&b||cC.a&&b&&cD.a||b&&c
*
(2)这个if(a)与______等价。
A.if(a<>0)B.if(!
a)C.if(a!
=0)D.if(a==0)
*(3)以下程序执行后输出结果是______。
#include
voidmain()
{
inta=0,b=0,c=0,d=0;
if(a=1)
b=1;
c=2;
else
d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译错误
(4)在使用嵌套if语句时,通常else应该______。
A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近不带else的if配对
D.和之前的第一个if配对
(5)以下程序执行后输出结果是______。
#include
intmain()
{
inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec++;
printf("%d\n",c);
return1;
}
A.0B.1C.2D.3
*(6)以下程序段执行后,x的值是______。
inta=1,b=2,c=4,d=3,x;
if(a
A.1B.2C.3D.4E.5
*(7)下列叙述中正确的是______。
A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中不一定使用break语句
(8)若有定义:
doublex=1.8;
inta=1,b=2,c=3;
则下述选项正确的是______。
A.switch(x)B.switch((int)x);
{case1.0:
printf("!
\n");{case1:
printf("!
\n");
case2.0:
printf("@@\n"); case2:
printf("@@\n");
}}
C.switch(a+b)D.switch(a+b)
{case1:
printf("!
\n");{case1:
printf("!
\n");
case2+1:
printf("@@\n");casec:
printf("@@\n");
}}
*(9)以下程序执行后输出结果是______。
#include
voidmain()
{
intx=1,y=0,m=0,n=0;
switch(x)
{case1:
switch(y)
{case0:
m++;break;
case1:
n++;break;
}
case2:
m++;n++;break;
}
printf("m=%d,n=%d\n",m,n);
}
A.m=2,n=1B.m=1,n=1C.m=1,n=0D.m=2,n=2
2.填空题
(1)数学关系式x≥y≥z,写成C语言表达式是。
(2)执行以下程序:
voidmain()
{
intm;
scanf("%d",&m);
switch(m/2)
{
case1:
m++;
case2:
m+=3;
case3:
m+=6;break;
default:
m-=7;
}
printf("%d\n",m);
}
若输入的是1,程序输出结果是什么?
若分别输入2、4呢?
(3)补全程序的代码:
输入变量a,b,c的值,判断a,b,c能否构成三角形,能则计算三角形的面积。
计算三角形的面积使用公式
,其中p=(a+b+c)/2。
#include
voidmain()
{
inta,b,c;
printf("pleaseinputthevalueofa,b,c");
scanf("%d%d%d",);
if()
{
p=;
s=;
printf("Yes,thisisatriangle!
\ntheareais%.2f\n",s);
}
elseprintf("No,thisisnotatriangle!
\n");
}
(4)若有inta=1,b=2,x=a>b?
a:
b;执行后x的值是。
(5)下面这个程序段执行后输出结果是。
intx=3;
if((x%2)?
1:
0)
printf("resultis%d\n",1);
else
printf("resultis%d\n",0);
若x=4,输出结果如何呢?
*(6)以下程序段:
inta=5,b=2,c=3,x;
x=a>b?
(a>c?
a:
c):
(b>c?
b:
c);
执行后x的值是。
该程序段的功能是。
3.编程题
(1)输入一个整数,判断它是正数还是负数、是奇数还是偶数。
(2)输入实数x,分别计算下面两个分段函数的值。
*(3)研究表明小孩的身高与父母的身高大致有如下关系:
男性成人身高=(faHeight+moHeight)*0.54
女性成人身高=(faHeight*0.923+moHeight)/2
此外,喜爱体育锻炼可增加身高2%,有良好的卫生饮食习惯可增加身高1.5%。
请编程估算一个人成年后的身高。
*(4)2014年1月1日是星期三。
输入该年的任意月日,计算并输出它是星期几。
(5)某物流公司按公式f=b*w*s*(1-t)计算运费:
其中,每吨每千米货物的基本运费是b,货物重为w,距离为s,折扣为t,t按下述规则进行计算:
s<250折扣为0
250≤s<500折扣为2%
500≤s<1000折扣为5%
1000≤s<2000折扣为8%
2000≤s<3000折扣为10%
3000及以上折扣为15%
根据输入的b、w、s,编程计算运费(分别使用if、switch语句实现)。