两个很大的整数相加求和··········求大侠
#include<stdio.h>#include<string.h>
int main()
{
int i, j, k, m, n;
char a,b,c;
for(i=0;i<80;i++)
c=0;
gets(a);
gets(b);
m=strlen(a);
n=strlen(b);
k=m;//求最长
if(n>m)
k=n;
for(i=k;i>=1&&(m>=0&&n>=0);i--,m--,n--)
{
c=(c+a+b)%10;
if(c+a+b>=10)
c=c+1;
}//输入到M和N共有的位数
if(m>n)
{
for(;;)
{
i--;
if(i<0)
break;
m=m-1;
c=a;
}
}
if(n>m)
{
for(;;)
{
i--;
if(i<1)
break;
n=n-1;
c=b;
}
}//输入其余位数
if(c==1)//输出全部,若首位为1,则多一位
printf("1");
for(i=1;i<=k;i++)
printf("%d",c);
}弄了挺久不知错哪里了 求大侠指点 #include<stdio.h>
#include<string.h>
int main()
{
int i, j, k, m, n;
char a,b,c;直接给c={0},下面的for循环就没必要了
for(i=0;i<80;i++)
c=0;
gets(a);
gets(b);
m=strlen(a);
n=strlen(b);
k=m;//求最长
if(n>m)
k=n;
for(i=k;i>=1&&(m>=0&&n>=0);i--,m--,n--)
{
c=(c+a+b)%10;//这一堆实在是搞不懂 ,为何取余10?
if(c+a+b>=10)
c=c+1;
}//输入到M和N共有的位数
if(m>n)
{
for(;;)
{
i--;
if(i<0)
break;
m=m-1;
c=a;
}
}
if(n>m)
{
for(;;)
{
i--;
if(i<1)
break;
n=n-1;
c=b;
}
}//输入其余位数
if(c==1)//输出全部,若首位为1,则多一位
printf("1");
for(i=1;i<=k;i++)
printf("%d",c); //应该%c
}弄了挺久不知错哪里了 求大侠指点 学习下 你的数组为char.还有。如果最高位不为零,则输出数据吧 已经解决了就添加为解决了 路过的有疑问的下面是正确运行的代码了
#include<stdio.h>
#include<string.h>
int main()
{
char c;
int i,j,k=0,m,n,max,a={0},b={0},sum={0};
gets(c);
m=strlen(c);
for(i=0,j=m-1;j>=0;i++,j--)
{
a=c-48;
}
gets(c);
n=strlen(c);
for(i=0,j=n-1;j>=0;i++,j--)
{
b=c-48;
}
max=m;
if(m<n)
max=n;
for(i=0;i<=max;i++)
{
sum=(a+b+k)%10;
k=(a+b+k)/10;
}
if(sum>0)
printf("%d",sum);
for(i=max-1;i>=0;i--)
printf("%d",sum);
return 0;
}
页:
[1]