2020-11-22

OJ1048: 阶乘表
## 标题时间限制: 1 Sec 内存限制: 30 MB

`` 题目描述
输入一个正整数n(n<=20),输出1到n之间阶乘表。
输入
输入只有一个正整数n。
输出
输出1到n之间的阶乘表,格式见输出样例。每行两个数据,第一个数据占4列,第二个数据占20列,左对齐。
样例输入 :
5
样例输出:
1 1
2 2
3 6
4 24
5 120

#include 

int main()
{
     
    int n,i,j;
    double sf;
    scanf("%d",&n);
    i=1;sf=1;
    for(i=1;i<=n;i++)
    {
     
           sf*=i;

        printf("%-4d%-20.0f\n",i,sf);
    }
	return 0;
}
*********PS:注意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
显然已经超出了32位int整形的范围(-2147483648~2147483648)所以要把输出的阶乘定义为double(双精度)类型,再用%.0lf保留0位小数即可。

你可能感兴趣的:(oj系统)