返回:贺老师课程教学链接
【项目1-学生成绩统计】
每位同学的信息学号、姓名、C、高数、英语成绩。定义一个学生成绩的结构体数组,其中的数据成员包括学号(char num[13])、姓名(name)、三门课的成绩(grade)、总分(score)、均分(average))。
(1)从键盘上输入N名学生的信息(N定义为常变量);
(2)求出每名同学的总分和均分,并存储在结构体数组中(可以读入过程中“顺便”计算);
(3)输出每位同学的信息学号、姓名、总分和均分。
请参考下面的代码,将需要的其他代码写出来。
#include
struct Student
{
char num[13];
char name[10];
int c;
int math;
int english;
int grade;
double average;
};
const int N=3;
int main( )
{
int i, j, k;
//定义结构体数组
struct Student stu[N];
//写出代码,实现要求的功能
return 0;
}
参考运行结果如图:
(4)使用相同的结构体类型,在main函数中已经对结构体数组进行了初始化,请完成相关函数的定义,实现main函数中要求的功能。
#include
struct Student //同前
{
……
};
void calculate(struct Student s[],int n); //计算总分和均分,数据在s数组中,共有n个元素
void sort1(struct Student [],int); //按总分降序排序
void sort2(struct Student [],int); //按学号升序排序
void output(struct Student [],int); //输出成绩单
void outputExcellent(struct Student [],int); //输出优秀者:总分超285,单科不低于90
int main()
{
struct Student stu[]= {{"201152501104","Tom",65,69 ,68 },
{"201152501114","Jeery",94 ,89 ,63 },
{"201152501138","Speike",67 ,62 ,84 },
{"201152501204","Tyke",100 ,95 ,91 },
{"201152501202","Tuffy",59 ,80 ,55 },
{"201152501115","Butch",100 ,99 ,89 },
{"201152501201","Lightning",95 ,92 ,99 },
{"201152501145","Topsy",88 ,56 ,67 },
{"201152501203","Droopy",62 ,62 ,95 },
{"201152501140","Drupa",80 ,60 ,86 },
{"201152501205","Buzz",73 ,90 ,94}
};
int stuNum=sizeof(stu)/sizeof(stu[0]); //用sizeof运算确定数组中元素个数
//计算总分和均分后输出
calculate(stu,stuNum);
printf("下面是成绩单:\n");
output(stu,stuNum);
printf("优秀者名单:\n");
outputExcellent(stu,stuNum);
//按总分降序排序后输出
sort1(stu,stuNum);
printf("按总分降序排序后:\n");
output(stu,stuNum);
//按学号升序排序后输出
sort2(stu,stuNum);
printf("按学号升序排序后:\n");
output(stu,stuNum);
return 0;
}
(5)score.txt中是一些同学的学号、姓名、C++、高数、英语成绩,利用前面定义的结构体数组,读取文件score.txt中的数据,完成下面的应用:
所有功能可以在main()函数中实现,推荐设计自定义函数实现任务,更推荐用多文件组织完成。
(6)在前面工作的基础拟出新的需求,将程序用一个“菜单”组织起来(如图所示),做成一个“学生成绩管理系统”之类的应用程序。
[参考解答]
【项目2-玩转日期和时间】
定义一个表示时间(包括年、月、日、时、分、秒)的结构体,然后完成下面的功能。
提示:将各个功能分别设计成函数实现,在main函数中调用,进行测试。可以设计一个函数,即刻进行测试,以降低复杂度。
要实现的功能是:
(1)输入一个时间(注意各部分数据的取值范围)将输入的时间保存在一个结构体变量中;
(2)输出该日在本年中是第几天(注意闰年问题);
(3)输出这是这一天中的第几秒;
(4)输出这是这一年中的第几秒;(不要认为这个数荒唐,在计算中需要取随机数时需要一个不会重复的“种子数”,这个秒数是常用的。)
(5)求你输入的时间d天后是哪年哪月哪日,将结果保存在一个结构体变量中输出。
[参考解答]
【项目3-区号查询】
在文件PostCode.txt中,提供了全国各省城市的长途区号和邮政编码。请以这个文件为数据来源设计程序,输入城市名,输出该城市的相关的信息。
[参考解答]