C程:利用字符数组实现两个大整数的加法。(求大神帮忙改下程序)

#include<stdio.h>#include<string.h>#defineN1001intmain(void){voidstrive(char*r);voida... #include <stdio.h>
#include <string.h>
#define N 1001
int main(void)
{

void strive(char *r);

void add(char *a,char *b,char *c);

char a[N],b[N];

char sum[N];

a[N]={'\0'};

b[N]={'\0'};

sum[N]={'\0'};

printf("Input the a[],b[]:\n");

gets(a);

gets(b);

strive(a);

strive(b);

add(a,b,sum);

strive(sum);

puts(sum);

return 0;
}
void strive(char *r)
{

int i;

char temp[N];

int n;

n=strlen(r)-1;

for(i=0;i<n;i++)

temp[n-i]=r[i];

strcpy(r,temp);

puts(r);

printf("\n");
}
void add(char *a,char *b,char *c)
{

int i=0;

int j=0;

while((a[i]!='\0')||(b[i]!='\0'))

{

if(a[i]=='\0')

c[i]-'0'=b[i]-'0'+j;

else if(b[i]=='\0')

c[i]-'0'=a[i]-'0'+j;

else

c[i]-'0'=a[i]-'0'+b[i]-'0'+j;

if(c[i]>=10)

{

j=(c[i]-'0')%10;

c[i]-'0'=c[i]-'0'-10;

}

i++;

}

}
展开
 我来答
yanglei5658
2015-06-22 · TA获得超过4756个赞
知道大有可为答主
回答量:835
采纳率:100%
帮助的人:549万
展开全部

错误不少,

首先

   char a[N],b[N];
    char sum[N];
    a[N]={'\0'};
    b[N]={'\0'};
    sum[N]={'\0'};

这咋能成,你输入的长度就不知道,怎么给最后置0。

我把正确的全部贴出来,你看看。

void strive(char *r)
{
    int i;
    char temp[100];
    int n;
    n = strlen(r);
    for (i = 0; i < n; i++)
        temp[n -1- i] = r[i];
    temp[n] = '\0';
    strcpy(r, temp);
    puts(r);
    printf("\n");
}
void add(char *a, char *b, char *c)
{
    char *p=c;
    int digit=0,carry=0,temp = 0;
    while ((*a != '\0') && (*b != '\0'))
    {
        temp = *a - '0' + *b - '0' + carry;
        digit = temp % 10;
        carry = temp / 10;
        *p++ = digit + '0';
        a++;
        b++;
    }
    while (*a != '\0')
    {
        temp = *a - '0'  + carry;
        digit = temp % 10;
        carry = temp / 10;
        *p++ = digit + '0';
        a++;
    }
    while (*b != '\0')
    {
        temp = *b - '0' + carry;
        digit = temp % 10;
        carry = temp / 10;
        *p++ = digit + '0';
        b++;
    }
    *p = '\0';
}
int main()
{
    void strive(char *r);
    void add(char *a, char *b, char *c);
    char a[100], b[100];
    char sum[100];
    printf("Input the a[],b[]:\n");
    gets(a);
    gets(b);
    strive(a);
    strive(b);
    add(a, b, sum);
    strive(sum);
    return 0;
}

结果为:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式