我正在制作一个符合成绩的课程。我想知道如何根据用户的输入停止某个程序的某个部分。以下是我正在进行的计划。如果用户输入“完成”,如何停止程序?此外,我不一定要使用“完成”退出程序。我最初会使用-1,但我遇到了一个问题,我必须制作一个强大的程序,其中值< 0和>不接受100。
int grade;
a=b=c=d=f=0;
do
{
cout << "Enter a grade or enter done to stop. ";
if (grade >= 90 && grade <= 100)
{a++;}
if (grade >= 80 && grade < 90)
{b++;}
if (grade >= 70 && grade < 80)
{c++;}
if (grade >= 60 && grade < 70)
{d++;}
if (grade >= 0 && grade < 60)
{f++;}
} while (grade != 'done');
答案 0 :(得分:1)
只是回报0?此外,你不能做grade ='done',除非你覆盖=运算符或其他东西。
答案 1 :(得分:0)
要求用户输入整数值的最简单方法,即超出您预期的值他输入的值(例如-1)。 &#34;完成后 - 输入-1&#34;。
此外,如果(grade = 'done')
- assignement 在此处,则要比较使用运算符== ,这是
// if(grade ==&#39; done&#39;)
或者您可以使用以下方法:
do
{
cout << "Enter a grade or enter done to stop. ";
// first try to get string from user (which he/she enters when done)
string str;
cin >> str;
if (str == "done") // if done was entered - exit from the loop
break;
// else clear fail bit in stream object and read int value
cin.clear();
cin >> grade;
if (grade >= 90 && grade <= 100)
{//a++;}
if (grade >= 80 && grade < 90)
{//b++;}
if (grade >= 70 && grade < 80)
{//c++;}
if (grade >= 60 && grade < 70)
{//d++;}
if (grade >= 0 && grade < 60)
{//f++;}
} while (grade != 'done');
答案 2 :(得分:0)
首先,“grade”是int类型,所以你不能将int转换为* char,如果你想要“grade”是int而不是你可以退出-1。或者如果你想以“完成”退出,则等级可以是char [5],你可以使用atoi()将字符串转换为整数来检查,而strcmp()则用“完成”来主持“等级”。 / p>
答案 3 :(得分:0)
您已编写代码以输入字符串。然后,您可以测试字符串是否等于“完成”。如果不是,那么您将字符串转换为整数,然后您可以检查您的等级边界。
答案 4 :(得分:0)
如果你真的想使用数字和字符串我建议使用stringstreams。这是一个例子:
string Text = "456";//string containing the number
int Result;//number which will contain the result
stringstream convert(Text); // stringstream used for the conversion initialized with the contents of Text
if ( !(convert >> Result) )//give the value to Result using the characters in the string
Result = 0;//if that fails set Result to 0
//Result now equal to 456
答案 5 :(得分:0)
首先,单引号表示字符文字,双引号表示空终止字符串(2.14左右)。
if(grade = 'done')
永远都是真的,编译器应该向你发出一个警告,告诉你你没有做你认为你在做的事情,你要分配它然后检查它是否为真,它总是是
你正在尝试为字符串分配一个整数。
这看起来像家庭作业,所以我不会写它,但你需要从stdin中取出一个字符串,然后解析它,例如它是一个整数或字符串,对该数据的行为。要终止,您可以调用exit
,从循环中断或从函数返回。
答案 6 :(得分:0)
您可以将输入作为字符串,如果第一个字符不是数字,则断开循环,否则将字符串转换为整数:
#include<iostream>
#include<string>
#include<cctype>
#include<cstdlib>
using namespace std;
int main() {
int grade;
string input;
int a, b, c, d, f;
a=b=c=d=f=0;
do
{
cout << "Enter a grade or enter done to stop: ";
cin >> input;
cout << endl;
if(!isdigit(input[0])) {
break;
} else {
grade = atoi(input.c_str());
}
if (grade >= 90 && grade <= 100)
{a++;}
if (grade >= 80 && grade < 90)
{b++;}
if (grade >= 70 && grade < 80)
{c++;}
if (grade >= 60 && grade < 70)
{d++;}
if (grade >= 0 && grade < 60)
{f++;}
} while (1==1);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
cout << "d = " << d << endl;
cout << "f = " << f << endl;
getchar();
return 0;
}