#include
int main()
{ int y=1;
int x;
int z=1;
scanf("%d",&x);
for(y=1;x>=y;y++){
z=z*y;
}
printf("%d",z);
}
10的阶乘就已经很大了,更别说14的阶乘int类型可承受不了
把z的类型改为long long
#include <stdio.h>
int main() {
int y = 1;
int x;
long long z = 1;
scanf("%d", &x);
for (y = 1; x >= y; y++)
z = z * y;
printf("%lld\n", z);
return 0;
}
改成long long试试?
#include<stdio.h>
int main()
{
int y=1;
int x;
long long z=1;
scanf("%d",&x);
for(y=1; y <= x; y++)
{
z = z*y;
}
printf("%lld",z);
}
int的取值范围为:-2^31 ---- 2^31-1 ,即:-2147483648 ~ 2147483647
一旦最后结果超过了这个范围就会出现错误
有两种方法,一是将z的类型改为long long 类型,输出格式为“%lld”
二是将z的类型改为double类型,输出格式为“%lf”,不过这样结果保留六位小数
#include<stdio.h>
int main()
{
int y=1;
int x;
long long z=1;
scanf("%d",&x);
for(y=1;x>=y;y++){
z=z*y;
}
printf("%lld",z);
}
或者
#include<stdio.h>
int main()
{
int y=1;
int x;
double z=1;
scanf("%d",&x);
for(y=1;x>=y;y++){
z=z*y;
}
printf("%lf",z);
}
可以啊没有问题的,重新编译,再运行,结果1278945280