中易网

C语言问题编译不过……求神牛

答案:5  悬赏:40  
解决时间 2021-03-21 11:12
问题描述
某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同:
1)   院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;

2)   五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得;

3)   成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)的学生均可获得;

4)   西部奖学金,每人1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得;

5)   班级贡献奖,每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;

只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。

现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。

输入格式 Input Format
输入的第一行是一个整数N(1 <= N <= 100),表示学生的总数。接下来的N行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。姓名是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包括0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y表示是,N表示不是;发表的论文数是0到10的整数(包括0和10)。每两个相邻数据项之间用一个空格分隔。

输出格式 Output Format
输出包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。第三行是这N个学生获得的奖学金的总数。

源程序:
#include
#include

int main()
{
int i,n,sum,max=-10000,maxn=0;
scanf("%d",&n);
typedef struct {char name[20];int qm,bj;char gb,xb;int lunwen,jiangxuejin;}a[n+1];

for(i=1;i<=n;i++)
{
scanf("%s%d%d%c%c%d",&a[i].name,&a[i].qm,&a[i].bj,&a[i].gb,&a[i].xb,&a[i].lunwen);
}
for(i=1;i<=n;i++)
a[i].jiangxuejin=0;
for(i=1;i<=n;i++)
{
if(a[i].qm>80&&a[i].lunwen>=1){a[i].jiangxuejin+=8000;sum+=8000; }
if(a[i].qm>85&&a[i].bj>80){a[i].jiangxuejin+=4000;sum+=4000;}
if(a[i].qm>90){a[i].jiangxuejin+=2000;sum+=2000;}
if(a[i].qm>85&&a[i].xb=='Y'){a[i].jiangxuejin+=1000;sum+=1000;}
if(a[i].bj>80&&a[i].gb=='Y'){a[i].jiangxuejin+=850;sum+=850;}
if(max }

printf("%s\n%d\n%d",a[maxn].name,a[maxn].jiangxuejin,sum);
system("pause");
return 0;

}
顺便点评一下程序编的怎么样啊,谢谢各位大大
最佳答案
&a[i].name记得不需要加取地址符号的吧。你试一下 ,还有typedef struct {char name[20];int qm,bj;char gb,xb;int lunwen,jiangxuejin;}a[n+1];你这是什么玩意?n是未知的?
全部回答
那你认为应该输出啥
数组size需要编译期常量,或者用malloc动态分配吧。 PS:不做点评。
a[n+1] 数组不能使用变量初始化大小,因为是临时的你可以给大一点比如a[254];
1.结构体定义你没有搞明白 2.结构体内存分布你没有搞明白 3.max为什么是个大负数? 4.程序写的很乱,适当加一些空格换行使程序可读性更佳 5.scanf不要用那么长的,你这种情况录入的情况最好用文件 结构体改为如下内容 typedef struct b{char name[20]; int qm,bj; char gb,xb; int lunwen,jiangxuejin; }; struct b a[n+1];
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我爷爷和男友的姥姥是亲兄妹我们算近亲吗
求李克勤和谭咏麟合唱的一首歌
永大电梯属几线品牌?质量如何?售后有保证吗
千岛湖用英文怎么写
咨询:美肤宝汉方经典套装价格是多少
开一个(黄色小鸭)童装加盟店
求好看的酷狗音乐的歌词颜色
对于一次电压较低的降压变压器,空载试验可否
龙现北京现代地址有知道的么?有点事想过去
好听的姐妹组合的英文名字
关于勤奋读书的成语
请问环境科学专业考研能考哪些军校的哪些专业
怎样利用年报里的数据算出每股股利啊?实在找
阜新有赤峰的小吃对夹吗
住宅在公安局楼上,对风水有影响吗?
推荐资讯
比较器可以把交流变直流吗
CMV-850加工中心无法回原点如何解决
吃肉皮会胖吗,吃猪肉皮会长胖吗,吃肉皮会发
T96火车在深圳哪个车站坐车?
请问杭州附近那里有好玩点的农家乐,大点的,
若a2+b2=1,则ab的最大值是?并且取得最大值时a
山东济宁微山鲁桥村离济宁火车站多远
江苏华冠通讯有限公司怎么样
我幼儿园要做黑板漆,一平方多少价。
求一些纯DJ,一直是那种有节奏感的音乐,不要
美宜佳充值支付宝的具体操作
从双阜头到顺义北石槽有多少公里
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?