C++ C++;多字符数组比较
好吧,我有点被困在这里了,我真的不知道下一步该做什么。假设用户输入一系列关键答案(a-D),然后让多个学生(数量取决于用户输入)输入他们自己的答案,程序应将他们的答案与之前输入的答案进行比较,并分别为每个学生打分。现在我的问题是,如何将每个学生的答案与数组中的答案键进行比较?这是到目前为止我的代码C++ C++;多字符数组比较,c++,arrays,loops,C++,Arrays,Loops,好吧,我有点被困在这里了,我真的不知道下一步该做什么。假设用户输入一系列关键答案(a-D),然后让多个学生(数量取决于用户输入)输入他们自己的答案,程序应将他们的答案与之前输入的答案进行比较,并分别为每个学生打分。现在我的问题是,如何将每个学生的答案与数组中的答案键进行比较?这是到目前为止我的代码 #include "stdafx.h" #include <iostream> #include <string> #include <vector> using
#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;
}
#包括“stdafx.h”
#包括
#包括
#包括
使用名称空间std;
int _tmain(int argc,_TCHAR*argv[]
{
国际货币基金组织;
国际货币基金组织;
char-TestAns[50];
字符串StudentNames[50];
国际学生成绩[50];
char StudentAns[50];
整数分[50];
cout>NumOfQ;
cout-TestAns[x];
}
库特·努莫夫;
学生姓名;
}
对于(intz=0;z cout得分非常简单-在答案和键中,每一场比赛都要添加一个,如下所示:
int score = 0;
for (int i = 0 ; i != NumOfQ ; i++) {
if (TestAns[i] == StudentAns[i]) {
score++;
}
}
如果您还记得逻辑操作返回零表示“true”,返回一表示“false”,那么您可以使用更少的代码来完成此操作
警告:这可能会让你在同龄人中损失一些可读性分数,如果你的教授没有对这种简洁印象深刻,甚至会损失一些真实的分数:
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++;
}
得分非常简单-在答案和关键点中为每一场比赛添加一个,如下所示:
int score = 0;
for (int i = 0 ; i != NumOfQ ; i++) {
if (TestAns[i] == StudentAns[i]) {
score++;
}
}
如果您还记得逻辑操作返回零表示“true”,返回一表示“false”,那么您可以使用更少的代码来完成此操作
警告:这可能会让你在同龄人中损失一些可读性分数,如果你的教授没有对这种简洁印象深刻,甚至会损失一些真实的分数:
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++;
}
将上一个“for”块替换为:
StudentScores[z] = 0;
for (int a = 0; a < NumOfQ; a++){
cin >> StudentAns[a];
if (TestAns[a] == StudentAns[a])
++StudentScores[z];
}
StudentScores[z]=0;
对于(int a=0;a>学生[a];
如果(测试者[a]==学生[a])
++学生成绩[z];
}
将上一个“for”块替换为:
StudentScores[z] = 0;
for (int a = 0; a < NumOfQ; a++){
cin >> StudentAns[a];
if (TestAns[a] == StudentAns[a])
++StudentScores[z];
}
StudentScores[z]=0;
对于(int a=0;a>学生[a];
如果(测试者[a]==学生[a])
++学生成绩[z];
}
我如何在这个IF语句中显示哪些答案是正确的,哪些是错误的?非常感谢您的帮助!@ssj3goku878在IF
分支中,添加一个输出语句,类似于cout我有另一个问题如果您能帮助我,我现在的循环将循环通过每个学生并请求他们的答案在没有更多学生之前,分数变量将继续累加所有学生的答案,有没有办法让它只累加每个学生,直到学生用完为止?这些循环太复杂了!@ssj3goku878 Yes-将变量声明、循环和打印分数的语句放在ou中在z
上循环。分数将被重置,然后循环将为每个正确答案添加1
,然后您将打印分数,然后分数将被忘记。或者,您可以定义一个数组scores
,而不是单个变量scores
,并执行分数[z]++
而不是score++
@ssj3goku878您在错误的位置放置了一个大括号,没有将分数[z]
设置为0
,并增加分数[i]
而不是分数[z]
。我如何在这个IF语句中显示哪些答案是正确的,哪些是错误的?非常感谢您的帮助!@ssj3goku878在IF
分支中,添加一个输出语句,该语句类似于cout我有另一个问题如果您能帮助我,我现在的循环将循环通过每个学生并请求他们的帮助答案直到没有更多的学生,分数变量将继续累加所有学生的答案,有没有办法让它只累加每个学生,直到没有学生?这些循环太复杂了!@ssj3goku878 Yes-将变量声明、循环和打印分数的语句放在o中在z
上执行循环。分数将被重置,然后循环将为每个正确答案添加1
,然后打印分数,然后忘记分数。或者,您可以定义数组scores
,而不是单个变量scores
,然后执行分数[z]++
而不是score++
@ssj3goku878您在错误的位置放置了一个大括号,没有将分数[z]
设置为0
,并将分数[i]
增加而不是分数[z]
。