#include"stdio.h"#include"stdlib.h"#include"string.h"#define N 105int 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\n",a[0]); //输入0时应输出0,错了n多次 if(n) //输出块之间有空行 printf("\n"); } return 0;}
改版 为什么一直WA
#include"stdio.h"#include"stdlib.h"#include"string.h"#define N 105int 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;i0;i--) { if(flag) printf("%d",a[i]); else if(a[i]) { printf("%d",a[i]); flag=1; } } printf("%d\n",a[0]); //输入0时应输出0,错了n多次 if(n) //输出块之间有空行 printf("\n"); } return 0;}
C++版本
#include#include using namespace std;#define N 110int 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 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<
#include#include #include #include 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 0;l--)//做加法 { a[l]+=b[l]; if(a[l]>=10) { a[l]-=10; a[l-1]++; } } } for (int g=0;g