大数相加
来源:互联网 发布:逆战挂机宏数据 编辑:程序博客网 时间:2024/06/14 04:01
/* Name: Copyright: Author: Date: 24/08/12 16:34 Description: Reference: http://blog.csdn.net/tangxianghenggood/article/details/5776629 */#include<stdio.h>#include<string.h>int main(){ char a[200] = {0}; char b[200] = {0}; int i=0,j=0,k=0; int al=0; int bl=0; int result; printf("please input a\n"); while((a[al] = getchar()) != '\n') { if(a[al] >= '0' && a[al] <= '9') { a[al] = a[al] - '0'; al++; } else { printf("intput error"); exit(0); } } printf("the number a is "); for(i=0;i<al;i++) printf("%d",a[i]); printf("\n"); printf("please input b\n"); while((b[bl] = getchar()) != '\n') { if(b[bl] >= '0' && b[bl] <= '9') { b[bl] = b[bl] - '0'; bl++; } else { printf("intput error"); exit(0); } } printf("the number b is "); for(i=0;i<bl;i++) printf("%d",b[i]); printf("\n"); if(al >= bl) { j = al; k = bl; for(;bl > 0;) { result = (a[al-1]+b[bl-1])/10; a[al-1] = (a[al-1]+b[bl-1])%10; al --; bl --; a[al-1] = a[al-1] + result; } if(result > 0) for(;al > 1;) { al --; a[al-1] += a[al]/10; a[al] %= 10; } for(i=0;i<j;i++) printf("%d",a[i]); } else { j = al; k = bl; for(;al > 0;) { result = (a[al-1]+b[bl-1])/10; b[bl-1] = (a[al-1]+b[bl-1])%10; al --; bl --; b[bl-1] = b[bl-1] + result; } if(result > 0) for(;bl > 1;) { bl --; b[bl-1] += b[bl]/10; b[bl] %= 10; } for(i=0;i<k;i++) printf("%d",b[i]); } getchar();}