
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++;
}
} 展开
#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++;
}
} 展开
1个回答
展开全部
错误不少,
首先
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;
}
结果为:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询