C语言程序设计何欣铭颜晖后习题答案文档格式.docx
《C语言程序设计何欣铭颜晖后习题答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计何欣铭颜晖后习题答案文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
错误
1.3习题参考答案
运行结果不符合题目要求。
找出错误
(调试),改正之,再编译、连接、运
行,看结果。
类比写文章词不达意。
1.对C语言来说,下列标识符中哪些是合法的,哪些是不合法的?
total_debugLarge&
all,Conter1,begin_
解答:
Large&
Tall不合法,其余都合法。
2.改写本章1.4节中的流程图1.2,求1~100中能被6整除的所有整数的和。
sum=0
i=1
假
i<
=100?
真
sum=sum+i
i能被6整除?
i=i+1
打印sum
图1.1“求1~100中能被6整除的所有整数的和”的流程图
11
3.改写本章1.4节中的程序,求1~100中能被6整除的所有整数的和,并在编程环境中验证
该程序的运行结果。
#include<
stdio.h>
intmain(vid)
{
inti,sum=0;
for(i=1;
i<
=100i++)
if(i%6==0)sum=sum+i;
printf"
%d"
sum);
return0;
}
运行结果:
816
4.对于给定的整数n(n>1),请设计一个流程图判别n是否为一个素数(只能被1和自己整
除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构与循环结构。
在流程图中,分支结构和循环结构如图1.2所示,自上而下的2个实线框和2个虚线组
成了顺序结构。
输入n
i=2
=n/2?
打印n是素数
n能被i整除?
i>
n/2?
打印n不是素数
循环结构
分支结构
#include<
intmain(void)
{
printf("
A\n"
);
AA\n"
return0;
14
62
函数的概念
C语言中有两种类型函数
标准库函数
自定义函数
函数可以做到一次定义、多次调用
使用自定义函数的程序框架
doublefact(intn);
/*声明自定义函数,以分号结束*/
intmain(void)
{……
result=fact(i);
/*调用自定义函数fact(i)计算i!
*/
……
/*定义求n!
的函数*/
简单总结本节内容。
使学生了解自定义函数编程结构,能够模
仿编程即可。
2.3练习与习题参考答案
2.3.1练习参考答案
2-1编写程序,在屏幕上显示一个短句“ProgramminginCisfun!
”。
intmain(void)
printf("
ProgramminginCisfun!
\n"
}
2-2下列语句的运行结果是什么?
与例2-2的运行结果有何不同?
为什么?
Programmingisfun.AndProgramminginCisevenmorefun!
例2-2的运行结果分2行显示。
原因在于,例2-2中在每条输出语句的结尾都采用了‘\n’
换行。
2-3编写程序,在屏幕上显示如下图案。
****
***
**
*
****\n***\n**\n*\n"
18
2-4编写程序,求华氏温度150°
F对应的摄氏温度(计算公式同例2-3)。
intcelsius,fahr;
fahr=150;
celsius=5*(fahr–32)/9;
fahr=%d,celsius=%d\n"
fahr,celsius);
2-5算术表达式5*(fahr-32)/9能改写成5(fahr-32)/9吗?
为什么?
如果将其改写为
5/9*(fahr-32),会影响运算结果吗?
5(fahr-32)/9不是合法的C表达式,因为不能省略运算符*;
5/9*(fahr-32)的值为0。
2-6一个物体从100米的高空自由落下,编写程序,求它在前3秒内下落的垂直距离。
设重
力加速度为10m/s2。
doubleheight;
height=0.5*10*3*3;
height=%.2f\n"
height);
2-7输入提示和输入语句的顺序应该如何安排?
例2-5中,scanf("
%d%d%lf"
&
money,&
year,
&
rate)能改写为scanf("
%d%lf%d"
year,&
rate)吗?
能改写为
scanf("
rate,&
year)吗?
如果可以,其对应的输入数据是什么?
输入提示在前,输入语句在后。
不能改写为scanf("
rate),因为%lf与整型变量money不匹
配,%d与浮点型变量rate不匹配。
与scanf("
year)对应的输入数据为:
10000.0253
2-8编写程序,输入华氏温度,输出对应的摄氏温度,计算公式同例2-3。
19
scanf("
fahr);
celsius=5*(fahr-32)/9;
celsius=%d\n"
celsius);
2-9编写程序,输入3个整数,计算并输出它们的平均值。
inta,b,c;
doubleaverage;
%d%d%d"
a,&
b,&
c);
average=(a+b+c)*1.0/3;
average=%.2f\n"
average);
2-10编写程序,输入x,计算并输出下列分段函数f(x)的值(保留3位小数)。
⎧1
≠
⎪
y=fx()=⎨x
x
⎪0
x=0
doublex,y;
%lf"
x);
if(x!
=0)
y=1/x;
else
y=0;
f(%.2f)=%.3f\n"
x,y);
2-11编写程序,输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt
函数求平方根,调用pow函数求幂。
⎧++51
<
xx
y=fx
()
=⎨⎪
2
x≥0
⎩
20
math.h>
if(x>
y=sqrt(x);
y=pow(x,5)+2*x+1/x;
f(%.2f)=%.2f\n"
2-12编写程序,输入2个整数lower和upper,输出一张华氏-摄氏温度转换表,华氏温度
的取值范围是[lower,upper],每次增加2°
F,计算公式同例2-7。
intlower,upper;
doublecelsius,fahr;
%d%d"
lower,&
upper);
fahrcelsius\n"
for(fahr=lower;
fahr<
=upper;
fahr=fahr+2){
celsius=5*(fahr-32.0)/9;
%3.0f%6.1f\n"
}
n1
2-13编写程序,输入一个正整数n,求i=1
inti,n;
doublesum;
n);
sum=0;
for(i=1;
i<
=n;
i++)
sum=sum+1.0/i;
sum=%.6f\n"
sum);
∑i。
21
2-14编写程序,输入一个正整数n,计算1+++11.....的前n项之和。
35