竞赛
考级
思路: 这题完全可以不用结构体,我们可以用max_reward来记录当前最多的奖学金,用max_name来记录当前奖学金最多的学生的姓名,用sum来记录当前所有学生奖学金的总和。每次输入一组学生信息,用一堆if else来计算当前学生的奖学金,用一个变量reward来储存,如果reward比max_reward大(就是当前学生的奖学金比前面最多的奖学金还高),则更新max_reward和max_name。另外每次循环时sum要加上当前学生的奖学金数量。最后循环结束后输出max_name、max_reward和sum。 代码:
亚瑟丁
#include <iostream> using namespace std; int main() { string name2[1000]={}; int n,qimofenshu,class_,luowen,rich[1000]={},money=0,yuan=0; string name; char ganbu,xibu; cin>>n; for(int i=0;i<n;i++) { money=0; cin>>name; name2[i]=name; cin>>qimofenshu>>class_>>ganbu>>xibu>>luowen; if(qimofenshu>80&&luowen>0) { money+=7000; } if(qimofenshu>85&&class_>80) { money+=4000; } if(qimofenshu>90) { money+=2000; } if(qimofenshu>85&&xibu='Y') { money+1000; } if(class_>80&&ganbu=='Y') { money+=850; } rich[i]=money; yuan=money; } int maxx=0,idx=0; for(int i=0;i<n;i++) { if(maxx<rich[i]) { maxx=rich[i]; idx=i; } } cout<<name2[idx]<<endl<<maxx<<endl<<yuan<<endl; return 0; }
孟琪峰
法兰西玫瑰
直接看题狂打if即可
树上结了西瓜
这一题主要考的就是if函数,当然我们也可以使用三目运算符 这段代码是进行过优化的,具体表现在只用了一个循环 给大家介绍一下,第一行注解里的freopen函数是文件操作,作用是从一个文件里导入输入或将输出导进指定文件,当然ACgo不需要用,但某些比赛需要用它 好了上代码:
变鸽的一只呱
#include<bits/stdc++.h> using namespace std; const int N = 110; struct student { string name; //姓名 int number; //序号 int a; //平均成绩 int b; //评议成绩 char c; //学生干部 Y N char d; //西部省份 Y N int e; //论文数量 int money=0; //奖金数额 }a[N]; bool cmp(student a, student b) { if(a.money != b.money) return a.money > b.money; else return a.number < b.number; //先输入的名字 的放前面 } int main() { int n; cin>>n; for(int i=1; i<=n; i++) { cin>>a[i].name>>a[i].a>>a[i].b>>a[i].c>>a[i].d>>a[i].e; a[i].number = i; } for(int i=1; i<=n; i++) { if(a[i].a>80 and a[i].e>=1) a[i].money += 8000; if(a[i].a>85 and a[i].b>80) a[i].money += 4000; if(a[i].a>90 ) a[i].money += 2000; if(a[i].a>85 and a[i].d=='Y') a[i].money += 1000; if(a[i].b>80 and a[i].c=='Y') a[i].money += 850; } }
158****8066
复仇者
New Bing闪击ACGO
空降坐标:CP002788 来源:NOIP2005 提高组 请看代码
LiWei
烙铁
#include <bits/stdc++.h> using namespace std; struct Node{ string name; int qmpj,bjpy; char xsgb,xbsf; int lws; int id; int jj=0; }a[101]; int n; bool cmp(Node a,Node b) { if(a.jj!=b.jj) return a.jj>b.jj; return a.id<b.id; } int main(){ cin>>n; int ans=0; for(int i=0;i<n;i++) { cin>>a[i].name>>a[i].qmpj>>a[i].bjpy>>a[i].xsgb>>a[i].xbsf>>a[i].lws; a[i].id=i; if(a[i].qmpj>80&&a[i].lws>=1) a[i].jj+=8000; if(a[i].qmpj>85&&a[i].bjpy>80) a[i].jj+=4000; if(a[i].qmpj>90) a[i].jj+=2000; if(a[i].qmpj>85&&a[i].xbsf=='Y') a[i].jj+=1000; if(a[i].bjpy>80&&a[i].xsgb=='Y') a[i].jj+=850; ans+=a[i].jj; } sort(a,a+n,cmp); cout<<a[0].name<<endl; cout<<a[0].jj<<endl; cout<<ans<<endl; return 0; }
Voldemort
嫌疑を避ける ~~
想法: 1.这道题乍一眼看上去可能要用结构体排序 实际上结构体的使用并不必要 进需要在输入时将数据保存入结构体即可; 2.可以在输入后紧跟着判断 这个人的信息能获得什么奖项 并存入相应的数组 如b数组(存放获奖数量),ans存放总钱数 ,sore数组(存放各个人的钱数); 3.在判断完后 运用for循环 找出b数组中获奖数最多的人的对应下标 和获奖数量; 4.最后将获奖人 获奖金额 和总获奖金额输出即可;
让我阐述你的孟
JMZ詹总
#include <iostream> using namespace std; string max_nam; int max_red,sum; int main(){ int n,a,b,e;//数量,期末平均成绩,班级评议成绩,以及发表的论文数。 string nam;//姓名 char c,d;//是否是学生干部,是否是西部省份学生 int red = 0;//奖学金 cin >> n; for(int i = 1;i <= n;i++){ red = 0; cin >> nam >> a >> b >> c >> d >> e; if(a > 80 && e >= 1){ red += 8000; } if(a > 85 && b > 80){ red += 4000; } if(a > 90){ red += 2000; } if(a > 85 && d == 'Y'){ red += 1000; } if(b > 80 && c == 'Y'){ red += 850; } if(red > max_red){ max_nam = nam; max_red = red; } sum += red; } cout << max_nam << endl; cout << max_red << endl; cout << sum; return 0; }
你
ssssssssssssssss
Zด้้้้้็้้้้้้้็
#include<bits/stdc++.h> using namespace std; int main() { int n,qimo,pingyi,all=0,max=0,allstudents=0,x; char a,b; string name,maxn; cin>>n; for(int i=0;i<n;i++) { cin>>name>>qimo>>pingyi>>a>>b>>x; if(qimo>80 && x>0) all+=8000; if(qimo>85 && pingyi>80) all+=4000; if(qimo>90) all+=2000; if(qimo>85 && b=='Y') all+=1000; if(pingyi>80 && a=='Y') all+=850; allstudents+=all; if(all>max) maxn=name,max=all; all=0; } cout<<maxn<<endl<<max<<endl<<allstudents; return 0; }
王子豪
#include <iostream> #include <string> using namespace std; string nameres,name; int qmpj,pycj,lw,mx = 0,res = 0; char gb,xb; int n; int main(){ cin >> n; for(int i = 1;i <= n;i++){ cin >> name >> qmpj >> pycj >> gb >> xb >> lw; int money = 0; if(qmpj > 80 && lw >= 1) money+=8000; if(qmpj > 85 && pycj > 80) money+=4000; if(qmpj > 90) money+=2000; if(qmpj > 85 && xb == 'Y') money+=1000; if(pycj > 80 && gb == 'Y') money += 850; if(money > mx){ mx = money; nameres = name; } res += money; } cout << nameres << endl << mx << endl << res; return 0; }
ACOI
共23条