我正在开发一个程序来接受年龄变量的用户输入,然后计算这个人应该进入的等级。我的代码似乎正在运行,并且正在返回正确的值。然而;我也得到两个随机整数以及这些值。我已经好好看了好几遍,但找不到问题。我的代码如下,并按照我的教授设定的可接受程序的标准进行安排,因为这是一项任务:
#include <iostream>
using namespace std;
int gradecalculate (int age)
{
int grade;
if (age >= 6 && age <= 17)
grade= age-5;
return grade;
// Program does nothing if # not in range.
}
bool messagereturn (int age)
{
if (age < 5)
{cout << "You are too young for school." << endl;}
else if (age > 17)
{cout << "You are too old for school." << endl;}
else
{cout << "You should be in grade " << gradecalculate (age) << "." << endl;}
}
bool greet (int age)
{
if (age == 17)
{cout << "Hello Senior!" << endl;}
}
int main ()
{
int age;
cout << "Enter your age: ";
cin >> age;
cout << messagereturn (age) << endl;
cout << greet (age) << endl;
return 0;
}
当我运行此代码(使用代码块)时,输出如下,我没有收到任何错误代码:
输入17 -
Enter your age: 17
You should be in grade 12.
96
Hello Senior!
96
输入11 -
Enter your age: 11
You should be in grade 6.
96
11
答案 0 :(得分:0)
您的两个函数bool messagereturn (int age)
和bool greet (int age)
期望返回bool
,但您没有return
任何内容,这可能是您输出两个随机整数的原因
我不知道您希望从这些函数返回什么,但是这里的代码返回false
而不是任何内容:
bool messagereturn (int age)
{
if (age < 5)
{cout << "You are too young for school." << endl;}
else if (age > 17)
{cout << "You are too old for school." << endl;}
else
{cout << "You should be in grade " << gradecalculate (age) << "." << endl;}
return false;
}
bool greet (int age)
{
if (age == 17)
{cout << "Hello Senior!" << endl;}
return false;
}
此外,在函数int gradecalculate (int age)
中,grade
变量未初始化,具体取决于age
的值。这是您的代码grade
初始化为0。
int gradecalculate (int age)
{
int grade = 0;
if (age >= 6 && age <= 17)
grade= age-5;
return grade;
// Program does nothing if # not in range.
}
答案 1 :(得分:0)
您的函数greet()
和messagereturn()
被声明为返回bool
,但它们什么都不返回,将其声明更改为void greet(int age);
和void messagereturn(int age)
所有打印到cout在这些功能中完成,没有必要这样做:
cout << messagereturn(age) << endl;
cout << greet(age) << endl;
删除cout和endl部分,只需保留函数的调用。
最后
int gradecalculate (int age)
{
int grade = 0; //initialize grade to something, else you're returning garbage when age < 6 or > 17
if (age >= 6 && age <= 17)
grade= age-5;
return grade;
// Program does nothing if # not in range.
}
答案 2 :(得分:0)
您的listBox1.DisplayMember = "Item";
和messagereturn()
函数被声明为返回greet()
值,但其中没有一个实际返回任何内容,因此值是随机的。由于您要将返回值发送至bool
,但函数会直接向std::cout
发送自己的消息,因此它们不应返回任何std::cout
值。
此外,由于bool
仅在5-17岁时被调用,因此无需再次检查gradecalculate()
。在某些条件下编写一个没有age
值的函数是不好的。
试试这个:
return
或者,您可以将这些功能合并在一起并让它返回#include <iostream>
using namespace std;
int gradecalculate (int age)
{
return age-5;
}
void messagereturn (int age)
{
if (age < 5)
{cout << "You are too young for school." << endl;}
else if (age > 17)
{cout << "You are too old for school." << endl;}
else
{cout << "You should be in grade " << gradecalculate (age) << endl;}
}
void greet (int age)
{
if (age == 17)
{cout << "Hello Senior!" << endl;}
}
int main ()
{
int age;
cout << "Enter your age: ";
cin >> age;
messagereturn (age);
greet (age);
return 0;
}
,然后发送给std::string
:
std::cout
答案 3 :(得分:-1)
您无法返回本地变量。你可以在gradecalculate()中做到这一点。
全局声明成绩并将其初始化为0.
此函数还有一个条件,如果你的if语句不成立,你会返回一个未初始化的变量。
messagereturn和greet应该是无效的,而不是bool。
更改
cout << messagereturn (age) << endl;
cout << greet (age) << endl;
要
messagereturn(年龄);
迎接(年龄);
因为在这些功能中,您已经在使用标准输出,并且功能不会返回任何内容。