#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,同样适用于显示错误消息等的情况。提前致谢。
答案 0 :(得分:5)
通过引入无限循环可以很容易地实现。
#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;
}
答案 1 :(得分:1)
有少数情况下使用goto
是&#34;好的,&#34;但这肯定不是一个。
首先,将程序的相关位置放入函数中。
然后,监视并使用用户输入,如下所示:
int number = -1;
while (scanf("%d", &number)) {
if (-1 == number) {
break;
}
call_foo_function(number);
}
答案 2 :(得分:0)
是的,正如@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
}