對於我來說,我負責創建一個具有一組預先給定的正確答案的多項選擇測試。提示用戶輸入20個答案,然後該程序應該將正確的答案與學生輸入的答案進行比較。我很困惑重寫數組的大小,因爲我試圖將所有學生的正確和不正確答案放入兩個新數組中,然後輸出給用戶以查看他/她得到的正確答案。在C++中使用數組進行多項選擇測試的困惑
我的代碼是:
#include<iostream>
#include<string>
using namespace std;
int main()
{
char answers[20] = { 'A','D','B','B','C','B','A','B','C','D','A','C','D','B','D','C','C','A','D','B' };
char studentAnswers[20];
int correctlyAnswered[20];
int falselyAnswered[20];
for (int i = 0; i <= 19; i++)
{
cout << "Please enter your answer for question #" << i+1 << ": ";
char choice;
cin >> choice;
if (choice != 'A' || choice != 'B' || choice != 'C' || choice != 'D')
{
cout << "Error: Answer must be A,B,C or D. Please enter a new answer: ";
cin >> choice;
}
studentAnswers[i] = choice;
cin.sync();
if (answers[i] = studentAnswers[i])
{
studentAnswers[i] = correctlyAnswered[i];
}
else
{
studentAnswers[i] = falselyAnswered[i];
}
}
cout << "You answered " << sizeof(correctlyAnswered[20]) << " questions correctly out of 20" << endl;
system("pause");
return 0;
}
代碼心不是完全完成,但我想出來繼續之前解決這問題。我相信我的問題源於將正確答覆和falselyAsnswered陣列的大小設置爲20,但我不確定該如何解決此問題。請幫忙!
具體而言,您遇到什麼問題或錯誤?其次,我懷疑你想使用'if(answers [i] = studentAnswers [i])'這個語句,因爲'='是賦值,你可能在尋找一個相等檢查'=='。 – dylansturg
對不起,我應該指定更多。我希望能夠將所有正確和不正確的答案保存到2個獨立的數組中,然後將其輸出供用戶查看。我很困惑這些數組的大小是多少,因爲每次程序運行時回答的正確/不正確數量的問題都會改變。 – sundowned
你是否需要在數組中保留答案?考慮使用std :: map將問題編號映射到一個結構,該結構保存用戶給出的正確答案和答案。我認爲這更接近你的意圖。 – selyunin