#include stdiohstruct mon char name21; int g1;期末平均成绩 int g2;班级评议成绩 char i;是否是干部 char x;是否是西部省份学生 int lun;论文数 int sum;奖学金 ;int main int nij; struct mon a10=0; int t;
这是一道结构体的题目,我们需要定义一个结构体来存储每个学生的信息,包括姓名、期末平均成绩、班级评议成绩、是否是干部、是否是西部省份学生、论文数和奖学金总数。然后根据题目要求来计算每个学生的奖学金总数,最后找出奖学金总数最高的学生,输出其姓名、奖学金总数和所有学生的奖学金总数。
具体实现过程如下:
- 定义结构体
首先需要定义一个结构体来存储学生的信息,包括姓名、期末平均成绩、班级评议成绩、是否是干部、是否是西部省份学生、论文数和奖学金总数。可以这样定义:
struct mon { char name[21]; // 姓名 int g1; // 期末平均成绩 int g2; // 班级评议成绩 char i; // 是否是干部 char x; // 是否是西部省份学生 int lun; // 论文数 int sum; // 奖学金总数 };
- 输入学生信息
接下来需要输入每个学生的信息,包括姓名、期末平均成绩、班级评议成绩、是否是干部、是否是西部省份学生、论文数。可以使用循环来输入每个学生的信息:
for(i=0;i<n;i++) { scanf("%s %d %d %c %c %d",a[i].name,&a[i].g1,&a[i].g2,&a[i].i,&a[i].x,&a[i].lun); }
- 计算奖学金总数
根据题目要求来计算每个学生的奖学金总数,可以使用 if 语句来判断每个条件,然后累加到每个学生的奖学金总数上:
for(i=0;i<n;i++) { if(a[i].g1>80&&a[i].lun>=1) a[i].sum+=8000; if(a[i].g1>85&&a[i].g2>80) a[i].sum+=8000; if(a[i].g1>90) a[i].sum+=2000; if(a[i].g1>85&&a[i].x=='Y') a[i].sum+=1000; if(a[i].g2>80&&a[i].i=='Y') a[i].sum+=850; }
- 找出奖学金总数最高的学生
接下来需要找出奖学金总数最高的学生,可以使用一个变量来记录当前最高的奖学金总数和其对应的学生的下标,然后遍历每个学生,如果发现有更高的奖学金总数,就更新这个变量:
max=a[0].sum; // 记录最高的奖学金总数 j=0; // 记录最高的奖学金总数对应的学生下标 for(i=1;i<n;i++) { if(a[i].sum>max) { max=a[i].sum; j=i; } }
- 输出结果
最后需要输出最高奖学金的学生的姓名、奖学金总数和所有学生的奖学金总数。可以使用 printf 函数来输出:
printf("%s\n%d\n%d\n",a[j].name,max,s);
其中,a[j].name 表示最高奖学金的学生的姓名,max 表示最高奖学金的学生的奖学金总数,s 表示所有学生的奖学金总数
原文地址: https://www.cveoy.top/t/topic/cgB3 著作权归作者所有。请勿转载和采集!