C++ 如果除此之外还有>;=(2次)编译良好但不起作用

C++ 如果除此之外还有>;=(2次)编译良好但不起作用,c++,if-statement,C++,If Statement,我正在制作一个成绩记录应用程序,我这里有一段代码,它不能像我希望的那样工作。(它编译伟大,没有错误,但不工作)(请记住我是一个乞丐在C++中,谢谢你的时间和知识,以帮助我也学习)。 (testscore是从一系列问题中得出的,如果正确,则值为+1,如果错误,则值为-1 我认为错误在=>中,一个与另一个冲突,但我不知道如何为ex赋值。如果分数=11&&testscore=21&&testscore=31&&testscore=41) { studentmark=“hasteachersbook”;

我正在制作一个成绩记录应用程序,我这里有一段代码,它不能像我希望的那样工作。(它编译伟大,没有错误,但不工作)(请记住我是一个乞丐在C++中,谢谢你的时间和知识,以帮助我也学习)。 (testscore是从一系列问题中得出的,如果正确,则值为+1,如果错误,则值为-1

我认为错误在=>中,一个与另一个冲突,但我不知道如何为ex赋值。如果分数<20 cout=失败,如果its=11&&testscore=21&&testscore=31&&testscore=49) { 学生分数==(“hasteachersbook”); }
cout
=
测试是否相等,
=
赋值


当你写
studentmark==(“失败”)
您正在测试字符串
studentmark
是否等于
“failed”
,然后丢弃答案。

您需要像这样为
studentmark
赋值:

studentmark = "hasteachersbook";
=
检查值是否相等<代码>=指定一个值

这应该行得通。如果不是,问题就在别处

int testscore;
string studentmark;

if ( testscore  == 10 )
{
    studentmark = "failed";
}
else if ( testscore >= 11 && testscore <= 20 )
{
    studentmark = "closebutfailed";
}
else if ( testscore >= 21 && testscore <= 30)
{
    studentmark = "passed";
    }
else if ( testscore >= 31 && testscore <= 40 )
{
    studentmark = "excelent";
}
else if ( testscore >=41 )
{
    studentmark = "hasteachersbook";
}
else
{
    studentmark = "scoreLessThanTen";
}
inttestscore;
字符串学生标记;
如果(测试分数=10)
{
studentmark=“失败”;
}
否则如果(testscore>=11&&testscore=21&&testscore=31&&testscore=41)
{
studentmark=“hasteachersbook”;
}
其他的
{
studentmark=“无分测试”;
}

您的代码无法工作,因为您正在尝试使用==执行作业。这里没有任何代码能真正改变studentmark的值。

看看它,你有一个31-40,然后是49及以上的例子

没有41-48的理由

我不知道C++中是否有可能,但也许可以查看用例< < /P> < P>代码>学生标记= =(“CouthBut-FAILL”);code>不会将值“closebutfailed”赋给

studentmark
——它在“closebutfailed”和
studentmark
之间进行相等比较,这可能会返回
false


请将它们更改为赋值而不是比较,然后再试一次。

首先,您的问题是您应该在赋值中使用一个等号,例如

studentmark   = "failed";
///         ^^^^ Note single =
其次,您最好将这些if语句作为

if (testscore <= 10) { ... }
else if (testscore <= 20) { ... }
else if (testscore <= 30) { ... }
...
if(testscore您的问题似乎是“如果我的值在if-else链中的多个测试中为真怎么办?”

C++按文本顺序计算,即从上到下。因此,对于给定值为true的第一个谓词将是所选的分支

例如:

int a = 2;

if (a > 0) {
  cout << "First branch";
} else if (a > 1) {
  cout << "Second branch";
}
inta=2;
如果(a>0){
法庭(1){

软件开发是1%的灵感和99%的调试。如果你不能调试,你就不能编写软件

一种常用的调试技术—KISS:

注释掉或删除尽可能多的gunge,以使程序实际执行某些操作。当您开始:

int testscore;
string studentmark;
        {
            studentmark == ( "failed" );
        }
cout << "Studentmark is:" << studentmark << endl;
inttestscore;
字符串学生标记;
{
学生分数==(“未通过”);
}


你的else子句在哪里?如果分数低于10怎么办?我不明白你的观点。我可以说你的第一个
如果
测试使用的是
==
。当它看起来像是你想使用
(旁注:如果你曾经想过“语言被破坏了”——不,不是。)不包括小于10或41->48。为保持一致性,我会将这些添加到测试条件中,并仅说明这些条件中不应打印任何内容(否则人们会认为您忘记添加它们)是的,你是对的,忘了添加它们,但即使测试分数符合else if creteria,它也不能作为学生分数。我做了上面提到的编辑,但仍然没有做任何事情。这是可能的,但对于CASE,他需要指定所有案例(
案例11:
案例12:
案例13
).CASE不适用于范围,只适用于值。啊,对了。我不确定这是否可行,我通常会得到建议的反对票。:P是的,如果它不适用于范围,我不会推荐它,因为这会很痛苦。@doomsnight:然后在有人对你投反对票之前将其编辑掉:P+1只是上限检查,如果你已经做了如果在
else
子句中某个东西不是
10
,我会进行测试。我试过了,但仍然无法获得任何学生分数。(和这里写的一模一样,只是把…改成了coutcommand@Sinner:您需要发布您的代码,让我们知道它不起作用的原因。正如其他一些评论中指出的,您的if/else语句无法处理testscore小于10或介于31和40之间的情况。我已经编写了一个完整的工作程序,演示了Simplee使用if/else并将其发布在上,希望它能帮助演示if/else语句的正确使用。@Eli非常感谢您的帮助Eli,我发现问题一定在我的代码中的其他地方,或者#includes中一定有某种故障,也许我们会看到。再次感谢您的时间!我尝试了它,但仍然没有成功studentmarks中没有任何内容:(@Sinner:我不会为你做任何工作。该代码还有其他问题,但这是最明显的问题。你是否尝试过在调试器中单步执行代码?那么我如何更改studentmark的值?我将其更改为studentmark=“passed”;是的,那会有用。就像其他人说的,=是赋值,==是比较。我这样做了,但在这种情况下,我仍然没有得到打印出来的hasteachersbook的cout值。我不知道为什么。如果
testscore
有一个值
,我是否需要在#include或change at int main()中添加其他内容??
int testscore;
string studentmark;
        {
            studentmark == ( "failed" );
        }
cout << "Studentmark is:" << studentmark << endl;