求助大佬,它为什么只能运算9位
  • 板块学术版
  • 楼主L203105
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/11/19 00:08
  • 上次更新2023/10/27 02:27:29
查看原帖
求助大佬,它为什么只能运算9位
832321
L203105楼主2022/11/19 00:08

求两数相减,a-b。超出9位运算不正确,求大佬告知。

#include<stdio.h>
int main(int argc,char *argv[])
{
    int a[80]={0},b[80]={0},c[80]={0},i,k,max,s1=0,s2=0,t,ok=0;
    for(i=0;i<80;i++)
    {
        scanf("%d",&a[i]);
        s1++;
        if(getchar()=='\n') break;}
    for(i=0;i<80;i++)
    {
        scanf("%d",&b[i]);
        s2++;
        if(getchar()=='\n') break;}
max=s1;
if(s1<s2) max=s2;
for(i=0;i<max;i++){ if(a[i]==b[i]) continue; if(a[i]>b[i]){t=1; break;} if(a[i]<b[i]) {t=-1; break;}}//判断相减是否大于0
if(s1>s2||s1==s2&&t==1){
for(i=max-1,k=s2-1;i>=0;i--,k--)
{
    if(k>=0){
    c[i]+=a[i]-b[k]; if(c[i]<0) {c[i]+=10; c[i-1]=-1;}}
    else{
        c[i]+=a[i]; if(c[i]<0) {c[i]+=10; c[i-1]=-1;}}
}}
else{
for(i=max-1,k=s1-1;i>=0;i--,k--)
{
    if(k>=0){
        c[i]+=b[i]-a[k]; if(c[i]<0) {c[i]+=10; c[i-1]=-1;}}
    else{
        c[i]+=b[i]; if(c[i]<0) {c[i]+=10; c[i-1]=-1;}}
}}
if(s1<s2||s1==s2&&t==-1){ printf("-");}
for(i=0;c[i]==0;i++) {}//消除前面的0
for(i;i<max;i++)
{ ok=1; printf("%d",c[i]);}
if(ok==0)
printf("0");
return 0;
}
2022/11/19 00:08
加载中...