我正在写一个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";
}
}
我希望它告诉我学生的成绩,但它什么也没显示,无论您输入什么,它总是显示默认信息
答案 0 :(得分:3)
您需要将grade
设为char
,而不是int
。
cin >> grade;
试图从输入流中读取一个整数,因为grade
是int
。如果将grade
设为char
,则cin >> grade
只会读取一个字符。 (在两种情况下,它都首先跳过空格,因此您无法读取单个空格字符。但这在这里无关紧要。)
可能值得补充的是,当您尝试读取数字并且没有数字要读取(因为用户键入字母等级)时,输入流将进入错误状态。在使用std::cin.clear()
重设错误之前,任何输入尝试都将失败,并且不会读取任何内容。请参阅std::istream::clear,尤其是提供的示例代码。
答案 1 :(得分:0)
好的,所以我昨天问了这个问题,谢谢大家的帮助,我使用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";
}
}
答案 2 :(得分:-1)
这应该有效。
我用getchar()
代替了cin
,因为getchar只会得到一个字符(char =单个字符,字符串多个字符)。如果您使用cin并且用户输入的字符超过一个,那么cin将仅使用第一个字符。
另一点是您对char a-f,A-B的声明。这没用。 A,B,C,D,E,F只是名称,您必须将其与值进行比较。在您自己的开关中,您没有使用所有这些字符,而是将它们与不带变量的字符进行比较。 case 'A':
检查是否成绩=='A'如果成绩== a则不。
另一点是:average,sum=0
。我现在真的不想要做什么,但是如果您尝试将它们的展位设置为0,那是错误的方法。然后,您应该在声明中加入int student, average=0,sum=0;
之类的内容。
您声明了3个整数,给它们提供一个值,但从未使用过它们,也许以后吗?
我将main()
更改为int main()
(returntype = integer)
有关主体的更多信息:Git URLs
我在主目录中添加了return 0;
,导致一个函数应该返回!
我还为您的输出添加了换行符,以使其更好地从控制台读取。
我评论说出了我认为它们无用或错误的地方。如果您有任何疑问或我做错了,请告诉我。
#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 << "excellent\n";
break;
case 'B' :
case 'b' :
cout << "very good\n";
break;
case 'C' :
case 'c' :
cout << "good\n";
break;
case 'D' :
case 'd' :
cout << "Poor\n";
break;
case 'F' :
case 'f' :
cout << "Fail\n";;
break;
default:
cout << "Please enter the grade from A to D & F\n";
break;
}
return 0;
}