1.防止溢出的一種方式,有些數字超出int範圍,這時候用int就會溢出。這時候要用到大數的思想。
例子:
#include <stdio.h>
int main()
{
int n;//階乘大小
printf("請輸入n的大小:");
scanf("%d",&n);
int a[40001];//確保保存最終運算結果的數組足夠大
int carry;//進位
int digit=1;//位數
a[0]=1;//將結果先初始化爲1
int temp;//階乘的任一元素與臨時結果的某位的乘積結果
int i,j;
for(i=2;i<=n;++i){//開始階乘,階乘元素從2開始一次登場
for(j=1,carry=0;j<=digit;++j){//按最基本的乘法運算思想來考慮,將臨時結果每一位與階乘元素相乘
temp=a[j-1]*i+carry;//相應階乘中的一項與當前所得臨時結果的某位相乘(加上進位)
a[j-1]=temp%10;//更新臨時結果的位上信息
carry=temp/10;//看看是否有進位
}
while(carry){//如果有進位
a[++digit-1]=carry%10;//新加一位,添加信息。位數增1
carry/=10;//看看還能不能進位
}
}
printf("結果是:\n%d!=",n);//顯示結果
for(i=digit;i>=1;--i)
printf("%d",a[i-1]);
return 0;
}
有什麼問題加我QQ:839505138.