题目是求几个100位以内的数的加法,遇到0结束,输出结果
测试了几组数都可以,可是在POJ上就是通不过。。不知道为什么。。
我写的太混乱了。。谢谢各位的耐心。。
#include<iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char a[100][101];
int b[102];
int i=0,n,q=0,m,j,len=0,lenm;//q进位
for(m=0;m<102;m++) b[m]=0;
for(m=0;m<100;m++)
for(j=0;j<102;j++) a[m][j]='0';
do
{
scanf("%s" ,a[i]);
i++;
}while(strcmp(a[i-1],"0")!=0 );//读入
for(m=0;m<i;m++)
{
if(len<=strlen(a[m])) len=strlen(a[m]);//找所有串里最大的长度
}
for(j=0;j<len;j++)
{
for (n=0;n<i;n++)
{ lenm=strlen(a[n]);
lenm--;
b[j]=a[n][lenm-j]-'0'+b[j];}//把每个二维数组对应的位相加
b[j]+=q;//加上进位
q=(b[j])/10;//算出进位
b[j]=b[j]%10;
}
j--;b[j]=b[j]+q*10; //求首位进位后的结果
int h=101;while(b[h]==0) h--;
for(i=h;i>=0;i--) cout<<b[i];//倒序输出
cout<<endl;
return 0;
}
[此贴子已经被作者于2007-3-16 23:12:38编辑过]