运行到12还是正确的,到13结果就是错的了。不知道哪里出问题了。请帮忙看一下,谢谢啦!
int 存不下溢出了
用long long
代替int
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
long long f = 1;
for (int i = 1; i <= n; i++) {
f *= i;
printf("%-4d%-4lld\n", i, f);
}
return 0;
}
$ gcc -Wall main.cpp
$ ./a.out
20
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
11 39916800
12 479001600
13 6227020800
14 87178291200
15 1307674368000
16 20922789888000
17 355687428096000
18 6402373705728000
19 121645100408832000
20 2432902008176640000