c语言双循环计算n的阶乘,用C语言用循环实现N的阶乘
匿名用戶
1級
2014-03-04 回答
不要用數(shù)組,用vector來實現(xiàn)相應(yīng)的功能,我給你寫個大概的框架,你向里面添加就好了
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()
{???????//數(shù)組???1位?1!
//int?ary[N]?=?{1,?1};
vector?ary;
ary.resize(N);
//?此處的N就可以是非const類型的量
//?然后你把ary當成ary[N]數(shù)組用就可以了
inti,?j;
for(i?=?2;?i?<=?N;?i++)
{
//各個下標的階乘,第0位下標是位數(shù),所以從第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;
//進位后就只留下余數(shù)
ary[j]?=?ary[j]?%?10000;
}
}
//有進位的話,位數(shù)就+1
//這里j已經(jīng)是位數(shù)大于1了
if(ary[j]?>=?1)
{
ary[0]++;
}
}
//倒序輸出
for(j?=?ary[0];?j?>?0;?j--)
{
printf("%d",?ary[j]);
}
printf("\r\n");
return0;
}
追問:
這個好像不能實現(xiàn)啊
追答:
你可以從外面讀入N啊
比如,
int N;
sacnf("%d",&N);
然后下面接...
vector ary;
ary.resize(N);
。。。。
不會有錯誤,
下面就是把ary[N]當成你定義的那樣子的數(shù)組使用就好了...
當然,記得把define語句刪掉
總結(jié)
以上是生活随笔為你收集整理的c语言双循环计算n的阶乘,用C语言用循环实现N的阶乘的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows下安装mysql服务
- 下一篇: 重庆邮电计算机科学分数线,2020重庆邮