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

这篇博客介绍了一种使用C++的vector代替数组实现阶乘计算的方法。通过动态调整vector大小,代码可以适应不同数值的阶乘计算,并处理了进位问题。博主提供了一个示例框架,包括读取输入、初始化vector、计算阶乘和倒序输出结果的步骤。
摘要由CSDN通过智能技术生成

匿名用户

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语句删掉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值