第三章
练习
1. 下面的字符序列中哪些不是合法的变量名: -abc __aa for pp.288 IBM/PC tihs
While r24_s25 __a__b a\ _345 答:
-abc for pp.288 to be IBM/PC ms-c #micro m%ust While a\
2. 假设整型变量a 的值是1,b 的值是2,c 的值是3,在这种情况下分别执行下 面各个语句,写出执行对应语句后整型变量u 的值。 1) u = a ? b : c;
2) u = (a = 2) ? b + a : c + a; 答:
1)u=2 2)u=4
3. 假设整型变量a 的值是1,b 的值是2,c 的值是0,写出下面各个表达式的值。 1) a && !((b || c) && !a)
2) !(a && b) || c ? a || b : a && b && c 3) !(a + b < c) && b <= c * a – b 答:
1)1 2)0 3)0
4. 下面程序在执行时,哪些地方将发生类型转换?程序打印的值是什么?
int f (int n, float m) { return (m + n) / 4; }
int main () { float y = 3;
printf(\return 0; }
答:
2:参数1传递:形式参数为int,实际参数 为float,float转换为int #include
int f(int n,float m)
4:除操作:参与/的对象有int型的4和float型有(m+n),int转换为float
{
return (m+n) /4; }
int main () { float y=3;
printf(\ f (y,y+1)); system(\ return 0; }
3:加操作:参与+的对象有int:n和float:m,int型的n转换为float
1:表达式y+1求值:
参与+的对象有int:1
和float:y,int转换为
float
5. 在计算机上试验本章正文中的一些程序。对它们做一些修改,观察程序加工和运行的情 况,并对程序的行为做出解释。 答案:略
6. 定义求圆球的体积、求圆球的表面积、求圆柱体的体积、求圆柱体的表面积的函数。 答:
#include
v=4.0/3.0*r*r*r*3.1415926; return v; }
double f2(double r){ double s;
s=4*r*r*3.1415926; return s; }
double f3(double r,double h){ double v;
v=r*r*3.1415926*h;
5:函数结果传递:(m+n)/4 结果的类型为float型,而函数要求返回的值类型为int,因而发生float型转换为int型
return v; }
double f4(double r,double h){ double s;
s=2*3.1415926*r*h+2*3.1415926*r*r; return s; }
int main(){
printf(\圆球的体积为%f\\n\ printf(\圆球的面积为%f\\n\
printf(\圆柱体的体积为%lf\\n\ printf(\圆柱体的面积为%lf\\n\ system(\ return 0; }
7. 1)不用函数,直接写一个主程序计算并输出直径为100 毫米和150 毫米的金、银、铜、 铁、锡球的重量(以kg 为单位输出)。
2)重新完成上面程序,先定义一个带有两个参数的函数,它能求出直径为x 的比重为 y 的圆球的重量,而后在主程序里调用这个函数完成所需工作。将这样得到的解与不用 函数的解比较,比较它们的长度、容易出错的程度。假设现在要求修改所用圆周率的精 度,考虑用两种方式写程序的修改难度。
3)请写程序,求出边长为100 毫米和150 毫米的金、银、铜、铁、锡立方体的重量。 你可以利用前面的程序吗?是否很容易修改前面程序,完成这一计算?比较不用函数的 解法和使用函数的解法在易修改和重复使用方面的效用。
8. 定义函数:double tmax(double, double, double),它返回三个参数中最大的 一个。写一个主函数试验各种参数情况。 答:
#include
double tmax(double x,double y,double z){ if(x>y)
return x>z?x:z; else
return y>z?y:z; }
int main(){
printf(\最大的一个为:%f\ printf(\最大的一个为:%f\ printf(\最大的一个为:%f\ system(\ return 0; }
9. 写函数,它以两个电阻的值作为参数,求出并联的电阻值。
答:并联电阻值的计算公式为:R1*R2/(R1+R2)
10. 如果四边形四个边的长度分别为a、b、c、d ,一对对角之和为2α ,则其面积为:
S = (s ? a)(s ? b)(s ? c)(s ? d ) ? abcd cos2α
其中s =(a + b + c + d)/2。
定义一个函数计算任意四边形的面积。设有一个四边形,其
四条边边长分别为3、4、5、5,一对对角之和为145o ,写程序计算它的面积。
11. 修改已知四边长求四边形面积的函数,增加对各种参数错误情况的检查和处理(如返回 值0),用各种实例数据检查你的函数否检查出所有可能的错误情况。
12. 分析本章正文中给出的求二次方程根的函数,看它缺乏对哪些特殊情况的处理。补充这 些处理,在需要时输出适当的信息,使之成为一个更完整的函数。写一个主函数,用各 种特殊情况和一般情况测试所完成的函数。 答:
#include
void f(double a,double b,double c){ double temp=b*b-4*a*c;
if(a==0)printf(\方程的根为:%f\ if(temp>0)
printf(\方程的根为:%f,%f\ else if(temp==0)
printf(\方程有两个相同的根为:%f\ else
printf(\方程无解!\ }
int main(){
f(5,2,6); //可以测试不同的数据 system(\ return 0; }
13. 写一个简单程序,它输出从1 到10 的整数。 14. 写一个简单程序,它输出从10 到-10 的整数。
15. 写一个两个整型参数的简单函数,它输出从第一个整数到第二个整数为止的整数序列。 16. 用定义函数double power(double x, int n),它求出x 的n 次幂。用主函数试
验很大的n 值(例如令x 值为1),看看会出现什么情况;用大的x 和n 值,看看发生 浮点数计算溢出时会出现什么情况。
17. 写一个程序,它在0~90 度之间每隔5 度输出一行数据,打印一个表。每行中包括5 个 项目:角度数,以及它所对应的正弦、余弦、正切、余切函数值。 答:
#include
int main(){
double s=0*3.1415926/180; int i;
for(i=0;i<=90/5;i++){
printf(\ s+=5*3.1415926/180; }
system(\ return 0;
}18. 查看有关公式,写求解并输出一元三次方程的根的函数。 19. 写出求等差级数的和 ka k
n
=
Σ
1
的函数。两种循环结构给出函数定义,再利用等差级数求和公式给出函数定义。 答:
#include
double f1(int n,double a){ int i;
double sum=0;
for(i=1;i<=n;++i) sum+=i*a; return sum; }
double f2(int n,double a){ int i=1;
double sum=0; while(i<=n){ sum+=i*a; ++i;}
return sum; }
double f3(int n,double a){ return n*(a+n*a)/2; }
int main(){
printf(\ printf(\ printf(\
system(\ return 0; }
20. 请到查出银行一年定期存款的利率和5 年定期存款的利率。假定现在要存入100 元钱, 存款到期后立即将利息与本金一起再次存入。请写出程序,计算按每次存一年和按照每 次存5 年,总共存50 年后两种存款方式的得款总额。对两种情况都每隔5 年输出一次 当时的总金额。
21. 写一个程序打印出2 的顺序各次幂。让它打印出2 的前30 个幂,看看会出现什么情况。 用一个条件为真的循环打印2 的各次幂,看看会出现什么情况。
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育从问题到程序--裘宗燕--课后习题部分答案(第三章) 全文阅读和word下载服务。
相关推荐: