當前位置:編程學習大全網 - 編程語言 - 用c語言編程完成兩個1000位以內的正整數的加法運算

用c語言編程完成兩個1000位以內的正整數的加法運算

#include?<stdio.h>

#include?<string.h>

#include?<conio.h>

int?main()?{

int?i,j,k,T,carry;

int?lena,lenb,num;

char?ch,c[1000]?=?{0};

char?a[1000],b[1000];

scanf("%d",&T);

while(T?>?0)?{

i?=?0;

printf("\na[]?=?");

while(1)?{?//?讀取a[],'\n'結束讀入過程

fflush(stdin);

ch?=?_getch();

if(ch?==?'\r')?break;

if(ch?>=?'0'?&&?ch?<=?'9')?{

a[i++]?=?ch;

printf("%c",ch);

}

}

a[i]?=?'\0';

printf("\nb[]?=?");

i?=?0;

while(1)?{?//?讀取b[],'\n'結束讀入過程

fflush(stdin);

ch?=?_getch();

if(ch?==?'\r')?break;

if(ch?>=?'0'?&&?ch?<=?'9')?{

b[i++]?=?ch;

printf("%c",ch);

}

}

b[i]?=?'\0';

lena?=?strlen(a);

lenb?=?strlen(b);

carry?=?0;?//?進位

k?=?0;

//?從個位開始加,逆向存儲相加結果

for(i?=?lena?-?1,j?=?lenb?-?1;?i?>=?0?&&?j?>=?0;?--i,--j)?{

num?=?a[i]?+?b[j]?-?'0'?-?'0'?+?carry;?//?求得該位的和

c[k++]?=?num?%?10?+?'0';?//?獲取該位數字

carry?=?num?/?10;?//?獲取進位

}

while(i?>=?0)?{?//?處理更長的數

num?=?a[i--]?+?carry?-?'0';

c[k++]?=?num?%?10?+?'0';

carry?=?num?/?10;

}

while(j?>=?0)?{?//?處理更長的數

num?=?a[j--]?+?carry?-?'0';

c[k++]?=?num?%?10?+?'0';

carry?=?num?/?10;

}

if(carry)?c[k++]?=?carry?+?'0';

c[k]?=?'\0';

for(i?=?0;i?<?k?/?2;i++)?{?//?把計算結果改作慣用順序

ch?=?c[i];

c[i]?=?c[k?-?1?-?i];

c[k?-?1?-?i]?=?ch;

}

printf("\n%s?+?%s?=?%s\n",a,b,c);

--T;

}

return?0;

}

  • 上一篇:編程語言有多少種?
  • 下一篇:什麽是bios rom
  • copyright 2024編程學習大全網