实验8结构体应用

实验8结构体应用
实验8结构体应用

实验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

070002 93 95 90 88 92

0700019080 85 50 42?

070003 9892 84 90 91

【样例输出】93、67

070001?070002070003?【样例说明】本班有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 <stdio.h>

structstudent

char num[10];

intb[5];

}a[30];

int main()

voideverage(structstudent*p1,int m);

voidfailure(struct student*p2,int m);

void success(struct student*p3,int m);

int n,i;

scanf(”%d",&n);

for(i=0;i<n;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);

return0;

}

voideverage(structstudent*p1,int m)

int i,sum=0;

float ever=0;

for(i=0;i〈m;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〈m;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—Programmingqinghu 50 25、50 DataStruct jixiegongye 30 31、55

OpratingSystem gaodengjiaoyu 60 18。30

【样例输出】OpratingSystem gaodengjiaoyu 60 18.30

?C-Programming qinghu 50 25、5

0?DataStruct jixiegongye 3031。55

?3319.50

【样例说明】(1)输入得所有书得信息用英文以及数字(不能就是汉字)表示。

? (2)输出前N行得格式设定为:”%—30s%-20s%-10d%-.2f\n"、?【评分标准】本题共2个测试点,每个测试点1.0分,共2、0分。

#include<stdio。h〉

#include 〈string、h〉

struct book

{

char name[30];

char chu[15];

int count;

floatprice;

}a[50];

int main()

{

inti,j,k,n,h;

char m[30]={’\0'},b[15]={'\0'};

float t,sum=0;

scanf("%d",&n);

for(i=0;i〈n;i++)

scanf("%s%s%d%f",a[i]。name,a[i]、chu,&a[i]、count,&a[i]。price);

for(i=0;i

k=i;

for(j=i+1;j

if(a[j]、price<a[k]、price)

k=j;

if(i!=k)

strcpy(m,a[i]、name); strcpy(a[i]、name,a[k].name); strcpy(a[k].name,m);

strcpy(b,a[i]。chu); strcpy(a[i].chu,a[k]。chu);strcpy(a[k]、chu,b);

h=a[i]、count; a[i]、count=a[k]。count; a[k]。c ount=h;

t=a[i]。price; a[i]。price=a[k].price;a[k]、price=t;

}

for(i=0;i<n;i++)

printf("%-30s%-20s%-10d%-.2f\n”,a[i]。name,a[i]。chu,a[i]、count,a[i]。price);

for(i=0;i〈n;i++)

sum +=a[i]、price*a[i].count;

printf("%.2f\n”,sum);

return 0;

}

相关主题
相关文档
最新文档