资源描述:
《c程序设计上机实验报告12》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、C程序设计实验报告实验名称:结构程序设计学时安排:2课时实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的1.掌握结构变量的基本使用方法;2.掌握结构数组的基本使用方法;3.掌握结构的简单嵌套应用;4.掌握结构指针的概念,以及结构指针作为函数参数的编程方法。二、实验设备介绍软件需求:VisualC++6.0或CFree3.5以上版本硬件需求:对于硬件方面的要求,建议配置是PentiumIII450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的
2、显示卡、彩色显示器、打印机。三、实验内容1.定义一个关于年、月、日的结构,并编写函数计算某日是该年中的第几天?要求用结构指针作为函数参数,注意闰年问题。以下部分程序供参考,可自行改动:structdate{/*日期结构体:包含年月日*/intyear;intmonth;intday;};voiddayofyear(structdate*pday);intmain(void){structdatetemp,*pday;pday=&temp;/*请添加*/}运行结果示例如下:Inputyear、monthandday:200635642.改正程序error09_2.cpp
3、中的错误。建立一个有n(3到10之间)个学生成绩的结构记录,包括学号、姓名和3门成绩,输出总分最高的学生姓名和总分。输入输出结果如下所示:n=3第4页共4页1zhang7883752wang7680773shen928878总分最高的学生是:shen,258分要求把正确的代码(按规范缩进)写入报告,并以注释的方式说明错误原因。注释示例如下:inti;/*循环控制变量不能定义为double类型*/3.编写一程序,计算两个时刻之间的时间差,并将其值返回。时间以时、分、秒表示,假设两个时刻的差小于24小时。(此题选做)提示:先输入两个时间,然后比较两个时间的大小,用大的减去
4、小的。时间相减从秒开始,如果负数则需位,再减分,最后减小时。四、程序清单第一题#includeintmain(){intresult;structriqi{intyear;intmonth;intday;}date;printf("Inputyear、monthandday:");scanf("%d%d%d",&date.year,&date.month,&date.day);intday_of_year(intyear,intmonth,intday);result=day_of_year(date.year,date.month,date.day
5、);printf("%d",result);return0;}intday_of_year(intyear,intmonth,intday){intk,leap,yearday;inttab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30},{0,31,29,31,30,31,30,31,31,30,31,30}};leap=(year%4==0&&year%100!=0)
6、
7、year%400==0;yearday=0;for(k=1;k8、day=yearday+day;returnyearday;}第4页共4页第二题#includeintmain(void){structstudent{intnumber;charname[20];intscore[3];intsum;};structstudentstudent[20];/*定义记录20个学生信息的结构数组*/inti,j,k,n,max=0;printf("输入n:");scanf("%d",&n);for(i=0;i9、tudent[i].sum=0;/*将成绩和初始化*/scanf("%d%s",&student[i].number,&student[i].name);for(j=0;j<3;j++){scanf("%d",&student[i].score[j]);student[i].sum+=student[i].score[j];}}max=student[0].sum;for(i=0;i