我有一个程序,其中有一个名为struct
的10 students
个变量数组。在students
内,我有一个名为char
的{{1}}数组变量,包含20个元素。我要做的是将这十个学生的testAnswers
与名为testAnswers
的{{1}}数组变量与20个元素进行比较。基本上,变量char
是学生answers
的答题纸。答案都是真/假。这就是我到目前为止所做的:
注意:answers
为10,testAnswers
为20。
numStu
我继续收到的错误:
numAns
对于我使用void checkAnswers(char answers[], student students[]){
for (int i = 0 ; i < numStu ; i++){
for (int d = 0 ; d < numAns ; d++){
if (students[i].testAnswers[d] == ' '){
students[i].score += 1 ; //if the student did not answer the question add 1 which will be substracted once if loop sees it is not correct resulting in the student losing 0 points.
}
if (strcmp(answers[d],students[i].testAnswers[d]) == 0){
students[i].score +=2 ;//if the student answer is correct add 2 points to score
}
if (strcmp(answers[d],students[i].testAnswers[d]) != 0){
students[i].score -= 1 ; //if the student answer is incorrect substrct 1 point
}
}//end inner for
}//end for outer
}//end checkAnswers
的两个实例。我想知道是否有任何方法可以纠正这个错误,或者更好的方法来比较这两个字符并对测试进行评分。
答案 0 :(得分:3)
strcmp
与字符串(字符序列)进行比较,而不是单字符。
您可以对单个字符使用等式检查:
if (answers[d] == students[i].testAnswers[d])
请注意,如果我们讨论布尔值,使用an explicit boolean type可能比char
更好。