C语言习题(前五章)参考答案.doc
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
10
积分
还剩页未读,继续阅读
关键词:语言
习题
前五章
参考答案
资源描述:
C语言习题参考答案
第一部分 C语言基础
一、判断题
1.对 2.错 3.对 4.对 5.错 6.错
第二部分 数据类型、运算符及表达式
一、选择题
1.AD
2.B
3.(1)CD (2)BD(3)C (4) B
5.B
6.D /*赋值时,若有溢出,则只截取低位*/
7.(1)AB(2)BD(3)ABCD
8.C
9.D
10.C /*A,B赋值运算符左值只能是变量,不能是表达式或常量,D是逗号语句*/
12.B /*赋值运算符优先级比逗号表达式高*/
13.A
14.D /*八进制数中,合格字符只能是0~7*/
15.A /*二进制补码*/
16.A /*八进制数中,合格字符只能是0~7*/
17.D
19.B
20.D
21.B /*赋值运算符右值的数据类型强制转换为左值的数据类型*/
22.ABD
23.D
24.C
25.ABD
二、填空题
1. 1 , -128~127 ; 2 , -32768~32767 ; 4 , -2147483648~2147483647; 4 ,。
3. 单引号, 双引号 。
4. 优先级 , 结合性 。
6. 2.5 。
7. 3.5 。
11. 24 , 10 , 60 , 0 , 12 , 0
12. double 。
14. 9 。
16. 1.5 , 1 。
18. 2 , -2 。/*余数符号仅由被除数的符号决定*/
三、判断题
1.错 /*如常量*/
3.错 /*如float只能准确表示7位有效数字,多余的位数是近似表示*/
4.错 5.对 6.对 10.错
四、简答题
4写出下列各数的二进制补码(写成16为二进制形式):32: 0000 0000 0010 0000
-1: 1111 1111 1111 1111
-32768:1000 0000 0000 0000
2002: 0000 0111 1101 0010
-128: 1111 1111 1000 0000
0: 0000 0000 0000 0000
五、程序阅读
1.
aabb[4个空格]cc[6个空格]c
A 6
2.
9,11,9,10
第三部分 顺序结构
一、选择题
2.D
3.B /*假设int占2个字节*/
4.D 5.C 7.C 8.B 9.D 10.B
11.C /*D,scanf函数的格式符中不能规定小数位数*/
12.A /*格式控制符:%2d%2d%3d,输入时,前两个空格对应的数字赋给a,紧挨着的两个空格的位置赋给b*/
13.C 14.D 15.D
二、填空题
6. %
8. -10 12 410.34[回车] 题目补充:scanf函数的调用形式为:scanf(“%d%d%f”,&i,&j,&x); 。
三、程序阅读
1.
a=3 b=7
8.5 71.82A a[回车]
3.
12345,-1.98e+002, 6.50
4.
D, /*除了X、E、G(可用大写字母表示)外,其他格式字符必须用小写字母;*/
6.
12##,12 ##
3.1415926[后接94个0]##
四、程序填空题
6.6
五、编程题
1. #include void main ( )
{
int a,b,t;
scanf("%d%d",&a,&b);
t=a;
a=b;
b=t;
printf("%d %d \n",a,b);
}
2. #include void main ( )
{
int a=3,b=4,c=5;
float x=1.2,y=2.4,z=-3.6;
unsigned u=51274;
long n=128765;
char c1=a,c2=b;
/*a= 3 b= 4 c= 5*/
printf("a=%2d b=%2d c=%2d\n",a,b,c);
/*x=1.200000,y=2.400000,z=-3.600000*/
printf("x=%f,y=%f,z=%f\n",x,y,z);
/*x+y= 3.60 y+z=-1.20 z+x=-2.40*/
printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,
z+x);
/*u= 51274 n= 128765*/
printf("u=%6u n=%7ld\n",u,n);
/*c1=a or 97(ASCII)*/
printf("c1=%c or%3d(ASCII)\n",c1,c1);
/*c2=b or 98(ASCII)*/
printf("c2=%c or%3d(ASCII)\n",c2,c2);
}
4. #include void main ( )
{
char c1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
putchar(c2);
printf("%c%c\n",c1,c2);
}
(1)变量c1,c2定义为字符型或整型皆可
(2)输出c1和c2值的ASCII码用printf函数,即:
printf(“%d,%d\n”,c1,c2);
(3)char c1,c2 与 int c1,c2 不是无条件地等价,char型变量最大只能表示8位,int型变量可以表示16位。
第四部分 选择结构
一、选择题
1.D
2.B /*!运算符的优先级比%高*/
4.C 5.D 6.B 7.B 8.D
9.A /*if子句x=y;y=x;是两条语句,没加{},导致else找不到匹配的if.*/
10.D /*条件表达式的结合性为从右向左*/
11.A 13.C
14.B /*只有遇到break或是switch的结束}才会跳出该层switch*/
15.D /*题目补充:(--y=x++)改为 (--y==x++)*/
16.B 17.D
18.D /*题目补充:int i=0;改成int i=10;*/
19.A /*条件表达式的结合性为从右向左*/
20.C /*②a>b>c 等价于(a>b)>c,所以值为0*/
二、填空题
3.(1)0 (2)1 (3)1
6.(x<0&&y<0)||(x<0&&z<0)||(y<0&&z<0)。
7. 0 。
9. 0 。
10. a=10,b=9,c=11 /*题目补充:x--=y++改成:x--==y++*/
三、判断题
1.对 3.对 4.对 5.对 6.对
10.错 /*整型和字符型通用*/
四、简答题
2. switch(s)
{
case 3…6: x=2; break;
case 9:
case 10: x=3; break;
case 1:
case 2:
case 7:
case 8:x=1;break;
default:x=0;
}
五、程序阅读题
1.Yes
2. *& /*只有遇到break或是switch的结束}才会跳出该层switch*/
六、程序判断题
1.c = (c>=’A’ | | c<=’Z’) ? c-32 : c+32 ;
改成:c = (c>=’A’ &&c<=’Z’) ? c+32 : c;
/*小写字母比对应的大写字母的ASCII码值大32*/
七、程序填空题
1. 题目错误!!
2. u = xvoid main ( )
{
int a,b;
scanf("%d%d",&a,&b);
if(a>100)
printf("a=%d\n",a);
if(b>100)
printf("b=%d\n",b);
if(a<=100&&b<=100)
printf("a+b=%d\n",a+b);
}
5. #include void main()
{
long n;
int a,b,c,d,e;
scanf(“%ld”, &n);
printf(“n=%ld\n”,n);
a=n/10000; /*最高位*/
b=(n-a*10000)/1000; /*千位数*/
c=(n-a*10000-b*1000)/100; /*百位数*/
d=(n-a*10000-b*1000-c*100)/10; /*十位数*/
e=n%10; /*个位数*/
if(a!=0)
{
printf(“n=%ld是一个五位整\n”,n);
printf(“每一位数字:%d %d %d %d %d\n”, a,b,c,d,e);
printf(“n的反序是:%ld\n”, e*10000+d*1000+c*100+b*10+a);
}
else if(b!=0)
{
printf(“n=%ld是一个四位整\n”,n);
printf(“每一位数字:%d %d %d %d \n”, b,c,d,e);
printf(“n的反序是:%ld\n”, e*1000+d*100+c*10+b);
}
else if(c!=0)
{
printf(“n=%ld是一个三位整\n”,n);
printf(“每一位数字:%d %d %d \n”, c,d,e);
printf(“n的反序是:%ld\n”,e*100+d*10+c);
}
else if(d!=0)
{
printf(“n=%ld是一个二位整\n”,n);
printf(“每一位数字: %d %d \n”, d,e);
printf(“n的反序是:%ld\n”,e*10+d);
}
else
{
printf(“n=%ld是一个一位整\n”,n);
printf(“每一位数字: %d \n”, d);
printf(“n的反序是:%ld\n”,e);
}
}
第五部分 循环结构
一、选择题
1.C /*k=0属于赋值表达式,值为0,即假*/
2.C /*A B D均为求1~100的累加和,C是求2~101的累加和*/
3.B /*i==0在第一次循环时不满足,即跳出循环*/
5.B /*x=9时,x%3==0,即输出--x即8;然后再执行for中的--x,即x=7;不输出;x再变成6,输出--x即5,……*/
6. ABCD均为死循环
7.C /*as) printf(“%dd”,n);
}
}
5.下面程序接受键盘上的输入,直到按↙键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格,请填(3)空使程序完整。
main ( )
{ char cx , front=’\0’ ;
while (【1 】!=’\n’) { /*填:(cx=getchar()) 读取字符*/
if (cx!=’ ’) putchar(cx) ;
if (cx==’ ’)
if (【2 】) /*填:front!=’ ’ 如前一个字符不为空格*/
putchar(【3 】); /*填:’ ’ 输出一个空格*/
front=cx ;} /*front用来记录前一个字符*/
六、编程题
1.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。如:fqwegq4253!_==rfgs;l234
#include void main ( )
{ char c;
int letter=0, number=0, space=0,other=0;
while((c=getchar())!=\n)
{
if((c>=a&&c<=z)||c>=A&&c<=Z)
letter++; /*c为英文字母,则letter个数加1*/
else if(c>=0&&c<=9)
number++; /*c为数字,则number个数加1*/
else if(c== )
space++;/*如果c为空格,则space个数加1*/
else
other++; /*其它字符,则other个数加1*/
}
printf("字母有%d个 数字有%d个 空格有%d个 其它字符有%d个\n",letter,number,space,other);
}
2.求 (即求1!+2!+3!+…+19!+20!)。
#include void main ( )
{
int i,j;
long s=0, n=1;
for(i=1; i<=20; i++)
{
n=1;
for(j=1; j<=i; j++)
n=n*j; /*n记录i!*/
s=s+n; /*s为所求的累加和*/
}
printf("s=%d\n",s);
}
3.提高题:打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。
#include void main ( )
{
int i,a,b,c,i_tmp;
for(i=100; i<=999; i++)
{
a=i/100; /*a记录百位数字*/
b=(i-a*100)/10; /*b记录十位数字*/
c=i%10; /*c记录个位数*/
i_tmp=a*a*a+b*b*b+c*c*c; /*i_tmp记录个位数的立方和*/
if(i_tmp==i)
printf("%d\n",i); /*i即为水仙数*/
}
}
4
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:C语言习题(前五章)参考答案.doc
链接地址:/p-55154253.html
如果觉得《c语言switch逻辑用语 C语言习题(前五章)参考答案.doc》对你有帮助,请点赞、收藏,并留下你的观点哦!