解题思路:
1)要一次输入多个值,利用结构体比较方便
2)对于奖学金的评定,有一些关于分数的要求,比较时可以自己为他们排一下序,比如如果不大于80,就不用可虑大于90了,所以把大于90的奖学金放在大于80的语句里面,可以减少一些不必要的资源浪费
注意事项:
1)利用数组,别忘了加[i]
参考代码:
#include<stdio.h>
#include<string.h>
struct Stu{ //定义结构体
char name[20];
int ave_grade;
int class_grade;
char ganbu;
char west;
int article;
int all;
};
int main(){
struct Stu student[100];
int N;
scanf("%d",&N);
int max=0,count=0; //最多奖学金得主,全部的奖学金总和
char maxname[20]; //最多奖学金得主名字
for(int i=0;i<N;i++){
//printf("name avegrade classgrade ganbu west article\n"); //输入提示
scanf("%s %d %d %c %c %d",&student[i].name,&student[i].ave_grade,&student[i].class_grade,&student[i].ganbu,&student[i].west,&student[i].article);
student[i].all=0; //赋初值
if(student[i].ave_grade>80){ //平均分>80
if(student[i].article>=1){ //院士奖学金发表文章>1
student[i].all+=8000;
}
if(student[i].ave_grade>85){ //平均分>85
if(student[i].class_grade>80){ //五四奖学金评议成绩>80
student[i].all+=4000;
}
if(student[i].west=='Y'){ //西部奖学金
student[i].all+=1000;
}
if(student[i].ave_grade>90){ //平均分>90
student[i].all+=2000; //成绩优秀奖
}
}
}
if(student[i].class_grade>80 && student[i].ganbu=='Y'){ //干部奖学金
student[i].all+=850;
}
if(i==0){
max=student[i].all;
}else{
if(student[i].all>max){
max=student[i].all;
strcpy(maxname,student[i].name);
}
}
count+=student[i].all;
}
printf("%s\n%d\n%d\n",maxname,max,count);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复