c语言双循环计算n的阶乘,用C语言用循环实现N的阶乘

匿名用户

1级

2014-03-04 回答

不要用数组,用vector来实现相应的功能,我给你写个大概的框架,你向里面添加就好了

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

#include 

#include 

#include             // add new

usingnamespacestd;

#define N 10 //算N的阶乘

intmain()

{       //数组   1位 1!

//int ary[N] = {1, 1};

vector ary;

ary.resize(N);

// 此处的N就可以是非const类型的量

// 然后你把ary当成ary[N]数组用就可以了

inti, j;

for(i = 2; i <= N; i++)

{

//各个下标的阶乘,第0位下标是位数,所以从第1位开始

for(j = 1; j <= ary[0]; j++)

{

ary[j] = ary[j] * i;

}

//处理进位问题 1W就进一位

for(j = 1; j <= ary[0]; j++)

{

if(ary[j] >= 10000)

{

//进位

ary[j+1] = ary[j+1] + ary[j] / 10000;

//进位后就只留下余数

ary[j] = ary[j] % 10000;

}

}

//有进位的话,位数就+1

//这里j已经是位数大于1了

if(ary[j] >= 1)

{

ary[0]++;

}

}

//倒序输出

for(j = ary[0]; j > 0; j--)

{

printf("%d", ary[j]);

}

printf("\r\n");

return0;

}

追问:

这个好像不能实现啊

追答:

你可以从外面读入N啊

比如,

int N;

sacnf("%d",&N);

然后下面接...

vector ary;

ary.resize(N);

。。。。

不会有错误,

下面就是把ary[N]当成你定义的那样子的数组使用就好了...

当然,记得把define语句删掉

你可能感兴趣的:(c语言双循环计算n的阶乘)