不会(到34就卡了)

题目总版

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;
}

求关


|