我的程序输出有问题,txt文件显示学生错误地得到3个答案,但它仍然给我0%的正确答案百分比。
我遇到的挑战是:
“你的一位教授要求你写一个程序来评估她的最终考试, 它只包含20个多项选择题。每个问题都有四种可能的答案之一:A,B,C或D.文件CorrectAnswers.txt包含正确答案 所有问题,每个答案都写在一个单独的行上。第一行包含 对第一个问题的答案,第二行包含第二个问题的答案,依此类推。 编写一个程序,将CorrectAnswers.txt文件的内容读入char 数组,然后读取包含学生答案的另一个文件的内容 第二个字符数组。
该计划应确定学生的问题数量 错过了,然后显示以下内容:
•学生错过的问题列表,显示正确的答案和 学生为每个错过的问题提供的错误答案
•错过的问题总数
•正确回答问题的百分比。这可以计算为 正确回答的问题÷总问题数
•如果正确回答问题的百分比为70%或更高,则为该程序 应该表明学生通过了考试。否则,它应该表明 学生考试不及格。
这是我到目前为止的代码,提前感谢任何建议!
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
const int size=20;
static int count=0;
string correctAnswers[size];
string studentAnswers[size];
ifstream inFileC;
inFileC.open("c:/Users/levi and kristin/Desktop/CorrectAnswers.txt");
if (inFileC)
{
for (int i=0;i<20;i++)
{
inFileC>>correctAnswers[i];
}
}
else
{
cout<<"Unable to open \"CorrectAnswers.txt\""<<endl;
cout<<"Please check file location and try again."<<endl<<endl;
}
inFileC.close();
ifstream inFileS;
inFileS.open("c:/Users/levi and kristin/Desktop/StudentAnswers.txt");
if (inFileS)
{
for (int t=0;t<20;t++)
{
inFileS>>studentAnswers[t];
}
}
else
{
cout<<"Unable to open \"StudentAnswers.txt\""<<endl;
cout<<"Please check file location and try again."<<endl<<endl;
}
inFileS.close();
for (int k=0;k<20;k++)
{
if (correctAnswers[k]!=studentAnswers[k])
{
cout<<endl<<"Correct Answer: "<<correctAnswers[k];
cout<<endl<<"Student Answer: "<<studentAnswers[k]<<endl;
count++;
}
}
int percent=((20-count)/20)*100;
cout<<endl<<"Number of missed questions: "<<count;
cout<<endl<<"Percent of correctly answered questions: "<<percent<<"%";
if (percent>=70)
{
cout<<endl<<endl<<"********"<<endl<<"**Pass**"<<endl<<"********"<<endl<<endl;
}
else
{
cout<<endl<<endl<<"********"<<endl<<"**Fail**"<<endl<<"********"<<endl<<endl;
}
return 0;
}
答案 0 :(得分:2)
除了满分之外,整数除法将为所有内容产生0。改为使用浮点除法:
int percent = ((double)(20-count) / 20) * 100;
请注意(double)(20-count)
将值(20-count)
转换为双精度浮点数。评估整个表达式后,它会被强制转换为整数,因为您将值赋给int
。
答案 1 :(得分:0)
整数除数总是向零舍入,因此如果count大于0,则(20 - count)/20
将为零。
答案 2 :(得分:0)
不需要浮点,这样就可以了:
int percent = 5 * ( 20 - count );