我正在制作一个程序,让用户插入一个等级,该程序将根据该等级显示一条消息。
由于某种原因,if 语句都被执行,我不知道为什么会发生。
这是我的代码:
#include <iostream>
#include <random>
using namespace std;
int main()
{
string ques;
cout << "Hello would you like to insert a letter grade or a number grade?\n";
cin >> ques;
if (ques=="letter")
{
char grade;
cout <<"Enter your grade: ";
cin >> grade;
switch (grade)
{
case 'F' :
cout << "You should start revising!"<<endl;
break;
case 'D':
cout <<"You can do better!"<<endl;
break;
case 'C':
cout<<"Improvement is possible!"<<endl;
break;
case 'B':
cout <<"You`re getting there , keep it up!"<<endl;
break;
case 'A':
cout <<"Congratulations! See?? Your hard work payed off!"<<endl;
break;
}
return 0;
}
else
{
int nrGrade;
cout <<"Enter your grade: ";
cin >> nrGrade;
if (nrGrade >=0 && nrGrade <= 59)
{
cout <<"Your grade is an F. You should start revising!"<<endl;
}
else (nrGrade >= 60 && nrGrade <= 69);
{
cout <<"Your grade is a D. I`m sure you can do better!"<<endl;
}
if (nrGrade >= 70 && nrGrade <=79)
{
cout <<"Your grade is a C. I`m sure you can improve!"<<endl;
}
else (nrGrade >= 80 && nrGrade <=89);
{
cout <<"Your grade is a B. You`re getting there , keep it up!"<<endl;
}
if (nrGrade >= 90 && nrGrade <= 100)
{
cout <<"Your grade is an A. Congratulations for your grade! Keep it up!"<<endl;
}
return 0;
}
}
我正在使用 codeblocks,因为我在 visual studio 中有一些问题。任何人都知道为什么会发生这种情况?
if (nrGrade >=0 && nrGrade <= 59)
{
cout <<"Your grade is an F. You should start revising!"<<endl;
}
else (nrGrade >= 60 && nrGrade <= 69);
{
cout <<"Your grade is a D. I`m sure you can do better!"<<endl;
}
这里的部分(nrGrade >= 60 && nrGrade <= 69);
被认为是 else 语句的指令,因为尾随的;
,并且因为else
不接受条件作为参数。记住if-statement的语法是:
if( condition )
statement-true
else
statement-false
当你试图写:
if( condition1 )
statement-true
else( condition2 );
statement-false
然后执行以下带有cout
的块,因为它与您的 if / else 无关。
事实上,你的代码相当于:
if (nrGrade >=0 && nrGrade <= 59)
{
cout <<"Your grade is an F. You should start revising!"<<endl;
}
else
{
nrGrade >= 60 && nrGrade <= 69;
}
cout <<"Your grade is a D. I`m sure you can do better!"<<endl;
我认为你想要的逻辑更多:
if (nrGrade >=0 && nrGrade <= 59)
{
cout <<"Your grade is an F. You should start revising!"<<endl;
}
else
{
if (nrGrade >= 60 && nrGrade <= 69)
{
cout <<"Your grade is a D. I`m sure you can do better!"<<endl;
}
}
可以这样写:
if (nrGrade >=0 && nrGrade <= 59)
{
cout <<"Your grade is an F. You should start revising!"<<endl;
}
else if (nrGrade >= 60 && nrGrade <= 69)
{
cout <<"Your grade is a D. I`m sure you can do better!"<<endl;
}
这里第二个if
用作else
的语句,形成伪关键字else if
,语法如下:
if( condition1 )
statement1
else if( condition2 )
statement2
else
default-statement
顺便说一句,当 if 和 else 块以相同的指令结束时,你可能想要提取它。
int main()
{
// ...
if (ques=="letter")
{
// ...
return 0;
}
else
{
// ...
return 0;
}
}
应该是:
int main()
{
// ...
if (ques=="letter")
{
// ...
}
else
{
// ...
}
return 0;
}
错误的 if-else 实现。
应该是
if(condition1) {
//do something
}
else if (condition2) {
//do something else
}
else
{
//do other stuff
}
例如:
if (nrGrade >=0 && nrGrade < 60)
{...
}
else if (nrGrade >= 60 && nrGrade < 70)
{...
}
else if (nrGrade >= 70 && nrGrade < 80)
{...
}
else if (nrGrade >= 80 && nrGrade < 90)
{...
}
else if (nrGrade >= 90 && nrGrade <= 100)
{...
}
else
{
cout << "ERROR"
}
否则不需要输入,所以你正在写的比较,后面跟着一个 ';',被认为是一个指令。
最好的
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(79条)