标签:结构体
题目描述:输入:
第一行输入数据N,表示测试数据组数(0<N<100),每组测试数据输入的第一行是一个整数X(1 <= X <= 100),表示学生的总数。接下来的X行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。姓名是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包括0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y表示是,N表示不是;发表的论文数是0到10的整数(包括0和10)。每两个相邻数据项之间用一个空格分隔。
输出:
每组测试数据输出包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。第三行是这X个学生获得的奖学金的总数。
28700
代码如下:
<span style="font-size:18px;">#include <stdio.h> struct Student { char a[21]; //学生姓名 int b; //期末成绩 int c; //班级评议成绩 char k,t; //k是否是班干部,t是否西部学生 int z; //发表论文数量 int award; //奖金 }; int main() { int Tol=0; //Tol为发放的总的奖金 int M=-1; int i,j,w,m; Student stu[101]; scanf("%d",&i); while(i--) { scanf("%d",&j); for(w=0;w<j;w++) { stu[w].award=0; //将每位同学的初始奖金置为0 } for(w=0;w<j;w++) //输入每位同学的情况 scanf("%s%d%d %c %c %d",stu[w].a,&stu[w].b,&stu[w].c,&stu[w].k,&stu[w].t,&stu[w].z);//*一定要考虑这里输入字符时空格的问题 for(w=0;w<j;w++) //获得各类奖金的条件 { if(stu[w].b>80&&stu[w].z>0) stu[w].award+=8000; if(stu[w].b>85&&stu[w].c>80) stu[w].award+=4000; if(stu[w].b>90) stu[w].award+=2000; if(stu[w].b>85&&stu[w].t=='Y') stu[w].award+=1000; if(stu[w].c>80&&stu[w].k=='Y') stu[w].award+=850; // printf("%s %d\n",stu[w].a,stu[w].award); } for(w=0;w<j;w++) { Tol+=stu[w].award; //所要发放的总共奖金数目 if(M<stu[w].award) //奖金多少的比较 { M=stu[w].award; m=w; //记录下标 } } printf("%s\n%d\n%d",stu[m].a,stu[m].award,Tol); } return 0; }</span><span style="font-size:14px;"> </span>运行结果如下:
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:结构体
原文地址:http://blog.csdn.net/jrz1900/article/details/47024773