首页 > 其他 > 详细

1058 选择题

时间:2020-02-23 13:49:02      阅读:45      评论:0      收藏:0      [点我收藏+]

我经常参考别人的代码,可以学到好多有用的技巧,哈哈。

比如说这个题,我把 正确选项个数所有选项,当成一个整体(字符串实现)看待,方便比较。

比如,

题目的正确答案由,正确选项个数 2,所有选项 a b,组成的话,即 2 a b。

学生给出的答案由,选项个数 2,所有选项 a c,组成的话,即 2 a c,显然两者不一致,学生答错。。。

#include<iostream>
using namespace std;

int score[111] = {0},grade[1010] = {0},wrongCnt[111] = {0};
string Right[111];
int main() {
    int n,m,total;
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= m; ++i) {
        scanf("%d %d ",&score[i],&total);
        getline(cin,Right[i]);
    }
    for(int i = 1; i <= n; ++i) { //n 个学生
        for(int j = 1; j <= m; ++j) {// 当前学生做m个题目
            while(getchar() != ();//技巧,跳过所有非 ‘(’字符 
            string option;
            char c;
            while(scanf("%c",&c)) {//option存放(...)中的...字符
                if(c == )) break;//技巧,遇到 ‘)’字符 ,结束死循环 
                option += c;
            }
            if(option == Right[j])//答对 
                grade[i] += score[j];
            else
                wrongCnt[j]++;
        }
    }
    for(int i = 1; i <= n; ++i)
        printf("%d\n",grade[i]);
    int MAX = 0;
    for(int i = 1; i <= m; ++i) {
        if(MAX < wrongCnt[i])
            MAX = wrongCnt[i];
    }
    if(MAX == 0) printf("Too simple");
    else {
        printf("%d",MAX);
        for(int i = 1; i <= m; ++i) {
            if(MAX == wrongCnt[i])
                printf(" %d",i);
        }
    }
    return 0;
}

技术分享图片

 

1058 选择题

原文:https://www.cnblogs.com/keep23456/p/12348849.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!