ZOJ 1292 Integer Inquiry

        今天抽空做了一个大数加法的题没想到一次AC,看来我的手感还是有的.

 

        这个需要注意的地方是每一个输入块之前都有一个空行,需要用getchar处理掉,而且组数N之后的回车还要处理掉.

 

 

#include<stdio.h> void change(char *a,int *aa)//倒序,并变成整型数组 { int start = 0,end,len,i,j; char t; len = strlen(a); end = len - 1; while(start < end) { t = a[start]; a[start] = a[end]; a[end] = t; start++;end--; } for(i = 0;i<len;i++) aa[i] = a[i] - '0'; } void plus(int *aa,int *bb,int *cc)//做加法运算 { int i; for(i = 0;i < 105;i++) { cc[i] = cc[i] + aa[i] + bb[i]; if(cc[i] > 9) {cc[i+1] = cc[i]/10;cc[i] = cc[i]%10;} } } void cpy(int *aa,int *cc)//相当于赋值吧 { int i; for(i = 0;i<110;i++) aa[i] = cc[i]; } void output(int *aa)//输出结果 { int i,flag; for(i = 105,flag = 0;i>=0;i--) { if(aa[i] != 0 && flag ==0) { flag = 1; printf("%d",aa[i]); } else if(flag == 1) printf("%d",aa[i]); } printf("/n"); } int main(void) { freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); int ncases; int i,flag = 0; char a[110],b[110],c[110]; int aa[110],bb[110],cc[110]; scanf("%d",&ncases);getchar(); while(ncases--) { getchar(); memset(aa,0,sizeof(aa)); memset(bb,0,sizeof(bb)); memset(cc,0,sizeof(cc)); scanf("%s",a); change(a,aa); while(scanf("%s",b) && strcmp("0",b) != 0) { change(b,bb); plus(aa,bb,cc); cpy(aa,cc); memset(cc,0,sizeof(cc)); } printf(flag++?"/n":""); output(aa); } return 0; }

你可能感兴趣的:(c,Integer,output)