c-为什么第二个while do循环没有在我的函数中运行



我正在研究CS50并学习C。我对使用while do循环来确保用户输入整数感到困惑。我正在尝试创建一个函数,提示您的年龄,然后提示您朋友的年龄。然而,在第一个while do循环返回false之后,它不应该移动到我的get_ages()函数中的第二个while do循环吗?我很想在这方面得到一些帮助。

#include <cs50.h>
#include <stdio.h>
int get_ages();

int main(void)
{
printf("%in", get_ages());
}
//Get your age function
int get_ages(int your_age, int friend_age)
{
do
{
your_age = get_int("What is your age: ");
return your_age;
}
while (your_age < 1);
do
{
friend_age = get_int("What is your friends age: ");
return friend_age;
}
while (friend_age < 1);
}

您的声明int get_ages();和函数int get_ages(int your_age, int friend_age)的定义不匹配。在main()中,调用get_ages()时不带参数。如果您想通过参数(有时称为out参数(将数据传递给调用者,则需要传入所述变量的地址:

int your_age;
int friend_age;
get_ages(&your_age, &friend_age);

然后声明将是void get_ages(int *your_age, int &friend_age),您可以在函数中设置类似于*your_age = get_int(...)等的值。

return终止函数并将可选值传递给调用者。这意味着您在一个函数中只能执行一个return语句。

在c中,您只能返回1个值,因此如果您有多个要返回的内容,则需要返回一个结构或数组。

我建议您将函数更改为只返回一个值,传入一个提示,然后调用该函数两次:

#include <cs50.h>
#include <stdio.h>
int get_age(const char *prompt) {
int age;
do {
age = get_int(prompt);
} while (age < 1);
return age;
}
int main(void) {
printf("%in", get_age("What is your age? "));
printf("%in", get_age("What is your friend's age? "));
}

最新更新