当前位置:文档之家› 《C语言程序设计教程》习题参考答案

《C语言程序设计教程》习题参考答案

case 1:printf("&");break;
case 2:printf("*");break;
}
case 0:switch(c= =5){
case0:printf("!");break;
case 1:printf("#");break;
default:printf("%%");
}
default:printf("@");
}
}
运行结果:&#@
4.5将以下语句改写成switch语句。
if((t>0)&&(t<=10))
if((t>=3)&&(t<=6)) x=2;
else if((t>1)||(t>8)) x=3;
else x=1;
else x=0;
提示:int t;
if(t<=0||t>10) c=0;
else c=t;
4.14编程实现,使用循环结构打印以下图案。
*
* * *
提示:printf("%s",a+b>c&&a+c>b&&b+c>a?"Yes":"No");
3.19输入三个数x,y,z,按从小到大的输出结果。
提示:分别用max0,min0代表最大、最小值,mid0表示中间值。
max0=(x>y?x:y)>z?(x>y?x:y):z;max0=(x<y?x:y)<z?(x<y?x:y):z;
A)BA、x_0、do
B)float、1a0、_Y
C)x-y、goto、123
D)_123、tmp、CHAR
2.9下列选项中不正确的常数的选项是(D)。
A)0x12FB)-1.23E-2C)12.0D)0388
2.10下面正确的字符常量是(B)。
A)"a"B)'\\'C)"\n"D)"\376"
2.11下面正确的字符串常量是(C)。
A)1111 1111 1111 1111
B)0000 0000 0000 0001
C)1111 1111 1111 1110
D)1000 00000000 0001
2.15存储字符串"\\\'abc\376"需要的字节数是(D)。
A)11B)13C)6D)7
【习题
一、计算题
3.12.8+7%3*11%2/4(答案:2.8)
if(grade=='A') printf("\n90-100");
else if(grade=='B') printf("\n80-89");
....
4.4写出下面程序的运行结果:
#include<stdio.h>
main()
{
int a=-1,b=1,c=5;
switch(a>0){
case 1:switch(b-2<0){
A)ch>="0"&&ch<="9"B)ch>='0'&&ch<='9'
C)'0'≤ch≤'9'D)ch>='0'||ch<='9'
三、编程题(应用条件运算)
3.16输入一个整型成绩x,如果大于等于60分,输出“pass”,否则输出“fail”。
提示:printf("%s",x>60?"pass":"fail");
《C语言程序设计教程》习题参考答案
祝胜林主编
华南理工大学出版社
【习题
一、简答题(在课本中寻找答案,略)
1.1C程序的基本结构包括哪些内容?
1.2如何定义标识符?
1.3输入格式、输出格式的组成包括哪些内容?
1.4C语言函数分为哪两类?
1.5计算表达式的值应该考虑哪些方面?
1.6上机调试程序的步骤如何?
则以下能实现将n中的数值保留小数点后两位,第三位四舍五入的表达式是(B)。
A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0
C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0
3.11设k=7,x=12;则下列表达式值为3的是(D)。
二、判断并改错
1.7C程序执行的入口是main()函数,所以main函数必须放在程序的开头。
错误:main函数可以放在程序的任何位置。并不限定在程序的开头。
1.8定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。
错误:不可以交叉出现,数据说明部分在执行语句部分的前面。
1.9编辑与编译不是一回事。
2.3变量为什么要“先定义,后使用”?
2.4字符常量'a'与字符串常量"a"有何区别?
2.5大小写字母转换的规则是什么?
2.6变量的具有哪三种属性?
二、单项选择题
2.7C语言中,int型数据在内存中的存储形式是(D)。
A)ASCII码B)原码C)反码D)补码
2.8下面四个选项中,均是不合法的用户标识符的选项是(C)。
A)x%=(k%=5)B)x%=(k-k%5)
C)x%=k-k%5D)(x%=k)-(k%=5)
3.12已知m=48,ch='a',n=0;则表达式(m>=n&&ch<'b'&&!n)的值是(B)。
A)0B)1C)真D)非0
3.13下面哪个式子在b为奇数时结果为假(C)。
A)a%2==1B)!(a%2==0)C)!(a%2)D)a%2
提示:先判断数是否为完数,如果是再考虑输出因子。以6为例输出因子:
for(i=1;i<6;i++) if(6%i==0) printf("%d,",i);
4.11编程实现,计算序列的前20项之和,
, , , , , ,...
提示:这是一个累加式,每项是一个分式,用a、b分别表示分子、分母。注意:如果a、b都是整数,则是整除。float sum=0,a=2,b=1; int i;
1.12所有的数学公式可以直接出现在源程序中。
错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。
三、编程题
“张三”,对应的拼音为“Zhang San”,输出用printf()函数。
1.14输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。
3.17输入一个年份y,如果是闰年,输出“y is a leap year”,否则输出“y is not a leap year.”
提示:printf("%d is %s",y%4==0&&y%100!=0||y%400==0?"a leap year.":"not a leap year.");
3.18输入三条边a,b,c,如果它们能构成一个三角形,输出“Yes”,否则输出“No”。
3.25/2+5.0/2+7%6(答案:5.5)
3.3a=12,a*=2+3(答案:a=60)
3.4a=3,b=4,c=5,a+b>c&&b= =c(答案:0)
3.53>5?3:5<8?25:40(答案:25)
3.6设a=1,b=2,c=3,d=4,m=n=1,有表达式(m=a>b)&&(n=c>d),计算表达式后m,n的值?
mid0=x+y+z-max0-min0;
3.20输入一个平面上的点坐标,判断它是否落在圆心(0,0),半径为1的圆内,如果在圆内,输出“Yes”,否则输出“No”。
提示:分别用x,y代表平面上一个点。
printf("%s",x*x+y*y<=0?"Yes":"No");
【习题
以下的编程题目要求首先画出程序的传统流程图或N-S流程图,再编写程序代码。上机实验时再输入到计算机中进行调试,并将调试过程中出现的问题和测试情况记录下来。
(流程图请读者自己参考课本自己画,略)
4.1编程实现,输入一个整数,判断它是否为偶数,并显示相应的信息。
提示:x代表输入的整数,if(x%2==0) printf("\neven");else printf("\nodd");
4.2编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。
提示:x,y代表平面坐标,if(x*x+y*y==1)printf("\nYes");else printf("\nNo");
4.3编程实现,输入一个成绩等级(A-E),显示相应的百分制成绩段。
A: 90-100
B: 80-89
C: 70-79
D: 60-69
E: <60
提示:char grade;
错误:不是一回事。编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。
1.10scanf("%d,%d",&x,&y);的正确输入格式:3,4<回车>。
相关主题