竞赛评分

题目描述:
现举行一次小竞赛,参赛的3支队伍,编号为1,2,3.每支队列轮流回答问题,如果回答正确,加10分;回答错误,扣10分;放弃回答不得 分.经过多轮答题后,我们要统计各队的名次和得分.
输入:
第一行为回答问题的轮次数n.
其余各行分别为1,2,3号队伍答题的结果,回答正确为right,错误为wrong,放弃为give-up.
输出:
按名次输出各队的编号和得分.名次相同的在同一行输出,且编号小者靠前.
样例输入:
4
right wrong give-up
right right right
wrong right right
right right right
样例输出:
(3,30)
(1,20)(2,20)
C++实现: #include<iostream> #include<string> using namespace std; int main() { int n,i; int xuanshou[4]={}; //保存三位选手的得分 string a; cin>>n; for(i=0;i<n;i++) { for(int j=1;j<4;j++) //判断每位选手的得分情况 { cin>>a; switch(a[0]) { case 'r': xuanshou[j]+=10; break; case 'w': xuanshou[j]-=10; break; case 'g': break; } } } int max1=1; //找出得分第一多的选手 for(i=1;i<4;i++) if(xuanshou[i]>xuanshou[max1]) max1=i; cout<<'('<<max1<<','<<xuanshou[max1]<<')'; int max2; //找出得分第二多的选手 for(i=1;i<4;i++) if(i!=max1) { max2=i; break; } for(i=1;i<4;i++) { if(i==max1) continue; if(xuanshou[i]>xuanshou[max2]) max2=i; } if(xuanshou[max2]!=xuanshou[max1]) cout<<endl; cout<<'('<<max2<<','<<xuanshou[max2]<<')'; int max3=1; ///剩余的选手即为最后一名选手 for(i=1;i<4;i++) if(i!=max1&&i!=max2) { max3=i; break; } if(xuanshou[max3]!=xuanshou[max2]) cout<<endl; cout<<'('<<max3<<','<<xuanshou[max3]<<')'<<endl; return 0; }

你可能感兴趣的:(c,String,ini)