一道c++不会,谁告诉我
加法的横式与竖式运算式子 输入A,B二个变量的值,分别打印出A与B加法的横式与竖式运算式子。(横线长度为7,数字右对齐)
样例输入:
45 237
样例输出:
45+237=282
45
+ 237
-------
282
时间限制:
1000
空间限制:
65536
#include<bits/stdc++.h> //c++oi用万能库 using namespace std; #define len 7 //我不是很看懂你的意思,反正整个len为了对齐7位数,想长的话自己变大(QWQ别太大) int main() { string a1,b1; //嗯,用高精 cin>>a1;//输入第一个数 cin>>b1;//第二个 int a[10000],b[10000],c[10000]; int x=0;//进位数 memset(a,0,sizeof(a));//初始化,0 memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); cout<<setw(len)<<a1<<endl; cout<<"+"<<setw(len-1)<<b1<<endl; cout<<"-------"<<endl; //转int数组 for(int i=0;i<a1.length();i++) { a[i]=a1[a1.length()-1-i]-'0'; } for(int i=0;i<b1.length();i++) { b[i]=b1[b1.length()-1-i]-'0'; } //数组下标数相同的加起来,进位的话把1放到x中 for(int i=0;i<=a1.length()||i<=b1.length();i++) { c[i]=b[i]+a[i]+x; x=0; if(c[i]>=10) { c[i]%=10; x=1; } } long maxl=max(a1.length(),b1.length()); if(c[maxl]==0)maxl--;//去掉前面多余的0 int blankl=len-maxl-1; while(blankl>0) //就是为了对齐 { cout<<" "; blankl--; } for(int i=maxl;i>=0;i--) cout<<c[i]; }