《【精编】华师大C语言实验报告——C实验报告2学号姓名.pdf》由会员分享,可在线阅读,更多相关《【精编】华师大C语言实验报告——C实验报告2学号姓名.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.华东师范大学上 机 实 验 报 告课程名称:C 语言程序设计实验类型:验证型实验室名称:*系别:电子系学号:*专业:通信工程学生姓名:*指导老师:*学期:2010 年-2011 第一学期实验一嵌套结构实验目的(1)熟悉选择嵌套结构、循环嵌套结构、复合嵌套结构(2)掌握嵌套结构的典型算法实验内容任务一掌握使用 if else语句1.题目要求文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.打开程序文件ex02_02.cpp,修改下面程序中的4 个子函数中的代码,能按每一部分的要求得出相应的输出。修改只限于增加圆括号,和
2、代码的缩进方式。当然代码的缩进方式对程序的执行没有影响,但可增加代码的可读性。(也可能什么修改也不要做)。#include void paint_1(int x,int y);void paint_2(int x,int y);void paint_3(int x,int y);void paint_4(int x,int y)void main()int x,y;x=5,y=8;paint_1(x,y);paint_2(x,y);paint_3(x,y);y=7;paint_4(x,y);void paint_1(int x,int y)printf(nsection 1:n);if(y=8
3、)if(x=5)printf(n);else printf(#n);printf($n);printf(&n);void paint_2(int x,int y)printf(nsection 2:n);if(y=8)if(x=5)printf(n);else printf(#n);printf($n);printf(&n);void paint_3(int x,int y)printf(nsection 3:n);if(y=8)文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.if(x=5)printf(n);else printf(#n);printf($n);printf(
4、&n);void paint_4(int x,int y)printf(nsection 4:n);if(y=8)if(x=5)printf(n);else printf(#n);printf($n);printf(&n);Section 1:假定 x=5,y=8,输出为:Section 2:假定 x=5,y=8,输出为:Section 3:假定 x=5,y=8,输出为:Section 4:假定 x=5,y=7,输出为:2.源程序清单列出你修改后的四段if 代码void paint_1(int x,int y)printf(nsection 1:n);if(y=8)if(x=5)printf(
5、n);else printf(#n);printf($n);printf(&n);void paint_2(int x,int y)printf(nsection 2:n);if(y=8)if(x=5)printf(n);else printf(#n);文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.printf($n);printf(&n);void paint_3(int x,int y)printf(nsection 3:n);if(y=8)if(x=5)printf(n);else printf(#n);printf($n);printf(&n);void paint_
6、4(int x,int y)printf(nsection 4:n);if(y=8)if(x=5)printf(n);else printf(#n);printf($n);printf(&n);任务二编程个人所得税P56 习题 3 第 2 题1.打开程序文件ex02_02.cpp#include double calTaxt(double number);int main()/输入一个工资/调用 calTax 求解应缴个人所得税/输出结果 double calTaxt(double number)/计算应缴个人所得税文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.2编写计算应缴
7、个人所得税函数:double calTaxt(double number),返回应缴个人所得税。在 main 函数中验证函数calTaxt 的正确性。源程序清单:#include double calTaxt(double number);int main()double number;/输入一个工资printf(number:);scanf(%lf,&number);/调用 calTax 求解应缴个人所得税double calTaxt(double number);/输出结果printf(tax=%.2fn,calTaxt(number);return 0;double calTaxt(do
8、uble number)/计算应缴个人所得税int rate;if(number=850)rate=0;else if(number=1350)rate=5;else if(number=2850)rate=10;else if(number=5850)rate=15;else rate=20;return rate*(number-850)/100;运行结果窗口3.测试用例设计1)number=750;tax=0.00;2)number=850;tax=0.00;3)number=1250;tax=20.00;4)number=1350;文档来源为:从网络收集整理.word 版本可编辑.欢迎
9、下载支持.tax=25.00;5)number=1850;tax=100.00;6)number=2850;tax=200.00;7)number=3850;tax=450.00;8)number=5850;tax=750.00;9)number=6850;tax=1200.00;任务三编程统计成绩创建程序文件ex02_03.cpp,完成下面功能,输入n 个学生的学号和m 门功课成绩求每位同学的总分和平均分,最后输出班级平均总分,最高总分和学号1 源程序清单:#include int main()int n,m,i,j,y,z;double max,sum,x,average,totle,av
10、eragetotle;printf(n:);scanf(%d,&n);printf(m:);scanf(%d,&m);max=-1;z=-1;totle=0;for(i=1;i=n;i+)sum=0;printf(y:);scanf(%d,&y);for(j=1;jmax)文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.max=sum;z=y;totle=totle+sum;averagetotle=totle/n;printf(averagetotle=%.2fn,averagetotle);printf(max=%.2fn,max);printf(z=%dn,z);retu
11、rn 0;2 运行结果窗口任务四编程穷举法创建程序文件ex02_04.cpp,使用穷举法求解下面问题:鸡、兔同笼,共50 个头,170只脚。问鸡、兔各有多少只?源程序清单:#include int main()int x,y;for(x=1;x=50;x+)for(y=1;y=50;y+)if(x+y=50)&(2*x+4*y=170)printf(x=%d,y=%dn,x,y);return 0;实验二模块化设计实验目的(1)体验结构化程序设计方法要点,理解模块化设计的思想,划分子模块的原则(2)掌握 is 函数的定义和调用文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.实验
12、内容任务一输出 m-n 之间所有的素数改写(sample02_07.cpp):输出 m-n 之间所有的素数,调用int isprime(int n)函数,每行输出 10 个素数。1源程序清单:ex02_05.cpp#include#include int isprime(int n);int main(void)int count,m;count=0;/*count 记录素数的个数,用于控制输出格式*/for(m=2;m=100;m+)if(isprime(m)/*如果 m 是素数*/printf(%6d,m);/*输出 m*/count+;/*累加已经输出的素数个数*/if(count%10
13、=0)/*如果 count 是 10 的倍数,换行*/printf(n);printf(n);return 0;int isprime(int n)int i;for(i=2;i=sqrt(n);i+)if(n%i=0)return 0;return 1;2运行结果窗口3实现算法(自然语言描述)(1)count 用来记下素数的个数初值为0;(2)m 为 2 到 100 的整数;(3)调用 isprime 函数判断,m 如果质数输出m 且修正 count 值;(4)根据 count 的数值,按每十个为一行输出2 到 100 的所有素数。任务二实现个人所得税的计算。改写实验一的任务二ex02_02
14、.cpp,使用 switch 语句实现函数double calTaxt(double number)文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.的功能。1 源程序清单:ex02_06.cpp#include double calTaxt(double number);int main()double number;/输入一个工资printf(number:);scanf(%lf,&number);/调用 calTax 求解应缴个人所得税double calTaxt(double number);/输出结果printf(tax=%.2fn,calTaxt(number);re
15、turn 0;double calTaxt(double number)/计算应缴个人所得税int rate,num;if(number850&number1350&number2850&number5850)num=5;switch(num)case 1:rate=0;break;case 2:rate=5;break;case 3:rate=10;break;case 4:rate=15;break;case 5:rate=20;break;default:break;return rate*(number-850)/100;文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.
16、任务三输出 100-400 之间的水仙花数1要求:创建程序文件ex02_07.cpp(1)编写子函数判断一个数是否是水仙花数。(2)编写子函数输出m 到 n 之间的水仙花数。(3)main 函数验证函数的正确性2提示:水仙花数是指每一位的立方和就是数本身,如153=1*1*1+5*5*5+3*3*3 3代码实现(1)源程序清单:创建程序文件ex02_07.cpp#include#include int issxhs(int t);int shuchu(int m,int n);int main()shuchu(100,400);return 0;int issxhs(int t)int sum
17、=0,y;y=t;while(t0)sum=sum+pow(t%10,3);t=t/10;if(sum=y)return 1;else return 0;int shuchu(int m,int n)int i;for(i=m;i=n;i+)if(issxhs(i)printf(%dn,i);return 0;文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.(2)运行结果窗口:4 子函数算法(自然语言描述)(1)对 100 到 400 中的依次取出个位十位百位;(2)将取出的三个数求立方和;(3)比较此立方和与原来数字的关系,相等则输出此水仙花数。实验三综合实验实验目的(1)理
18、解变量的作用域:全局变量和局部变量(2)理解输出参数的概念和运用场合(3)理解指针的概念(4)掌握使用指针变量向主调函数传值的方法。实验内容任务一日期换算1要求:创建程序文件ex02_08.cpp(1)编写子函数判断闰年。(2)编写子函数求某天是该年的几月几日(3)编写子函数求某年某月某日是该年的第几天(4)main 函数中设计步骤验证函数的正确性2提示(1)求某年某月某日是该年的第几天思路:累计从1 月到该日期的前一月的每月天数再加上该日期的天数。2 月份的天数要判断闰年。累计可使用循环完成也可利用switch 语句无 break 的特性完成。(2)求某天是该年的几月几日思路:循环 i 从
19、1 月开始如果天数days 比第 i 月的天数大则天数days 减去第 i 月的天数否则结束循环。i+1 即为所求月份,days的值为所求日数。每月的天数仍需区分处理。3代码实现(1)源程序清单:#include void getdays(int mon,int dat);void getDate(int y,int days,int*pm,int*pd);int isLeap(int y);int main()int m,d,y,days,year,month,date;printf(year and days:);文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.scanf(
20、%d,%d,&y,&days);printf(year and month and date);scanf(%d,%d,%d,&year,&month,&date);getDate(y,days,&m,&d);getdays(month,date);printf(%d-%d-%dn,y,m,d);printf(%dn,days);return 0;void getDate(int y,int days,int*pm,int*pd)int m,d,day,i;for(i=1;iday)days=days-day;else break;*pm=i;*pd=days;void getdays(int
21、 mon,int dat)文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.int year;switch(mon-1)case 12:dat=dat+31;case 11:dat=dat+30;case 10:dat=dat+31;case 9:dat=dat+30;case 8:dat=dat+31;case 7:dat=dat+31;case 6:dat=dat+30;case 5:dat=dat+31;case 4:dat=dat+30;case 3:dat=dat+31;case 2:if(isLeap(year)dat=dat+29;else dat=dat+28;c
22、ase 1:dat=dat+31;int isLeap(int y)if(y%4=0&y%100!=0|y%400=0)return 1;else return 0;(2)运行结果窗口:5 测试用例设计(1)input:year=2000;days=60;output:year:2010;month:3;date:1;(2)input:2000-2-29;output:60;6 子函数算法(自然语言描述)(1)给年份和天数求日期a)将天数与一月比较,若比一月大,减去一月天数再和下个月比较,直到比下个月天数小(注意平年闰年分开判断);文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持
23、.b)此时的月份即所求月份,所剩日子即所求日期。(2)给年月日求是第几天a)求出所给月份之前各月的天数和;b)再将所给日期加进去就可以了。任务二电费计算问题描述电力公司根据如下税率表进行收费,:头 300 千瓦时以每千瓦时9 美分计,下一个300 千瓦时(到 600 千瓦时)以每千瓦时8 美分计,再下一个400 千瓦时(到1000 千瓦时)以每千瓦时 6 美分计,超过1000 千瓦时的电量以每千瓦时3 美分计。(1)编写一个函数,计算每个客户的总用电费用。(2)写一个主函数,读取数据文件中的数据,调用计费函数计算每一个客户的总用电费用。将结果输出到另一个数据文件。源数据文件由客户编号和用电量两
24、列构成,生成的新数据文件列出三列:客户编号、用电量和总用电费用。(3)程序还要计算并输出客户数量、总耗电千瓦时和总的电费。分析问题输入:用电量输出:客户数量,总耗电千瓦时和总的电费问题解决的方法:设计算法1主函数算法nums=0,qwss=0,results=0;只读方式打开文档“用电量.txt”;创建文档“输出.txt”;如果文件不为空,循环(当文件不为空时):格式化读取文件“用电量.txt”数据,客户编号num,用电量 qws;格式化写数据“该客户的客户编号、用电量和总用电费用”到文件“用电量 2.txt”;输出客户数量、总耗电千瓦时和总的电费2子函数算法a)qws1000,此部分电费*3
25、;其余部分电费300*9+300*8+400*6;b)1000=qws600,此部分电费*6,其余部分电费300*9+300*8;c)600=qws300,此部分电费*8,其余部分电费300*9;d)qws=300,此部分电费*9;文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.编码:ex02_09.cpp 变量及数据类型的确定:整型(int):客户电费result 每个客户用电量qws,总客户数nums,总用电量qwss,总电费results,客户编号长整型num FILE 结构指针:*fp1,*fp2;源程序清单:#include int getshuif(int m);i
26、nt main()int result,qws,nums=0,qwss=0,results=0;long num;FILE*fp1,*fp2;if(fp1=fopen(用电量.txt,r)=NULL)printf(file open error!n);return-1;if(fp2=fopen(用电量 2.txt,w)=NULL)printf(file open error2!n);return-1;while(!feof(fp1)fscanf(fp1,%ld%dn,&num,&qws);int getshuif(int m);result=getshuif(qws);fprintf(fp2,
27、%ld%d%dn,num,qws,result);nums=nums+1;qwss=qwss+qws;results=results+result;fclose(fp1);fclose(fp2);printf(nums=%d,nums);printf(qwss=%d,qwss);printf(results=%d,results);return 0;int getshuif(int m)文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.int sum=0,y,num,tax;while(m0)if(m=300)y=m;m=m-300;num=1;else if(m=600)if(
28、m=600)y=300;m=300;else y=m-300;m=300;num=2;else if(m=1000)if(m=1000)y=400;m=600;else y=m-600;m=600;num=3;else y=m-1000;m=1000;num=4;文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.switch(num)case 1:tax=9;break;case 2:tax=8;break;case 3:tax=6;break;case 4:tax=3;break;default:break;sum=sum+y*tax;return sum;测试数据设计输入文件
29、数据:num:qws:123 725 205 115 464 600 596 327 601 915 613 1011 722 47 625 1802 314 423 输出文件数据:num qws result 123 725 5850 205 115 1035 464 600 5100 596 327 2916 601 915 6990 613 1011 7533 722 47 423 625 1802 9906 314 423 3684 屏幕输出:nums=9;qwss=5965;results=43437;文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.运行过程记录:输出文件数据:运行窗口