Switch语句不显示除默认语句之外的任何类型的输出

Switch statement not showing any kind of output other than the default statement

本文关键字:语句 任何 输出 类型 默认 显示 Switch      更新时间:2023-10-16

我正在写一个switch语句示例,一切都很好,没有给出错误,运行良好,但它没有做我想做的事情。它根本没有显示任何输出,有什么建议吗?

我不知道该尝试什么,因为没有错误,只是不起作用

#include <iostream>
using namespace std;
main ()
{
int student,average,grade,sum;
char A,a,B,b,C,c,D,d,F,f;
student = 1;
average,sum = 0;
cout << "Please enter the grades of student:";
cin >> grade;
switch (grade)
{
case 'A' :
case 'a' :
cout << "excellent";
break;
case 'B' :
case 'b' :
cout << "very good";
break;
case 'C' :
case 'c' :
cout << "good";
break;
case 'D' :
case 'd' :
cout << "Poor";
break;
case 'F' :
case 'f' :
cout << "Fail";
break;
default:
cout << "Please enter the grade from A to D & F";
}
}

我想让它告诉我学生成绩的备注,但它根本没有显示任何内容,而且无论你输入什么,它都会显示默认消息

您需要将grade设为char,而不是int

cin >> grade;正试图从输入流中读取一个整数,因为gradeint。如果将grade设为char,则cin >> grade将只读取一个字符。(在这两种情况下,它都会先跳过空白,所以你不能读取一个空白字符。但这在这里无关紧要。)

可能值得补充的是,当你试图读取一个数字,但没有数字可读取(因为用户键入了字母等级)时,输入流就会进入错误状态。在用std::cin.clear()重置错误之前,任何输入尝试都将失败,而不会读取任何内容。请参阅std::istream::clear,尤其是提供的示例代码。

好的,所以我昨天问了这个问题,感谢你们的帮助。我用getchar来回答,但老实说,我不知道getchar的目的是什么,因为我还没有学会,所以我一直在尝试,最后我解决了它。我发布这个只是因为你们分享了你们的知识并帮助了我,所以我想分享我学到的东西来增加你们的知识代码在这里

#include <iostream>
using namespace std;
main ()
{
char grade;
cout << "Please enter the grades of student:";
cin >> grade;
switch (grade)
{
case 'A' :
case 'a' :
cout << "excellent";
break;
case 'B' :
case 'b' :
cout << "very good";
break;
case 'C' :
case 'c' :
cout << "good";
break;
case 'D' :
case 'd' :
cout << "Poor";
break;
case 'F' :
case 'f' :
cout << "Fail";
break;
default:
cout << "Please enter the grade from A to D & F";
}
}

这应该可以工作。我使用了getchar()而不是cin,因为getchar只会得到一个字符(char=单个字符,字符串为多个字符)。如果使用cin,并且用户键入多个字符,cin将只使用第一个字符。

另一点是你对字符a-f,a-B的声明。这没用。A、 B、C、D、E、F只是名字,你必须与一个值进行比较。在你自己的开关中,如果你没有使用所有这些字符,你可以将它们与一个字符进行比较,而不是与一个变量进行比较。case 'A':检查等级是否==‘’如果等级==‘则不检查。

另一点是:average,sum=0。我现在真的不知道你想做什么,但如果你想把他们的展位设置为0,那就错了。然后您应该在声明中执行类似int student, average=0,sum=0;的操作。您声明了3个整数,给它们一个值,但从未使用过它们,也许以后?我将main()更改为int main()(returntype=integer)关于main的更多信息:什么是main的正确声明?

我在main中添加了return 0;,因为函数应该有return!

我还在输出中添加了换行符,以便更好地从控制台读取。

我评论了我认为它们无用或错误的地方。如果你有任何问题或者我做错了,请告诉我。

#include <iostream>
using namespace std;
int main ()
{
int student, average=0,sum=0; //dont know for what these integers are. All getting set but never been used.
//char A,a='a',B,b,C,c,D,d,F,f; //Completly Useless and not used
char grade;
student = 1;
// average,sum = 0;      What is the expected result of this?!
cout << "Please enter the grades of student:n";
//cin >> grade; replaced with getchar();
grade=getchar(); //get single char from console
switch (grade)
{
case 'A' :
case 'a' :
cout << "excellentn";
break;
case 'B' :
case 'b' :
cout << "very goodn";
break;
case 'C' :
case 'c' :
cout << "goodn";
break;
case 'D' :
case 'd' :
cout << "Poorn";
break;
case 'F' :
case 'f' :
cout << "Failn";;
break;
default:
cout << "Please enter the grade from A to D & Fn";
break;
}
return 0;
}
相关文章: