A3423344343 2022-08-23 00:08 采纳率: 81.8%
浏览 26
已结题

T266587 谁拿了最多的奖学金 )

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

wa

问题相关代码,请勿粘贴截图

#include <bits/stdc++.h>
using namespace std;

int main()
{
int rs = 0;//人数
string name,lzm;
double qm = 0,py = 0,lw = 0,lz = -1,zs = 0,dqjxj = 0;//成绩及论文数
char gb,xb;//判断干部及西部
cin >> rs;
for(int i = 1;i <= rs;i++)
{
cin >> name >> qm >> py >> gb >> xb >> lw;
if(qm > 80 && lw >= 1) dqjxj += 8000;
if(qm > 85 && py >= 80) dqjxj += 4000;
if(qm > 90) dqjxj += 2000;
if(qm > 85 && xb == 'Y') dqjxj += 1000;
if(py > 80 && gb == 'Y') dqjxj += 850;
if(dqjxj > lz)
{
lz = dqjxj;
lzm = name;
}
zs += dqjxj;
dqjxj = 0;
}
cout << lzm << endl;
cout << lz << endl;
cout << zs << endl;
return 0;
}

运行结果及报错内容

我想要达到的结果

第一行是一个整数 NN(1 \le N \le 1001≤N≤100),表示学生的总数。

接下来的 NN 行每行是一位学生的数据,从左向右依次是 学号,学期结束平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。学号\in[0..10^4]∈[0..10
4
] ;学期结束的平均成绩和班级评议成绩 \in [0..100]∈[0..100];是否是学生干部和是否是西部省份学生分别用一个数字表示,11 表示是,00 表示不是;发表的论文数 \in [0, 10]∈[0,10]。每两个相邻数据项之间用一个空格分隔。
输出包括三行。

第一行是获得最多奖金的学生的学号。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的学号。

第二行是这名学生获得的奖金总数。

第三行是这 NN 个学生获得的奖学金的总数。

  • 写回答

2条回答 默认 最新

  • harmis_yz 2022-08-23 13:00
    关注
    
    #include<bits/stdc++.h>
    
    using namespace std;
    
    int n,aa,bb,tot,x,sum,maxx;
    
    char a,b;
    
    string ming,mma;//mma表示拿了最多奖学金的人的名字 
    
    int main()
    {
        cin>>n;//几个人 
        
        for(int i=1;i<=n;i++)
        {
            cin>>ming>>aa>>bb>>a>>b>>x;//姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,发表的论文数
            
            if(aa>80&&x>0)//满足条件1 
            { 
                sum+=8000;
            } 
            
            if(aa>85&&bb>80)//满足条件2 
            { 
                sum+=4000;
            } 
            
            if(aa>90)//满足条件3
            { 
                sum+=2000;
            } 
            
            if(aa>85&&b=='Y')//满足条件4
            { 
                sum+=1000;
            }
             
            if(bb>80&&a=='Y')//满足条件5
            { 
                sum+=850;
            } 
            
            tot+=sum;//总奖学金累加 
            
            if(sum>maxx)//如果比最大奖学金还多 
            { 
                mma=ming,maxx=sum;//记录他的名字,奖学金 
            } 
                
            sum=0;//清空 
        }
        
        cout<<mma<<endl<<maxx<<endl<<tot;//输出 
        
        return 0;
    }
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月1日
  • 已采纳回答 8月24日
  • 创建了问题 8月23日

悬赏问题

  • ¥15 求给定范围的全体素数p的(p-2)的连乘积
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页