OpenJudge百炼习题解答(C++)--题2704:竞赛评分
2016-02-23 19:30
281 查看
题:
总时间限制: 1000ms 内存限制: 65536kB描述现举行一次小竞赛,参赛的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)
解:
#include<iostream> #include<string> using namespace std; int main() { struct S{ int All; int Nu; }; struct S st[3]; for(int i=0;i<3;i++) { st[i].All=0; st[i].Nu=i+1; } int n; cin>>n; string A[n][3]; for(int i=0;i<n;i++) { for(int j=0;j<3;j++) { cin>>A[i][j]; } } for(int i=0;i<3;i++) { for(int j=0;j<n;j++) { if(A[j][i]=="right") { st[i].All+=10; } else if(A[j][i]=="wrong") { st[i].All-=10; } } } struct S t; for(int i=0;i<3;i++) { for(int j=0;j<2;j++) { if(st[j].All<st[j+1].All) { t=st[j]; st[j]=st[j+1]; st[j+1]=t; } } } for(int i=0;i<3;i++) { if(i>0){ if(st[i].All!=st[i-1].All) { cout<<endl; } } cout<<"("<<st[i].Nu<<","<<st[i].All<<")"; } return 0; }
相关文章推荐
- C++学习笔记:MyString类的重载 练习
- 结构体指针和结构体嵌套
- 学习C语言基本思路与参考书籍
- C++构造函数调用规则
- 设计模式之命令模式
- c++中new与delete
- 在MDK中使用C++源格式做printf串口输出时跳死 调试时发现卡在启动代码中
- C++对象模型浅析
- C++基础::便捷函数
- 深入分析C++中声明与定义的区别
- C++基础::shared_ptr 编程细节(二)
- C++及C中的 string char指针及char数组
- C语言的原码,反码和补码
- C语言中的位运算
- C语言字符串与字符数组
- C语言 变量的作用域和生命周期
- 【转】嵌入式软件:C语言编码规范
- C++ string类的实现
- C++,软件结构中.Cpp和.h的关系
- C语言的枚举类型