【发布时间】:2013-04-20 14:20:46
【问题描述】:
所以我尝试用 C++ 做一个评分系统。例如,A+ 给出 4.0,A 给出 4.0,A- 给出 3.7。对于每个 + - 有 0.3 的差异。这是我的代码:
char grade_letter[3];
float value;
bool input = true;
do{
cout << "Enter letter grade : ";
cin>>grade_letter;
switch(grade_letter[0])
{
case 'A' : value = 4;
break;
case 'B' : value = 3;
break;
case 'C' : value = 2;
break;
case 'D' : value = 1;
break;
case 'E' : value = 0;
break;
}
if(grade_letter[1]=='+'){
value += 0.3;
}
else if (grade_letter[1]=='-'){
value -= 0.3;
}
if (input == true){
if(value > 4.0){
cout << "The numeric value is " << floor(value + 0.5) << endl;
}else if (value < 0.0){
cout << "Grade out of range. " << endl;
}else{
cout<< "The numeric value is " << value << endl;
}
}else {
cout << "Invalid input." << endl;
}
}while(input == false);
当我尝试使用 A+ A 和 A- 时它可以工作。但是,我尝试使用 A=、A/、A*,结果仍然显示每个等级的默认值。验证有问题。
如果我将布尔输入默认值设置为 false,它只适用于 A+ A- 等等,只要输入中有 + 和 - 即可。我正在考虑使用字符串和子字符串来读取输入,但如果是这样,我必须重新编码所有内容。
那么,有人可以帮我验证一下吗?我尝试使用 charAt 检查 chargrade_letter 的长度,但出现错误。
提前致谢。
【问题讨论】:
-
@DanielDaranas 我猜这是上一步。
-
@sftrabbit 可能,但在这两种情况下,标题都没有说明真正的问题,这会导致混淆。
-
呀呀那个未经验证的。我今天上课,我的老师要求验证。我已经尝试过了,但它无法正常工作
标签: c++ if-statement while-loop