hz_Glmc @ 2025-01-10 20:36:30
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,i = 0;
int maxm[i];
cin >> n;
string a[i],maxn;
// 名字
int b[i],c[i],f[i];
//b:期末平均分 c:评议成绩 f:论文数
char d[i],e[i];
//d:学生干部(Y或N) e:西部省份 (Y或N)
while(i <= n){
cin >> a[i] >> b[i] >> c[i] >> d[i] >> e[i] >> f[i];
}
for(int j=0;j<=n;j++){
if(b > 80 && f >= 1){//院士奖学金
maxm[j] += 8000;
}else if(b > 85 && c > 80){//五四
maxm[j] += 4000;
}else if(b > 90){//优秀
maxm[j] += 2000;
}else if(b > 85 && e == 'Y'){//西部
maxm[j] += 1000;
}else if(c > 80 && d == 'Y'){//贡献
maxm[j] += 850;
}else{
maxm[j] += 0;
}
}
for(int k=0;k<=n;k++){
......
}
return 0;
}
P1051
by hz_Glmc @ 2025-01-10 20:38:31
34行的“......”是不会,
不是省略
by CSPAK_Zhangxiuqi0011 @ 2025-01-10 20:51:42
@hz_Glmc 对于第一和第二问,可以扫描一遍所有学生,如果当前学生分数比我目前扫到的最大的学生分数还要多,那么更新最大值,记录答案。对于第三个问,直接累加即可。
by TigerXiaoxi @ 2025-01-10 20:52:00
@hz_Glmc 建议发题目讨论版
by zhangchi20121226 @ 2025-01-10 20:59:57
建议学好基础语法后使用结构体,错误太多了
i = 0后定义一大堆零位数组,i <= n后面甚至没有i++
甚至循环(n+1)次 不过好像不要紧
by zhangchi20121226 @ 2025-01-10 21:08:50
还有,你第一个循环里的数组都不带j
帮你改好了:
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
int n,i = 0,s = 0,maxn = 0,ii;
int maxm[105] = {0};
cin >> n;
string a[105];
// 名字
int b[105],c[105],f[105];
//b:期末平均分 c:评议成绩 f:论文数
char d[105],e[105];
//d:学生干部(Y或N) e:西部省份 (Y或N)
for(int i=1;i<=n;i++){
cin >> a[i] >> b[i] >> c[i] >> d[i] >> e[i] >> f[i];
}
for(int j=1;j<=n;j++){
if(b[j] > 80 && f[j] >= 1){//院士奖学金
maxm[j] += 8000;
}if(b[j] > 85 && c[j] > 80){//五四
maxm[j] += 4000;
}if(b[j] > 90){//优秀
maxm[j] += 2000;
}if(b[j] > 85 && e[j] == 'Y'){//西部
maxm[j] += 1000;
}if(c[j] > 80 && d[j] == 'Y'){//贡献
maxm[j] += 850;
}
s += maxm[j];
}
for(int k=1;k<=n;k++){
if(maxm[k] > maxn){
maxn = maxm[k];
ii = k;
}
}
cout<<a[ii]<<endl<<maxn<<endl<<s<<endl;
return 0;
}
求关