实验三综合程序设计资料_第1页
实验三综合程序设计资料_第2页
实验三综合程序设计资料_第3页
实验三综合程序设计资料_第4页
实验三综合程序设计资料_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-建桥学院程序设计根底C语言本科实验报告模块名称:第一模块 简单C程序设计实验类型:综合型 实验环境: 415 机房 VC+6.0院别:机电学院专业:电科B131*:1121486学生:周鹏飞指导教师: 成长生 学期:2021 年-2021第一学期实验三 综合程序设计(1) 理解输出参数的概念和运用场合(2) 理解指针的概念(3) 掌握使用指针变量向主调函数传值的方法(4) 掌握数据文件的循环读取构造(5) 掌握fprint fsanf等文件操作语句的使用任务一 改错 两数交换翻开程序文件error02_04.cpp改正程序中的错误。Swap函数的功能是交换两个数的值,在main函数中指定两个

2、数的大小,调用swap函数交换两个数的值输出。正确的程序输出:a=20,b=10*include<stdio.h>void swap(int *pa,int *pb);int main()int a=10,b=20;swap(a,b);printf("a=%d,b=%dn",a,b);return 0;void swap(int *pa,int *pb)int t; t=pa,pa=pb,pb=t;*include<stdio.h>void swap(int *pa,int *pb);int main()int a=10,b=20;swap(&

3、;a,&b);printf("a=%d,b=%dn",a,b);return 0;void swap(int *pa,int *pb)int t; t=*pa;*pa=*pb;*pb=t;任务二 3个数排序利用指针实现输入a,b,c共3个整数,按大小顺序输出。要求:编写e*change函数,功能是交换两个数的值。在main函数中输入3个数,调用e*change函数实现3个数按大小顺序输出。源程序清单:*include <stdio.h>void e*change(int *pa, int *pb);void main()int a, b, c;print

4、f("input a b c:");scanf("%d %d %d",&a,&b,&c);if(c>b)e*change(&c,&b);if(b>a)e*change(&b,&a);if(c>b)e*change(&c,&b);printf("%d %d %dn",a,b,c);void e*change(int *pa, int *pb)int temp;temp=*pa; *pa=*pb; *pb=temp;测试用例:任务三 日期换算 e*0

5、2_11.cpp翻开程序文件e*02_11.cpp*include <stdio.h>int isLeap(int year);void getDate(int y,int days,int*pm,int *pd);int getDays(int y,int m,int d);int main (void) return 0;/编写子函数求*天是该年的几月几日 void getDate(int y,int days,int*pm,int *pd)/*y为年份,days为该年的*天,pm指向主调函数中存放*天的月值变量, */* pd指向主调函数中存放*天的日值变量*/int m,d

6、,i; int day; m= ; /* m:*天计算后的月值 */ d= ; /* d:*天计算后的日值 */ *pm= ; *pd= ;/编写子函数求*年*月*日是该年的第几天int getDays(int y,int m,int d) /编写子函数判断闰年。int isLeap(int year)1要求:1编写子函数判断闰年:int isLeap(int year)2编写子函数求*天是该年的几月几日:3编写子函数求*年*月*日是该年的第几天4main函数中设计步骤验证函数的正确性2提示1求*年*月*日是该年的第几天思路:累计从1月到该日期的前一月的每月天数再加上该日期的天数。2月份的天数

7、要判断闰年。累计可使用循环完成也可利用switch语句无break的特性完成。2求*天是该年的几月几日思路:循环i从1月开场如果天数days比第i月的天数大则天数days减去第i月的天数否则完毕循环。i即为所求月份,days的值为所求日数。每月的天数仍需区分处理。3源程序清单:*include <stdio.h>int isLeap(int year);void getDate(int y,int days,int *pm,int *pd);int getDays(int y,int m,int d);void main () int y,m,d,days; int *pm,*pd

8、;printf("输入年份和天数:"); scanf("%d%d",&y,&d); getDate(y,d, &m, &d); printf("这天是%d年的%d月%d日n",y,m,d);printf("输入年月日:"); scanf("%d%d%d",&y,&m,&d); days=getDays(y,m,d);printf("这天是%d年的第%d天n",y,days);/编写子函数求*天是该年的几月几日 void

9、getDate(int y,int days,int *pm,int *pd)/*y为年份,days为该年的*天,pm指向主调函数中存放*天的月值变量, */* pd指向主调函数中存放*天的日值变量*/int m,d,i; int day; for(i=1;i<=12;i+) switch(i) case 1: case 3: case 5: case 7: case 8: case 10: case 12:day=31;break; case 2:day=isLeap(y)?29:28;break; case 4: case 6: case 9: case 11:day=30;brea

10、k; if(days<=day) break; else days=days-day; m= i; /* m:*天计算后的月值 */ d= days; /* d:*天计算后的日值 */ *pm= m ; *pd= d ;/编写子函数求*年*月*日是该年的第几天int getDays(int y,int m,int d) int days=0;switch(m-1) case 12:days+=31; case 11:days+=30; case 10:days+=31; case 9:days+=30; case 8:days+=31; case 7:days+=31; case 6:d

11、ays+=30; case 5:days+=31; case 4:days+=30; case 3:days+=31; case 2:days+=isLeap(y)?29:28; case 1:days+=31; days=days+d;return days;/编写子函数判断闰年。int isLeap(int year) return ( year%4=0&&year%100!=0 | year%400=0 );4测试用例设计任务四 电费计算 e*02_14.cpp问题描述电力公司根据如下税率表进展收费,:第1个300千瓦时以每千瓦时9美分计,下一个 300千瓦时到600千瓦

12、时以每千瓦时8美分计,再下一个 400千瓦时到1000千瓦时以每千瓦时6美分计,超过1000千瓦时的电量以每千瓦时3美分计。(1) 编写一个函数,计算每个客户的总用电费用。(2) 写一个主函数,读取数据文件用电量.t*t中的数据,调用计费函数计算每一个客户的总用电费用。将结果输出到另一个数据文件用电费用.t*t。 源数据文件由客户编号和用电量两列构成,生成的新数据文件列出三列:客户编号、用电量和总用电费用。(3) 程序还要计算并输出客户数量、总耗电千瓦时和总的电费。源程序清单:*include <stdio.h>int getmoney(int w);int main () int

13、 m,w; FILE *fin; FILE *fout; if(fin=fopen("用电量.t*t","r")=NULL) printf("can not open file !"); return -1; if( (fout=fopen("用电费用.t*t","w")=NULL ) printf("can not open file 用电费用.t*t!"); return -1; while(!feof(fin) fscanf(fin,"%d",&am

14、p;w); m=getmoney(w); fprintf(fout,"电费=%d",m); fclose(fin); fclose(fout); return 0;int getmoney(int w)int money;if(w<=300)money=9*w;elseif(w<=600)money=300*9+8*(w-300);elseif (w<=1000)money=300*9+300*8+6*(w-600);elsemoney=300*9+300*8+400*6+3*(w-1000);return money;测试用例:实验体会实验过程评价:碰到什么问题.如何解决.1.第二次做指针的实验,明显比第一次熟练了,不过细节上的小错误还是很多。2.三个数比大小调试用例的时候,发现最小的数总在中间不会跑到最后面去,然后发现要一共比较三次大小才行,交换后的第一第二个数需要重新再比较一次大小才能保证三

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论