匿名用戶
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語句刪掉