1

好的,所以我有点被困在这里,真的不知道下一步该做什么。假设用户输入一系列关键答案(AD),然后让多个学生(数量取决于用户输入)输入他们自己的答案,程序应该将他们的答案与之前输入的答案键进行比较并对每个学生进行评分分别。现在我的问题是,如何将每个学生的答案与数组中的答案键进行比较?到目前为止,这是我的代码

#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{

    int NumOfQ;
    int NumOfS;
    char TestAns[50];
    string StudentNames[50]; 
    int StudentScores[50];
    char StudentAns[50];
    int score[50];

    cout << "Please enter the Number Of Questions\n";
    cin >> NumOfQ;

    cout <<"\nPlease enter your answers\n";
    for(int x = 0; x < NumOfQ; x++){
        cin >> TestAns[x];
    }

    cout <<"\nPlease enter number of students\n";
    cin >> NumOfS;

    cout <<"\nPlease enter Student's Names\n";
    for (int s = 0; s < NumOfS; s++){
        cin >> StudentNames[s];
    }

    for (int z = 0; z < NumOfS; z++){
        cout<<"\nStudent: " << StudentNames[z] << " Please enter your test answers\n";

        for (int a = 0; a < NumOfQ; a++){
            cin >> StudentAns[a];
        }
        score[z] = 0;
        for (int i = 0; i <=NumOfQ; i++){
        if(TestAns[i] == StudentAns[i]){
                score[z]++;
            }
        }

    }

    for(int Z = 0; Z < NumOfS; Z++){
        cout <<"\Student : " << StudentNames[Z] << score[Z]  << " out of " << NumOfQ << endl;
    }

    system("PAUSE");
    return 0;
}
4

2 回答 2

3

评分非常简单 - 您为答案和密钥中的每场比赛添加一个,如下所示:

int score = 0;
for (int i = 0 ; i != NumOfQ ; i++) {
    if (TestAns[i] == StudentAns[i]) {
        score++;
    }
}

如果您还记得逻辑运算对“真”返回 0 和对“假”返回 1,那么您可以用更少的代码来做到这一点。

警告:这可能会让你在同行中失去一些可读性,如果你的教授没有对这种简洁印象深刻,甚至会失去一些真实的分数:

int score = 0;
for (int i = 0 ; i != NumOfQ ; i++) {
    score += (TestAns[i] == StudentAns[i]);
}

区分大小写是另一个问题:如果答案键是c,并且用户输入了C怎么办?上面的代码不会给学生来之不易的分数,这是错误的。如果您将两个字符的大小写强制为大写,混合大小写比较将是正确的:

if (toupper(TestAns[i]) == toupper(StudentAns[i])) {
    score++;
}
于 2013-08-21T01:02:58.780 回答
1

将您的最后一个“for”块替换为:

StudentScores[z] = 0;
for (int a = 0; a < NumOfQ; a++){
    cin >> StudentAns[a];
    if (TestAns[a] == StudentAns[a])
        ++StudentScores[z];
}
于 2013-08-21T01:36:36.440 回答