用字符数组做简单加减运算
来源:百度知道 编辑:UC知道 时间:2024/09/21 12:21:14
我在做用字符数组做加减运算的题目,
下面是一小部分源程序,
为位数相同时的加法,可是运行后加时加了 却不进位 ,
哪位大大帮帮忙!!!
#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;
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<