以字符读取,然后翻转,相加输出。
//Long integer Adder #include<iostream> #include<cstdlib> using namespace std; void input(int a[],int b[],int& size1,int& size2); void process(int a[],int b[],int c[]); void output(int c[]); int main() { int a[20] = {0},b[20] = {0},c[20] = {0}; int size1 = 0,size2 = 0; //a[20]=b[20]=c[20]={0}; input(a,b,size1,size2); //cout<<a[0]<<" "<<a[2]<<" "<<b[0]<<" "<<b[2]<<endl; process(a,b,c); //cout<<c[0]<<endl; cout<<"The sum of the two numbers is : "; output(c); return 0; } void input(int a[],int b[],int& size1,int& size2) { cout<<"Please inout two numbers:\n"; char ch; int i = 0; int tem; cin.get(ch); while(ch >= ‘1‘ && ch <= ‘9‘) { a[i] = static_cast<int>(ch)-48; size1 ++; i++; cin.get(ch); } //cout<<size1<<endl; cin.get(ch); i = 0; while(ch >= ‘1‘ && ch <= ‘9‘) { b[i] = static_cast<int>(ch)-48; size2 ++; i++; cin.get(ch); } //cout<<size2<<endl; for(int i = 0;i < size1/2;i++) { tem = a[i]; a[i] = a[size1 - i - 1]; a[size1 - i - 1] = tem; } for(int i = 0;i < size2/2;i++) { tem = b[i]; b[i] = b[size2 - i -1]; b[size2 - i -1] = tem; } } void process(int a[],int b[],int c[]) { int i = 0; while(i < 19) { //cout<<a[i]<<" "<<b[i]<<endl; if((a[i] + b[i]) >= 10) { c[i] += a[i] + b[i] - 10; c[i+1] =c[i+1] + 1; //cout<<c[i+1]<<endl; } else c[i] += a[i] + b[i]; //cout<<c[i]<<endl; i++; } //cout<<c[3]<<endl; } void output(int c[]) { int i; for(i = 19;c[i] == 0; i--) ; //cout<<i<<endl; for(int j = i;j >= 0;j--) cout<<c[j]; cout<<endl; }
结果:
Please inout two numbers: 1234 5678 The sum of the two numbers is : 6912
Please inout two numbers: 123 456666 The sum of the two numbers is : 456789
时间: 2024-10-31 15:04:16