#include"stdio.h" #include"stdlib.h" #include"string.h" #define N 105 int a[N]; int main() { int i,j,n,n1,flag; char ch[N]; scanf("%d",&n); while(n--) { memset(a,0,sizeof(a)); //数组初始化为零 while(scanf("%s",ch),ch[0]!='0') //输入零结束 { n1=strlen(ch); for(i=n1-1,j=0;i>=0;i--) { a[j++]+=ch[i]-'0'; a[j]+=a[j-1]/10; //进位 a[j-1]%=10; //取余 } } flag=0; for(i=N-1;i>0;i--) { if(flag) printf("%d",a[i]); else if(a[i]) { printf("%d",a[i]); flag=1; } } printf("%d ",a[0]); //输入0时应输出0,错了n多次 if(n) //输出块之间有空行 printf(" "); } return 0; }
改版 为什么一直WA
#include"stdio.h" #include"stdlib.h" #include"string.h" #define N 105 int a[N],b[N]; int main() { int i,j,n,n1,flag; char ch[N]; scanf("%d",&n); while(n--) { memset(a,0,sizeof(a)); //数组初始化为零 while(scanf("%s",ch),ch[0]!='0') //输入零结束 { n1=strlen(ch); memset(b,0,sizeof(b)); for(i=0,j=n1-1;j>=0;j--,i++) b[i]=ch[j]-'0'; int h=0; int m; for(i=0;i<n1;i++) { m=a[i]+b[i]+h; a[i]=m%10; h=m/10; } while(h) { a[i]=h%10; n1++; h=h/10; } } flag=0; for(i=N-1;i>0;i--) { if(flag) printf("%d",a[i]); else if(a[i]) { printf("%d",a[i]); flag=1; } } printf("%d ",a[0]); //输入0时应输出0,错了n多次 if(n) //输出块之间有空行 printf(" "); } return 0; }
C++版本
#include<iostream>
#include<cstring>
using namespace std;
#define N 110
int main()
{
int t;
cin>>t;
while(t--)
{
int sum[N]={0};
char str[N];
while(cin>>str&&str[0]!='0')
{
int num[N]={0};
int len=strlen(str);
for(int i=0;i<len;i++)
num[i]=str[len-1-i]-'0';
for(int i=0;i<N;i++)
{
sum[i]+=num[i];
if(sum[i]>9)
{
sum[i]-=10;
sum[i+1]+=1;
}
//sum[i+1]+=(sum[i]+num[i])/10;
//sum[i]=(sum[i]+num[i])%10;
}
}
int k=N-1;
while(sum[k]==0) k--;
if(k<0)
cout<<0;
else
for(;k>=0;k--)
cout<<sum[k];
cout<<endl;
if(t)
cout<<endl;
}
return 0;
}
#include <iostream> #include <cstring> #include <string> #include <cmath> using namespace std; const int N=105; int main() { int a[N],b[N],c,d,ou,kl; string s1,s2; getline(cin,s1); c=s1.length(); ou=0; for (int i=0;i<N;i++)//把s1h装到a[100]里 { a[N-1-i]=s1[c-1-i]-'0'; if(c-1-i<0) { a[N-1-i]=0; } } while(getline(cin,s2)&&s2!="0") { d=s2.length(); for (int k=0;k<N;k++)//把s2装到b[100]里 { b[N-1-k]=s2[d-1-k]-'0'; if(d-1-k<0) { b[N-1-k]=0; } } for (int l=N-1;l>0;l--)//做加法 { a[l]+=b[l]; if(a[l]>=10) { a[l]-=10; a[l-1]++; } } } for (int g=0;g<N;g++)//从不为零的位置开始输出到最后一位 { ou+=a[g]; if(ou!=0) cout<<a[g]; } cout<<endl; return 0; }