注册 登录
编程论坛 C++教室

乘法竖式

万致远醉帥 发布于 2020-03-28 13:11, 2186 次点击
#include<iostream>
#include<iomanip>
using namespace std;
void yiwei()
{
    int chengshu, beichengshu;
    cout << "一位乘法(请从大到小输入)" << endl;
    cin >> chengshu >> beichengshu;
    system("cls");
    cout << setw(7) << chengshu << endl;
    cout << setw(1) << "×" << setw(5) << beichengshu << endl;
    cout << setw(7) << "-------";
    cout << endl;
    cout<<setw(7)<< beichengshu * chengshu;

   
}
void erwei()
{
    int chengshu, beichengshu;
    cout << "两位乘法(请从大到小输入)" << endl;
    cin >> chengshu >> beichengshu;
    system("cls");
    cout << setw(7) << chengshu << endl;
    cout << setw(1) << "×" << setw(5) << beichengshu << endl;
    cout << setw(7) << "-------";
    cout << endl;
    cout << setw(7) << chengshu * (beichengshu % 10) << endl;
    if (beichengshu/10!=0)
    {
        cout << setw(6) << chengshu * (beichengshu / 10) << endl;
        cout << setw(7) << "-------" << endl;
        cout << setw(7) << beichengshu * chengshu;
    }

   
}
void sanwei()
{
    int chengshu, beichengshu,weishu;
    cout << "3位乘法(请从大到小输入)" << endl;
    cin >> chengshu >> beichengshu;
    cout << "最小几位数?";
    cin >> weishu;
    system("cls");
    switch (weishu)
    {
    case 1:cout << setw(7) << chengshu << endl;
        cout << setw(1) << "×" << setw(5) << beichengshu << endl;
        cout << setw(7) << "-------";
        cout << endl;
        cout << setw(7) << beichengshu * chengshu;
        ; break;
    case 2:cout << setw(7) << chengshu << endl;
        cout << setw(1) << "×" << setw(5) << beichengshu << endl;
        cout << setw(7) << "-------";
        cout << endl;
        cout << setw(7) << chengshu * (beichengshu % 10) << endl;
        cout << setw(7) << chengshu * (beichengshu / 10) << endl;
        cout << "-------";
        cout << endl;
        cout << beichengshu * chengshu;
        break;
    case 4:NULL;cout<<"你大爷的";
    default:cout << setw(7) << chengshu << endl;
        cout << setw(1) << "×" << setw(5) << beichengshu << endl;
        cout << setw(7) << "-------";
        cout << endl;
        cout << setw(7) << chengshu * (beichengshu % 10) << endl;
        cout << setw(7) << chengshu * ((beichengshu % 100)/10) << endl;
        cout << setw(7) << chengshu * (beichengshu / 100) << endl;
        cout << setw(7) << "-------" << endl;
        cout << setw(7) << beichengshu * chengshu;
        break;
    }
}
int main()
{
    short i;
    cout << "最大几位数(1~3)?";
    cin >> i;
    switch (i)
    {
    case 1:yiwei();return 0; break;
    case 2:erwei();return 0; break;
    case 3:sanwei(); return 0; break;
    default:
        break;
    }
    while (true)
    {

    }
}
6 回复
#2
叶纤2020-03-28 13:24
国家的hope但是less点灵魂,加油
#3
叶纤2020-03-28 15:02
int有静态内存空间,在32位机器可以装下2^32位数字,也就是说11111乘11111是可以装的下
#4
return_02020-03-28 18:06
加油!
#5
万致远醉帥2020-03-29 08:09
#6
万致远醉帥2020-03-29 08:27
好像有点不对齐,有人可以改一下吗?




#7
雪影辰风2020-04-03 20:35
回复 6楼 万致远醉帥
你的这个没对齐问题应该是只限于最大最小都是三位数的情况吧,我试了一下,然后按照调用函数去找,发现你的那个“最小位数”那里,没有添加最小位数为3的处理方式所以才会无法对齐,有其他问题留言 ,我尽量解决!
1