C中数字的阶乘
Factorial of a number in C
所以我正在编写一个程序来在 C 中打印数字的阶乘。我的代码 -
#include <stdio.h>
int main(void)
{
int a,i ;
printf("Enter the number = ");
scanf("%d", &a);
for(i=1; i<a; i++)
{
a = a*i;
}
printf("The factorial of the given number is = %d\n",a);
}
现在这个程序正在打印一些垃圾值。我问了一些朋友,他们说要为阶乘添加另一个变量并使用带有那个阶乘变量的循环,但是 none 他们知道为什么这段代码是错误的。
我的问题是为什么这段代码是错误的?这个 For 循环在这里做什么,为什么它不打印数字的阶乘,而是打印一些垃圾值?
预期输出-
Enter the number = 5
The factorial of the given number is = 120
我得到的输出是-
Enter the number = 5
The factorial of the given number is = -1899959296
因为当您递增变量 a
时,for 循环条件会发生变化。
你有 i
必须小于 a
,但增加 a
将导致条件始终为真。
您必须将值保存在另一个变量中,如下所示:
#include <stdio.h>
int main(void)
{
int a, i;
printf("Enter the number = ");
scanf("%d", &a);
int result = a;
for(i=1; i<a; i++){
result = result*i;
}
printf("The factorial of the given number is = %d \n", result);
}
所以我正在编写一个程序来在 C 中打印数字的阶乘。我的代码 -
#include <stdio.h>
int main(void)
{
int a,i ;
printf("Enter the number = ");
scanf("%d", &a);
for(i=1; i<a; i++)
{
a = a*i;
}
printf("The factorial of the given number is = %d\n",a);
}
现在这个程序正在打印一些垃圾值。我问了一些朋友,他们说要为阶乘添加另一个变量并使用带有那个阶乘变量的循环,但是 none 他们知道为什么这段代码是错误的。
我的问题是为什么这段代码是错误的?这个 For 循环在这里做什么,为什么它不打印数字的阶乘,而是打印一些垃圾值?
预期输出-
Enter the number = 5
The factorial of the given number is = 120
我得到的输出是-
Enter the number = 5
The factorial of the given number is = -1899959296
因为当您递增变量 a
时,for 循环条件会发生变化。
你有 i
必须小于 a
,但增加 a
将导致条件始终为真。
您必须将值保存在另一个变量中,如下所示:
#include <stdio.h>
int main(void)
{
int a, i;
printf("Enter the number = ");
scanf("%d", &a);
int result = a;
for(i=1; i<a; i++){
result = result*i;
}
printf("The factorial of the given number is = %d \n", result);
}