标题:大数相减运算
取消只看楼主
yuma
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:银河系
等 级:贵宾
威 望:33
帖 子:1883
专家分:2904
注 册:2009-12-22
结帖率:89.13%
 问题点数:0 回复次数:0 
大数相减运算
当结果为负数时,结果显示不正常,如何修改?

程序代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#define M 10005
int main()
{
char a[M],b[M];
int a1[M],b1[M],i,j,m,n,k,max;
scanf("%s%s",&a,&b);
m=strlen(a);
n=strlen(b);
max=m;
if(max<n)

 max=n;          //选出最大位数是多少位 
k=max;
for(i=0;i<m;i++)        //将字符串转换为数组 
 a1[i]=a[m-1-i]-'0';
for(j=0;j<n;j++)

 b1[j]=b[n-1-j]-'0';
i=0;
if(k==m)
{

 for(j=0;j<k;j++)

 {
  if(a1[i]<b1[j])
  {
   a1[i]=a1[i]-b1[j]+10;
   a1[i+1]--;
   i++;
  }
  else
  {
   a1[i]=a1[i]-b1[j]; 
   i++;
  } 

 }

 i=k;

 while(a1[i]==0)
  i--;

 if(i<0)
  printf("0\n");

 else

 {
  for(;i>=0;i--)
   printf("%d",a1[i]);

 }
}
else
{

 for(j=0;j<k;j++)

 {
  if(b1[i]<a1[j])
  {
   b1[i]=b1[i]-a1[j]+10;
   b1[i+1]--;
   i++;
  }
  else
  {
   b1[i]=b1[i]-a1[j]; 
   i++;
  } 

 }

 i=k;

 while(b1[i]==0)
  i--;

 if(i<0)
  printf("0\n");

 else

 {
  for(;i>=0;i--)
   printf("-%d",b1[i]);

 }
}
return 0;
}
搜索更多相关主题的帖子: i++ max printf for 大数 
2022-01-09 10:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508106-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.099971 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved