C++计算两个不大于1000位的整数相加为什么运行结果不对,程序如下

2024-11-23 02:15:44
推荐回答(1个)
回答(1):

#include
using namespace std;
const int N=1000;
int main()
{
int t,i,m,n;
char a[N],b[N];
int sum[N]={0};
//cin>>t;
//while(t--) 这不要了,反正不能连续运算
{
cin>>a>>b; //这里就不要下标了
m=strlen(a); //这里不需要减1,strlen不统计'\0'
n=strlen(b); //一样
char* cpm=a;
char* cpn=b;
if(mn
{
int tmp;
tmp=m;
m=n;
n=tmp;
cpm=b;
cpn=a;
}

for(i=0;(m>0&&n>0);m--,n--,i++){
sum[i]=(cpn[n-1]-'0')+(cpm[m-1]-'0')+sum[i];
if(sum[i]>9){
sum[i+1]++;
sum[i]-=10;}}
////默认m>n;
for(;m>0;m--,i++){
sum[i]=sum[i]+(cpm[m-1]-'0');
if(sum[i]>9){
sum[i+1]++;
sum[i]-=10;} }
if(sum[i]==0)//第一位为0则不显示
i--;
for(;i>=0;i--){

cout< }
return 0;
}
2233445566778899222333
336677228811772883837265
338910674378551783059598请按任意键继续. . .