#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char sz1[200],sz2[200],sz[200];
int i,a,b,c,max;
cout<<"输入大数字1:";
cin.getline(sz1,200);
cout<<"输入大数字2:";
cin.getline(sz2,200);
if(strlen(sz1)>strlen(sz2))
{
for(i=0;i<strlen(sz2);i++)
{
sz2[strlen(sz1)-1-i]=sz2[strlen(sz2)-1-i];
}
for(i=0;i<strlen(sz1)-strlen(sz2);i++)
{
sz2[i]='0';
}
max=strlen(sz1);
}
else if(strlen(sz1)<strlen(sz2))
{for(i=0;i<strlen(sz1);i++)
{
sz1[strlen(sz2)-1-i]=sz1[strlen(sz1)-1-i];
}
for(i=0;i<strlen(sz2)-strlen(sz1);i++)
{
sz1[i]='0';
}
max=strlen(sz2);
}
sz[max]='\0';
for(i=max-1;i>0;i--)
sz[i]=sz1[i]+sz2[i];
if(sz[i]>=106)
{
sz[i]-=58;
sz[i-1]++;
}
else if(sz[i]>=96)
{
sz[i]-=48;
}
cout<<sz<<endl;
system("pause");
return 0;
}
题目要求是输入两个200位以内的大数字然后用字符数组把两个加起来。我的想法是输入后先让他们右对齐,然后相加,大于106就减去58,然后前一格+1,96到105就减去48。然后在COUT处理后的数组。可是运行之后如果第一个数字比较长就直接停止工作。第二个数字比较长就输出奇怪的中文。我跟我们老师的标准程序对照过,基本思路是一样的。但是我实在找不出哪里有错。高手来帮帮忙
#include<cstring>
using namespace std;
int main()
{
char sz1[200],sz2[200],sz[200];
int i,a,b,c,max;
cout<<"输入大数字1:";
cin.getline(sz1,200);
cout<<"输入大数字2:";
cin.getline(sz2,200);
if(strlen(sz1)>strlen(sz2))
{
for(i=0;i<strlen(sz2);i++)
{
sz2[strlen(sz1)-1-i]=sz2[strlen(sz2)-1-i];
}
for(i=0;i<strlen(sz1)-strlen(sz2);i++)
{
sz2[i]='0';
}
max=strlen(sz1);
}
else if(strlen(sz1)<strlen(sz2))
{for(i=0;i<strlen(sz1);i++)
{
sz1[strlen(sz2)-1-i]=sz1[strlen(sz1)-1-i];
}
for(i=0;i<strlen(sz2)-strlen(sz1);i++)
{
sz1[i]='0';
}
max=strlen(sz2);
}
sz[max]='\0';
for(i=max-1;i>0;i--)
sz[i]=sz1[i]+sz2[i];
if(sz[i]>=106)
{
sz[i]-=58;
sz[i-1]++;
}
else if(sz[i]>=96)
{
sz[i]-=48;
}
cout<<sz<<endl;
system("pause");
return 0;
}
题目要求是输入两个200位以内的大数字然后用字符数组把两个加起来。我的想法是输入后先让他们右对齐,然后相加,大于106就减去58,然后前一格+1,96到105就减去48。然后在COUT处理后的数组。可是运行之后如果第一个数字比较长就直接停止工作。第二个数字比较长就输出奇怪的中文。我跟我们老师的标准程序对照过,基本思路是一样的。但是我实在找不出哪里有错。高手来帮帮忙