标题:一道c++不会,谁告诉我
只看楼主
hzr
Rank: 2
等 级:论坛游民
威 望:3
帖 子:53
专家分:76
注 册:2017-8-24
结帖率:33.33%
已结贴  问题点数:20 回复次数:4 
一道c++不会,谁告诉我
加法的横式与竖式运算式子
输入A,B二个变量的值,分别打印出A与B加法的横式与竖式运算式子。(横线长度为7,数字右对齐)

样例输入:
45  237
样例输出:
45+237=282
     45
+   237
-------
    282
时间限制:
1000
空间限制:
65536
搜索更多相关主题的帖子: c++ 加法 运算 输入 限制 
2017-10-13 19:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
什么知识点不会?
2017-10-13 22:50
hzr
Rank: 2
等 级:论坛游民
威 望:3
帖 子:53
专家分:76
注 册:2017-8-24
得分:0 
都不会,求答案!
2017-10-14 17:48
十三陵
Rank: 2
等 级:论坛游民
威 望:1
帖 子:5
专家分:12
注 册:2017-10-29
得分:0 
意思我不是很懂,不知道这样是不是你的意思

程序代码:
#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];

} 
2017-10-29 09:08
hzr
Rank: 2
等 级:论坛游民
威 望:3
帖 子:53
专家分:76
注 册:2017-8-24
得分:0 
谢谢
2018-02-05 21:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481361-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.485604 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved