这个C++程序哪里有问题?怎么改?
1个回答
展开全部
有两处很严重的错误:
1.程序结构有问题。根据你的代码大概得知,你是想重复判断输入的分数是否合法,直到检测合法后才判断分数情况。但这个程序没有这么做,若按照你的代码流程走,大致过程如下:
输入分数 -> 判断分数是否大于100(是的话执行if中的代码,这里就不细讲了) -> 输入分数 -> 判断分数是否小于100 -> 输入分数 -> 判断分数情况(就是剩下的那 if_else if 语句)
这种流程分明不正常。如果你正想要的是这种流程,可以忽略这个错误。
如果不是,就需要改一改。我认为程序结构可以这样:定义一个死循环的while,在里面输入并判断输入是否合法。如果合法,就break出来,不合法,就往下继续执行。
2.最后的if判断有问题。第24行代码的if语句写的有问题,逻辑等号写成了赋值符号(也就是“==”写成了“=”)。这样的话if的条件就会以score的值判断true或false(看score在那行赋值时多少,非0即true,是0即false)。而该行if条件是将score赋值为100,这将会导致条件永远会是true。
改正方法就是将“=”改成“==”。
1.程序结构有问题。根据你的代码大概得知,你是想重复判断输入的分数是否合法,直到检测合法后才判断分数情况。但这个程序没有这么做,若按照你的代码流程走,大致过程如下:
输入分数 -> 判断分数是否大于100(是的话执行if中的代码,这里就不细讲了) -> 输入分数 -> 判断分数是否小于100 -> 输入分数 -> 判断分数情况(就是剩下的那 if_else if 语句)
这种流程分明不正常。如果你正想要的是这种流程,可以忽略这个错误。
如果不是,就需要改一改。我认为程序结构可以这样:定义一个死循环的while,在里面输入并判断输入是否合法。如果合法,就break出来,不合法,就往下继续执行。
2.最后的if判断有问题。第24行代码的if语句写的有问题,逻辑等号写成了赋值符号(也就是“==”写成了“=”)。这样的话if的条件就会以score的值判断true或false(看score在那行赋值时多少,非0即true,是0即false)。而该行if条件是将score赋值为100,这将会导致条件永远会是true。
改正方法就是将“=”改成“==”。
更多追问追答
追问
能把具体代码编写成.txt文件吗?我是初学者,可能有些看不懂。
追答
这里是改进过后的代码(顺便一说,原代码最后的if判断也有问题,会造成分数大于100时会输出及格,分数小于0时会输出不及格)。
#include
using namespace std;
int main()
{
float score;
cout > score;
if (score == 100)
{
cout = 60))
{
cout = 0))
{
cout << "不及格" << endl;
break;
}
cout << "请输入正确的分数!" << endl;
cout << "请重新输入:" << endl;
}
return 0;
}
有什么不明白的可以继续问。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询