当前位置:首页 > 实验7答案及实验8
实验7 函数
【实验目的】
1.掌握C语言中定义函数的方法
2.掌握函数嵌套调用和递归调用的方法。 3.掌握通过“值传递”调用函数的方法。 4.掌握宏定义的方法
5.掌握文件包含的处理方法 【实验内容】
1.编写程序,计算下面公式并输出结果。
Cmn?n!
(n?m)!m!要求:(1)编写一个函数计算n!
(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。
(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。
(4)运行程序并计算
C、85C、72C1、8C7、7C08。
参考程序:
long int fun(int n) {int i;
long int a=1; for(i=2;i<=n;i++) a=a*i; return a; }
main() {
int n,m; long int s;
printf(\ scanf(\ if(n { printf(\ s=fun(n)/fun(n-m)/fun(m); printf(\} 2.将一个正整数n以相反的顺序输出的递归算法可以如下描述: 如果 要输出的整数只有一位 则 输出该整数 否则 输出整数的个位数字 反向输出除个位以外的全部数字 结束 请编写主程序,调用上述算法,反向输出正整数n。如输入123,则输出321。 参考程序: void fun(int n) { if(0<=n&&n<=9) printf(\ else { printf(\ fun(n/10); } } main() { int n; printf(\ scanf(\ fun(n); } 3.请编写函数fun,起功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。合并的方式是:将a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。 例如,当a=45,b=12,调用该函数后,c=5241。 参考程序 int f(int x,int y) { int t; t=(x)*1000+(x/10)*10+(y/10)+(y)*100; return t; } void main() { int a,b,c; scanf(\ c=f(a,b); printf(\} 4.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5 或9 整除的所有自然数的倒数之和。 例如,若主函数从键盘给n 输入20后,则输出为s=0.853333。 注意:n 的值要求不大于100。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include int i; double sum=0.0; for(i=1;i<=n;i++) if(i%5==0||i%9==0) sum+=1.0/i; return sum; } main() { int n; double s; printf(\scanf(\s=fun(n); printf(\} 实验8 使用文件的程序设计 【实验目的】 1.掌握文件与文件指针的概念。 2.学习使用文件打开、文件关闭、读写文件等基本的文件操作函数。 【实验内容】 编写程序,从文件输入某宿舍楼6家住户某月的水电消耗量及水费和电费标准,计算各户应交纳的水费和电费。 数据及要求如下: 1.水费标准为:1.5元/吨,电费标准为:0.5元,6户人家的信息如下表: 住户地址 水耗(吨) 电耗(度) 101 201 301 401 501 601 5 4 4 3 5 6 150 90 120 78 60 105 将表中信息按下面格式组织在文件input.dat中: 1.5 0.5 101 5 150 102 4 90 103 4 120 104 3 78 105 5 60 106 6 105 要求程序从文件input.dat中读取上述数据。 2.分别计算每户应交纳的电费、水费以及电费水费的总和。 3.汇总全部住户水费、电费的总和。 4.将计算结果按下面格式写入文件charge.dat中。表格线不必输出,如果实验环境不支持中文,第一行内容可使用英文或拼音码表示。 住户地址 水耗(吨) 水费(元) 电耗(度) 电费(元) 合计(元) 101 201 301 401 501 601 total 5 4 4 3 5 6 27 7.5 6 6 4.5 7.5 9 40.5 150 90 120 78 60 105 603 75 45 60 39 30 52.5 301.5 82.5 51 66 43.5 37.5 61.5 342
共分享92篇相关文档