这个C++程序哪里有问题?怎么改?

 我来答
Ninja748
2019-08-06 · TA获得超过247个赞
知道小有建树答主
回答量:163
采纳率:88%
帮助的人:85.5万
展开全部
有两处很严重的错误:
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;
}
有什么不明白的可以继续问。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式