C语言求数列的和,1的阶乘一直加到15的阶乘,数据溢出怎么办?

问题描述:

C语言求数列的和,1的阶乘一直加到15的阶乘,数据溢出怎么办?
看看这个程序怎么改.
#include
void main()
{
unsigned long sum=0,n=1,x=1;
for(n=1;n
1个回答 分类:综合 2014-11-06

问题解答:

我来补答
13位,long型应该能放得下.有的编译器可能放不下
还有一个数据类型是long long型
解决的办法,要是放不下,只能用字符串来解决
自己编写字符串的加乘运算.也不是很难
再问: 不会字符串的,跪求。。。
再答: 有点繁琐 void jia(char *a,char *b,char*c) //ab是加数,c是结果 { int i,la,lb,lc; char a1[100],b1[100],c1[100]; int a2[100]={0},b2[100]={0},c2[100]={0}; strcpy(a1,a);strcpy(b1,b); //拷贝到新的字符串中 la=strlen(a1);lb=strlen(b1); //求ab的长度 lc=la>lb?la:lb; //这个是求出最长的 strrev(a1);strrev(b1); //反序 for(i=0;a1[i];i++) //下面两个for是变成int型 a2[i]=a1[i]-'0'; for(i=0;b1[i];i++) b2[i]=b1[i]-'0'; c2[0]=a2[0]+b2[0]; //这个先求出个位 for(i=1;i9) //要是最高位是两位数的话 { c2[lc]=1; //进位 c2[lc-1]%=10; //取出这个位上的个位 lc++; //长度再加上一位 } for(i=0;i
 
 
展开全文阅读
剩余:2000