Switch语句不显示除默认语句之外的任何类型的输出
Switch statement not showing any kind of output other than the default statement
我正在写一个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;
正试图从输入流中读取一个整数,因为grade
是int
。如果将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;
}
- 如何在 if 语句中声明对象并在任何我想的地方使用它?
- 是否可以对任何语句字符串使用预准备语句?
- 我可以使用 try catch 语句来捕获任何错误而不是具体错误吗?
- 在任何案例之前,在 switch 语句中的使用声明是否合法?
- 是否可以编写C++不使用任何条件语句交换输入的函数?
- 这个基于范围的'for'语句需要一个合适的函数,但找不到任何函数
- 当将编译器从G 切换到MSVC时,为什么此开关语句不会返回任何内容
- 这段代码如何在没有任何循环语句或'goto'或递归的情况下循环?
- string.at if 语句不返回任何内容
- Switch语句不显示除默认语句之外的任何类型的输出
- 可以在 main 的返回 0 语句之后调用任何函数吗?
- 我的程序编译并运行,但没有执行 switch 语句中的 6 个选项中的任何一个,我无法弄清楚原因
- 计算没有If/While/For语句或任何数据结构的更改
- 使用gdb似乎表明程序语句没有任何效果
- 如果一个指定返回类型为int的函数没有任何返回语句,即不返回值,它会返回垃圾值吗
- 是否有任何编译器或选项来触发对无意义和有错误的switch语句的警告
- 语句调用构造函数,但对构造函数不做任何操作——为什么它不能编译
- 为什么程序开头的cout语句没有输出任何东西?
- 是否应该依赖if语句捕获除0以外的任何其他整数值为真?
- C++指针赋值语句似乎不起作用/做任何事情