实验09 结构
更新时间:2024-03-09 01:11:01 阅读量: 综合文库 文档下载
实验九 结构程序设计
班级: 学号: 姓名: 评分:
一.【实验目的】
1、掌握结构变量的基本使用方法。 2、掌握结构数组的基本使用方法。
3、掌握结构指针的概念以及结构指针作为函数参数的编程方法。 4、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题
A.目标:进一步学习掌握程序调试的方法和技巧。
B.内容:输入一个正整数n(3≤n≤10),再输入n个雇员的信息(如下表所示),输出每个雇员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。改正程序中的错误,使其实现程序的功能。(注:程序文件保存在“调试示例”文件夹中,文件名为error09_1.cpp) ① 调试正确的源程序清单
#include
int n;
double x, root;
double fun(int n, double x);
printf(\ scanf(\ printf(\ scanf(\ root = fun(n, x);
printf(\
return 0; }
double fun(int n, double x) {
if(n == 0) return 1; else
return x * fun(n-1, x); }
② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
2、完善程序,并调试运行程序
题目(1)日期换算。程序功能:定义一个关于年、月、日的日期结构,并编写一个函数计算某日期是该年中的
第几天(注意闰年问题)。要求用结构体指针作为函数参数。在主函数中输入一个日期(年、月、日),调用函数计算并输出该日期是该年中的第几天。(注:程序文件保存在“第1题”文件夹中)打开proj1.cpp
文件,在两条星线之间填入相应的代码,使程序完成该功能。 ① 调试正确的源程序清单
#include
int year; //年 int month; //月 int day; //日 };
int main (void ) {
int n;
struct date d,*p;
int ComputeDays(struct date *p); printf(\
scanf(\输入一个日期
p=&d; //指针p指向日期变量d
//请在两条星线之间填入相应的代码, 调用ComputeDays(struct date *p)函数计算。 /************************************************************************/
n=ComputeDays(p);
/************************************************************************/
printf(\ return 0; }
int ComputeDays(struct date *p) {
int i,num=0,flag; //num作为计算天数的累计和变量,flag作为是否闰年的标记。 int tab[2][13]={
{0, 31, 28, 31, 30,31,30,31,31,30,31, 30,31}, {0, 31, 29, 31, 30,31,30,31,31,30,31, 30,31}};
if((p->year%4==0 && p->year0!=0) || (p->year@0==0))flag=1; //判定闰年 else flag=0;
//请在两条星线之间填入相应的代码, 计算某日期是该年中的第几天(注意闰年问题)。 /*************************************************************************/
for (i=1; i
num = num + tab[flag][i]; num += p->day;
/*************************************************************************/ return num; }
② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
题目(2)计算时间差期。程序功能:定义一个关于时、分、秒的时间结构,并编写一个函数计算两个时刻的时
间差(注:两个时刻的时间差小于24小时)。要求用结构体指针作为函数参数。在主函数中输入两个时刻(时、分、秒),调用函数计算并输出两个时刻的时间差。(注:程序文件保存在“第2题”文件夹中)打开proj2.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。 ① 调试正确的源程序清单
#include
int hour; //年
算。 /
int minute; //月 int second; //日 };
int main (void ) {
struct time t,t1,t2,*p,*q;
struct time TimeDiff(struct time *p,struct time *q); printf(\
scanf(\输入第一个时间 printf(\
scanf(\输入第二个日期
p=&t1;q=&t2; //指针p、q分别指向日期变量d1、d2
//请在两条星线之间填入相应的代码, 调用TimeDiff(struct time *p,struct time *q)函数计
/************************************************************************************t=TimeDiff(p,q);
/************************************************************************************
/
printf(\
printf(\ return 0; }
struct time TimeDiff(struct time *p,struct time *q) {
struct time tt;
int num1,num2,num; //num作为计算时间差的总秒数变量 num1=p->hour*3600+p->minute*60+p->second; num2=q->hour*3600+q->minute*60+q->second;
//请在两条星线之间填入相应的代码, 计算两个时刻的时间差。 /*****************************************************/
num=(num1>=num2)?num1-num2:num2-num1;
tt.hour=num/3600;tt.minute=(num600)/60;tt.second=num`;
/*****************************************************/ return tt; }
② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
题目(3)成绩处理。程序功能:定义一个关于学生成绩单的结构(包含:学号、姓名、语文、数学、计算机和
平均成绩),编写4个对应的函数,分别完成以下几项计算和统计汇总工作:
(1) 计算每一个学生的平均成绩。 (2) 计算每门课程的平均成绩。 (3) 输出平均成绩最高的学生的记录。 (4) 按平均成绩从高到低输出学生的成绩单(学号、姓名、数学、英语、计算机和平均成绩)。 要求用结构体指针作为函数参数。在主函数中输入5个学生的学号、姓名和数学、英语、计算机三门课程的成绩数据,分别调用不同的函数完成以上4项工作。(注:程序文件保存在“第3题”文件夹中)打开proj3.cpp文件,在两条星线之间填入相应的代码,使程序完成该功能。
① 调试正确的源程序清单
#include
struct score{ //定义学生成绩单结构 int No; //学号 char Name[20]; //姓名 int Chinese; //语文 int Maths; //数学 int Computer; //计算机 float Average; //平均成绩 };
void main () {
int i,n=5;
struct score s[5],*p;
void Compute_Student_avg(struct score *p,int n); void Compute_Course_avg(struct score *p,int n); void Compute_Average_max(struct score *p,int n); void sort_Average(struct score *p,int n);
//输入5个学生的成绩数据
printf(\ for(i=0;i<5;i++) {
printf(\ scanf(\输入学号 scanf(\输入姓名 scanf(\输入语文 scanf(\输入数学 scanf(\输入计算机 }
p=s; //指针p指向s数组
//请在两条星线之间填入相应的代码, 调用4个不同的函数,依次完成4项计算和统计工作。 /*****************************************************************************/ Compute_Student_avg(p,n); Compute_Course_avg(p,n); Compute_Average_max(p,n); sort_Average(p,n);
/*****************************************************************************/ }
void Compute_Student_avg(struct score *p,int n) //计算每一个学生的平均成绩函数 {
int i;
//请在两条星线之间填入相应的代码, 计算每一个学生的平均成绩。
/*****************************************************************************/ for(i=0;i<5;i++,p++)
p->Average=1.0*(p->Chinese+p->Maths+p->Computer)/3;
/*****************************************************************************/ }
void Compute_Course_avg(struct score *p,int n) //计算每门课程的平均成绩函数 {
int i;
float yuwen=0,shuxue=0,jisuanji=0;
//请在两条星线之间填入相应的代码, 计算每门课程的平均成绩。 ////包括:数学、英语、计算机三门课程的平均成绩。
/************************************************************/ for(i=0;i<5;i++,p++){
yuwen+=p->Chinese;shuxue+=p->Maths;jisuanji+=p->Computer;}
/************************************************************/ printf(\ printf(\ printf(\}
void Compute_Average_max(struct score *p,int n) //输出平均成绩最高的学生记录函数 {
int i,max=0;
//请在两条星线之间填入相应的代码, 输出平均成绩最高的学生的记录。
成绩。
////包括:学号、姓名、数学、英语、计算机和平均成绩。
/*************************************************************/ for(i=1;i<5;i++){
if (p[max].Average
/*************************************************************/ printf(\ printf(\ printf(\
printf(\ printf(\
printf(\ printf(\}
void sort_Average(struct score *p,int n) //按平均成绩从高到低输出学生的成绩单函数 {
int i,j,iMax; struct score t;
//请在两条星线之间填入相应的代码, 按平均成绩从高到低排序学生成绩单。 /*******************************************************************/ for(i=1;i for(j=0;j if(p[j].Average /*******************************************************************/ //输出按平均成绩从高到低排序后的学生成绩单。包括:学号、姓名、数学、英语、计算机和平均 printf(\ for(i=0;i printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ } } ② 运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 三.【实验总结】
正在阅读:
实验09 结构03-09
搪胶用料基本原理09-27
《组织行为学》第2阶段测试题04-07
顶板事故防治措施06-09
细胞与分子免疫学名解05-19
整脏治乱活动上半年工作总结04-11
全国卷I近五年试题分类汇总02-27
高仁杰的实习报告01-05
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 结构
- 实验
- 北京市东城区2016-2017学年度第二学期高三综合练习(一)数学理
- 五年级下册英语试题- Unit6单元测评卷 湘鲁版(含答案) - 图文
- 混凝土工程施工方案
- C++函数编程20道习题汇总含其详细程序解答
- 辣锅皇之香辣干锅鸡的做法
- 乘法的初步认识 公开课配套练习题
- 天津市人民政府批转市民政局、劳动局关于退伍义务兵安置工作随
- 汽车电工电子试卷A
- 加强语言实践
- 对全国31个省市城市设施水平进行聚类分析1
- 经理在公司治理商业贿赂动员会议上的讲话
- 校卫队申请书
- 《医学基础知识》综合模拟卷及答案(共三套)要点 - 图文
- 2010年象山县中小学生田径运动会秩序册
- 国庆节横幅标语(20条)
- 花坛施工方案
- 屋面找平层施工方案
- 校本研修案例甄东亮
- 2018年八年级物理下册第11章第2节功率教案新版新人教
- 雅思TASK1图表写作套句精选50句