如何在没有 Goto 语句的情况下 return 到我的程序的开头
How do I return to the Beginning of my Program without a Goto Statement
#include <stdio.h>
#include <math.h>
long factcalc(int num1);
int main(void)
{
int num1;
long factorial;
int d;
int out;
printf("Please enter a number that is greater than 0");
scanf_s("%d", &num1);
if (num1 < 0) {
printf("Error, number has to be greater than 0");
} else if (num1 == 0) {
printf("\nThe answer is 1");
} else {
factorial = factcalc(num1);
printf("\nThe factorial of your number is\t %ld", factorial);
}
return 0;
}
long factcalc(int num1)
{
int factorial = 1;
int c;
for (c = 1; c <= num1; c++)
factorial = factorial * c;
return factorial;
}
我想知道,如何让程序不断询问用户输入,直到用户输入“-1”?因此,即使在计算出一个数字的阶乘之后,它也会继续要求更多数字,直到用户输入 -1 为止,当它显示错误消息等时也是如此。提前致谢。
引入无限循环就可以轻松实现
#include <stdio.h>
#include <math.h>
#ifndef _MSC_VER
#define scanf_s scanf
#endif
long factcalc(int num1);
int main(void)
{
int num1;
long factorial;
int d;
int out;
for (;;) {
printf("Please enter a number that is greater than 0");
scanf_s("%d", &num1);
if (num1 == -1) {
break;
}
else if (num1 < 0) {
printf("Error, number has to be greater than 0");
}
else if (num1 == 0) {
printf("\nThe answer is 1");
}
else {
factorial = factcalc(num1);
printf("\nThe factorial of your number is\t %ld", factorial);
}
}
return 0;
}
long factcalc(int num1) {
int factorial = 1;
int c;
for (c = 1; c <= num1; c++)
factorial = factorial * c;
return factorial;
}
有 select 几个使用 goto
的场景 "okay," 但这肯定不是一个。
首先,将程序的相关部分放入函数中。
然后,像这样监视和使用用户输入:
int number = -1;
while (scanf("%d", &number)) {
if (-1 == number) {
break;
}
call_foo_function(number);
}
是的,正如@ameyCU 所建议的,使用循环是解决方案。例如,
while (1)
{
printf("Please enter a number that is greater than 0");
scanf_s("%d", &num1);
if (-1 == num1)
{
break;
}
// Find factorial of input number
...
...
// Loop back to get next input from user
}
#include <stdio.h>
#include <math.h>
long factcalc(int num1);
int main(void)
{
int num1;
long factorial;
int d;
int out;
printf("Please enter a number that is greater than 0");
scanf_s("%d", &num1);
if (num1 < 0) {
printf("Error, number has to be greater than 0");
} else if (num1 == 0) {
printf("\nThe answer is 1");
} else {
factorial = factcalc(num1);
printf("\nThe factorial of your number is\t %ld", factorial);
}
return 0;
}
long factcalc(int num1)
{
int factorial = 1;
int c;
for (c = 1; c <= num1; c++)
factorial = factorial * c;
return factorial;
}
我想知道,如何让程序不断询问用户输入,直到用户输入“-1”?因此,即使在计算出一个数字的阶乘之后,它也会继续要求更多数字,直到用户输入 -1 为止,当它显示错误消息等时也是如此。提前致谢。
引入无限循环就可以轻松实现
#include <stdio.h>
#include <math.h>
#ifndef _MSC_VER
#define scanf_s scanf
#endif
long factcalc(int num1);
int main(void)
{
int num1;
long factorial;
int d;
int out;
for (;;) {
printf("Please enter a number that is greater than 0");
scanf_s("%d", &num1);
if (num1 == -1) {
break;
}
else if (num1 < 0) {
printf("Error, number has to be greater than 0");
}
else if (num1 == 0) {
printf("\nThe answer is 1");
}
else {
factorial = factcalc(num1);
printf("\nThe factorial of your number is\t %ld", factorial);
}
}
return 0;
}
long factcalc(int num1) {
int factorial = 1;
int c;
for (c = 1; c <= num1; c++)
factorial = factorial * c;
return factorial;
}
有 select 几个使用 goto
的场景 "okay," 但这肯定不是一个。
首先,将程序的相关部分放入函数中。
然后,像这样监视和使用用户输入:
int number = -1;
while (scanf("%d", &number)) {
if (-1 == number) {
break;
}
call_foo_function(number);
}
是的,正如@ameyCU 所建议的,使用循环是解决方案。例如,
while (1)
{
printf("Please enter a number that is greater than 0");
scanf_s("%d", &num1);
if (-1 == num1)
{
break;
}
// Find factorial of input number
...
...
// Loop back to get next input from user
}