用字符数组做简单加减运算

来源:百度知道 编辑:UC知道 时间:2024/06/19 10:37:12
我在做用字符数组做加减运算的题目,

下面是一小部分源程序,

为位数相同时的加法,可是运行后加时加了 却不进位 ,

哪位大大帮帮忙!!!

#include<stdio.h>
#include<string.h>

int n,m;
main()
{
char a[100],b[100];
int i,j,k;
int c[100];
c[0]=0;
printf("\n input a number string A:\n");
scanf("%s",a);
n=strlen(a);

printf("\n input a number string B:\n");
scanf("%s",b);
m=strlen(b);

if(n==m)
{
for(i=n-1;i>=0;i--)

{ k=i+1;
j=i;
c[k]=(a[i]-'0')+(b[j]-'0');

if(c[k]>9)
{
c[k]=c[k]-10;
c[k-1]=c[k-1]+1;
}

}
if(c[0]!=0)
{
for(k=0;k<=n;k++)
printf("%d",c[k]);
}
else
{
for(k=1;k<=n;k++)
prin

你的问题出在我说有问题的那句,你原来的句子把上一次循环所进的位覆盖掉了,所以出现了无法进位的问题。下面是我给你改过的:

#include<stdio.h>
#include<string.h>
int n,m;
void main()
{
char a[100],b[100];
int i,j,k;
int c[100];
for (i=0;i<99;i++) c[i]=0; //这句是我加的
c[0]=0;
printf("\n input a number string A:\n");
scanf("%s",a);
n=strlen(a);

printf("\n input a number string B:\n");
scanf("%s",b);
m=strlen(b);

if(n==m)
{
for(i=n-1;i>=0;i--)

{ k=i+1;
j=i;
c[k]=(a[i]-'0')+(b[j]-'0')+c[k];//这句有问题,我已经改好。

if(c[k]>9)
{
c[k]=c[k]-10;
c[k-1]=c[k-1]+1;
}

}
if(c[0]!=0)
{
for(k=0;k<=n;k++)
printf("%d",c[k]);
}
else
{
for(k=1;k<