banxiaranbaii 2022-03-31 20:09 采纳率: 100%
浏览 33
已结题

洛谷P1051 [NOIP2005 提高组] 谁拿了最多奖学金 输出错误

问题遇到的现象和发生背景

img

最终输出的结果错误,我也不知道代码在哪出错了
第一个AC了,但第二个案例WA了,我真的不会改了,呜~~

输入:(案例一)
4
YaoLin 87 82 Y N 0
ChenRuiyi 88 78 N Y 1
LiXin 92 88 N N 0
ZhangQin 83 87 Y N 1
输出:
ChenRuiyi
9000
28700

输入:(案例二)

100
KSSHsCEhNHXIMxnKjszE 93 98 N Y 0
KRXBnwAzDGjpfJgRpKt 95 90 Y Y 0
JBOyaqxicVGB 96 84 N Y 0
HolSWzxphdbM 99 80 Y Y 0
YzYKojgqgraUpqNyJ 95 90 N N 0
LgX 97 94 Y Y 0
HCRuZbWsSDgkOEoj 80 90 N Y 0
S 85 89 N Y 10
AdLhdCBxwmJXRm 78 97 Y N 0
QhgGp 85 87 Y N 0
ZFTdFawbiwDG 87 80 N Y 0
JaOThlpkrRkejXMMXgbu 95 80 Y Y 0
NiAntWp 85 91 Y N 0
Te 81 81 Y Y 0
TrFXiYBMzJ 92 87 N N 0
MlhsUsruSKdrAGkUerE 97 92 Y Y 0
NWpjgxcNegmyEGHlPTP 88 94 N N 5
VCXJjomOzywFZBVkDR 87 75 Y N 0
PxZYNvXNdbUtBIp 82 75 N Y 0
TsJkMpF 85 99 N Y 0
BwaIeOrqdatudl 85 80 N N 0
IB 95 90 Y N 0
HmPorGeOs 98 85 Y N 0
DgRHzC 87 82 Y N 0
WkRmkErigra 90 75 Y N 0
MZdQ 85 78 N N 0
NIrWcjt 81 95 Y N 0
MQBfcr 85 80 Y N 0
IXrLPdJhEekBRgsbkqI 95 85 Y Y 6
MWAd 89 75 Y N 0
BVYqUBdV 76 79 Y Y 0
NhmSyMnvHxUkjye 79 90 Y N 0
NUPyQqEhklWtWxeIz 80 95 Y N 0
NsQbL 95 86 N N 0
KEKFcpbDWQXUsQTXvFbs 95 95 N N 0
ZzjJWy 90 80 N Y 3
TOWFblEWAuVgAxdHt 95 100 N N 0
HRYFlarRQhe 100 90 N N 0
SGUCaHJVg 95 87 Y Y 0
CsNEZwUWERVFFxLsdyK 85 94 N N 0
PZhrRpBMpm 80 85 Y N 0
LsyePjMaoonOscyyUQY 82 98 Y Y 0
SkPGcYDnYyIp 95 90 N N 0
OaV 90 90 Y N 0
W 75 90 Y N 0
TJjZwq 85 75 Y Y 0
PVFVBEocVjjpg 90 88 N N 0
HMJecx 85 100 N Y 0
PvgXSkNZQNcfJrgTzgm 90 75 N Y 0
VnVXCwwJdbrusXG 89 95 Y N 0
BNziq 95 76 Y Y 0
MNjzTqMCtx 85 95 N N 0
UihwjdZaUXWuMsytRtN 90 88 Y N 7
HdXkkOHRQoG 93 85 Y N 0
DHDAFValkXKFYjznnn 75 100 N N 0
JskIgwiNH 85 85 Y N 0
SeYSBFuVQaEUXwf 75 80 N Y 0
XfGMOTDT 82 75 Y Y 0
GnGatTgZBPgj 90 90 N N 0
K 85 80 Y Y 0
KRJVphYKwQTOMc 95 85 N N 0
DFWtLGoFLXHptkI 75 92 N Y 0
CayHZQXpTpyFPSuJz 87 76 N Y 0
RRlRboFqAgLvzrJ 89 75 N Y 4
DbWHykSi 85 84 N Y 0
WQHneRqIh 90 82 Y N 0
BhGejmW 90 93 Y N 0
AFEEic 95 80 Y N 0
MXhBgPj 96 98 Y Y 0
WJsSWOCR 77 85 Y Y 0
A 79 82 N N 0
Wy 95 85 Y Y 0
OtgBaCKAVmMEFxPVcbE 84 75 N Y 0
DnBaraTLVBkPJJj 85 75 Y N 0
Kzir 84 75 Y Y 0
PxCMvWOdyZcRW 90 76 N N 0
ZcztKxXsrhqSDuxBeN 80 84 N Y 0
EesxZKSACX 80 87 N N 0
CvCT 75 85 N N 0
UwrgH 76 80 Y N 0
VwcGoYzhhVFWGyFzjdn 78 90 N N 0
KQ 75 100 N Y 0
MHJszTi 95 79 Y Y 0
BPJXuWxsGGNYz 87 92 Y Y 5
XWWpW 96 92 Y Y 6
GKIdgeGTHWd 80 77 Y Y 0
MeGS 88 75 N N 0
SblEZfNCkGAkRSrzFADB 90 88 N Y 0
BGLYzCxFVARuGu 87 75 N Y 0
WMQkzgUafGBnqiuBgRpn 77 75 N Y 0
LIWndzmjDozIMTu 80 94 N Y 0
LsPuNFjIzCcppis 80 80 Y N 0
JgycuqAJHELopIoZm 87 85 Y N 0
UJmFKI 75 90 N N 0
RdvGLr 95 85 Y Y 0
WVsTKZHjDEc 90 85 N N 0
VvtFQcwAErUIru 85 87 N Y 0
JKTcYDOhBIJdTBG 94 85 Y N 0
VJqtvLWNUdTEypjOCB 85 94 N Y 0
ET 80 80 N N 2

输出:

IXrLPdJhEekBRgsbkqI
15850
315050

代码:

#include<iostream>

struct student
{
    std::string name;//姓名
    int qm,bj;//期末成绩,班级评议成绩
    char ganbu;//是否为干部
    char xibu;//是否为西部学生
    int lws;//论文数目
    int jiangjin=0;//奖学金
}stu[105];

int main()
{
    long sum=0;
    int max=0,a=0;
    int n=0;
    std::cin>>n;
    for(int i=0;i<n;i++)
        std::cin >> stu[i].name >> stu[i].qm >> stu[i].bj >> stu[i].ganbu >> stu[i].xibu >>stu[i].lws;
    for(int i=0;i<n;i++)
    {
        if(stu[i].qm>80 && stu[i].lws>=1)   stu[i].jiangjin+=8000;
        if(stu[i].qm>85 && stu[i].bj>80)    stu[i].jiangjin+=4000;
        if(stu[i].qm>90)                    stu[i].jiangjin+=2000;
        if(stu[i].qm>85 && stu[i].xibu=='Y')    stu[i].jiangjin+=1000;
        if(stu[i].qm>80 && stu[i].ganbu=='Y')   stu[i].jiangjin+=850;
        sum +=stu[i].jiangjin;//每个同学奖学金相加
        if(stu[i].jiangjin >max)//比较出最多奖学金的同学
        {
            max=stu[i].jiangjin;
            a=i;
        }
    }
    std::cout<<stu[a].name<<std::endl<<stu[a].jiangjin<<std::endl<<sum;
    return 0;
}
运行结果及报错内容

案例二的总和是:315050
但我代码跑出来的是:321850
其余两个都对
真不会改了

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-03-31 23:10
    关注

    修改处见注释,供参考:

    //第12行  第18行  第23行
    //第31行 修改
    
    #include<iostream>
    struct student
    {
        std::string name;//姓名
        int qm,bj;//期末成绩,班级评议成绩
        char ganbu;//是否为干部
        char xibu;//是否为西部学生
        int lws;//论文数目
        int jiangjin;//修改 int jiangjin=0;//奖学金
    }stu[105];
    
    int main()
    {
        int sum=0;
        int max = -1,a = 0;//修改
        int n=0;
        std::cin>>n;
        for(int i=0;i<n;i++) {
            std::cin >> stu[i].name >> stu[i].qm >> stu[i].bj >> stu[i].ganbu >> stu[i].xibu >>stu[i].lws;
            stu[i].jiangjin = 0;  //修改
        }
        for(int i=0;i<n;i++)
        {
            if(stu[i].qm>80 && stu[i].lws>=1)     stu[i].jiangjin+=8000;
            if(stu[i].qm>85 && stu[i].bj>80)      stu[i].jiangjin+=4000;
            if(stu[i].qm>90)                      stu[i].jiangjin+=2000;
            if(stu[i].qm>85 && stu[i].xibu=='Y')  stu[i].jiangjin+=1000;
            if(stu[i].bj>80 && stu[i].ganbu=='Y') stu[i].jiangjin+=850;
            //if(stu[i].qm>80 && stu[i].ganbu=='Y') stu[i].jiangjin+=850;
            sum += stu[i].jiangjin;//每个同学奖学金相加
            if(stu[i].jiangjin > max)//比较出最多奖学金的同学
            {
                max=stu[i].jiangjin;
                a=i;
            }
        }
        std::cout<<stu[a].name<<std::endl<<stu[a].jiangjin<<std::endl<<sum;
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月9日
  • 已采纳回答 4月1日
  • 创建了问题 3月31日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度