实验8结构体应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验8.结构体应用---10081 学生成绩统计(结构体)
1.【问题描述】用结构数组实现学生成绩统计各功能。
某班有N(N<=30)个学生,共开设5门课程,分别用三个函数实现如下功能:
⑴求第一门课程的平均分;
⑵找出有2门及2门以上不及格的学生,并输出其学号;
⑶找出平均成绩在90分及以上的学生,输出他们的学号。
【输入形式】第一行为一个整数N,表示本班共N个人,接下来的N行中每行包含一个学生的信息,包括学号(长度小于11的字符串)、课程1成绩、课程2成绩、课程3成绩、课程4成绩、课程5成绩。成绩均为整数。
【输出形式】输出共三行:
第一行为本班第一门课程的平均成绩。(保留小数点后两位)
第二行为有2门及2门以上不及格的学生的学号,各学号之间用一个空格分隔。若不存在,则打印"no"。
第三行为平均成绩在90分及以上的学生的学号, 各学号之间用一个空格分隔。若不存在,则打印"no"。
【样例输入】3
070001 90 80 85 50 42
070002 93 95 90 88 92
070003 98 92 84 90 91
【样例输出】93.67
070001
070002 070003
【样例说明】本班有3个学生。
第1个学生学号为: 070001, 5门课程的成绩分别为: 90、80、85、50、42;
第2个学生学号为: 070002, 5门课程的成绩分别为: 93、95、90、88、92;
第3个学生学号为: 070003, 5门课程的成绩分别为: 98、92、84、90、91。
本班第1门课程的平均成绩为: 93.67; 有2门及2门以上不及格的学生的学号为: 070001;
平均成绩在90分及以上的学生的学号为: 070002、070003。
【评分标准】本题共2个测试点,每个测试点1.0分,共2.0分。
#include
struct student
{
char num[10];
int b[5];
}a[30];
int main()
{
void everage(struct student *p1,int m);
void failure(struct student *p2,int m);
void success(struct student *p3,int m);
int n,i;
scanf("%d",&n);
for(i=0;i scanf("%s%d%d%d%d%d",a[i].num,&a[i].b[0],&a[i].b[1],&a[i].b[2],&a[i].b[3],&a[i].b[4]); everage(a,n); failure(a,n); success(a,n); return 0; } void everage(struct student *p1,int m) { int i,sum=0; float ever=0; for(i=0;i sum+=p1[i].b[0]; ever=1.0*sum/m; printf("%.2f\n",ever); } void failure(struct student *p2,int m) { int i,k,j,h=0; for(i=0;i { k=0; for(j=0;j<5;j++) if(p2[i].b[j]<60) k++; if(k>=2) { printf("%s ",a[i].num); h++; } } if(h==0) printf("no"); printf("\n"); } void success(struct student *p3,int m) { int i,j,h=0,sum=0; float everage; for(i=0;i { everage=0; sum=0; for(j=0;j<5;j++) sum+=p3[i].b[j]; everage=1.0*sum/5; if(everage>=90) { printf("%s ",p3[i].num); h++; } } if(h==0) printf("no"); printf("\n"); } 实验8.结构体应用---10082 图书价格统计 2.【问题描述】用结构数组保存书的信息。现有N(N<50)本图书,每本图书包括书名(长 度小于30的字 符串)、出版社(长度小于15的字符串)、数量(整数)、单价(浮点数)信息,读入书 的信息并按单价由少到多的顺序输出各书的所有信息,然后输出购买这些书的总费用。 【输入形式】第一行为一个整数N,表示图书数量,接下来的N行中每行包含一本书的信息数据,各数 据之间由空格分隔。 【输出形式】输出前N行,为按单价排序的所有书的信息,第N+1行为购买这些书的总费用(保留到小 数点后两位)。 【样例输入】3 C-Programming qinghu 50 25.50 DataStruct jixiegongye 30 31.55 OpratingSystem gaodengjiaoyu 60 18.30 【样例输出】OpratingSystem gaodengjiaoyu 60 18.30 C-Programming qinghu 50 25.50 DataStruct jixiegongye 30 31.55 3319.50 【样例说明】(1)输入的所有书的信息用英文以及数字(不能是汉字)表示。 (2)输出前N行的格式设定为:"%-30s%-20s%-10d%-.2f\n"。 【评分标准】本题共2个测试点,每个测试点1.0分,共2.0分。 #include #include struct book { char name[30]; char chu[15]; int count; float price; }a[50]; int main() {