P1957题解
查看原帖
P1957题解
1038046
ZTSLXX楼主2024/1/23 20:53

参考的@alaxy_yr大佬的题解

这道题出要难点就是判断,输入的是两个数据还是三个数据 cin的使用方法:如果你定义了一个int型,那么当cin输入表达式的值是就会检测输入的是不是数字。如果程序发现用户输入了错误内容时,程序就会锁住cin,所以你就需要重置cin来接受新的输入。但是错误数据还依旧存在缓存区中 还不多说,上代码

#include <iostream>
using namespace std;

int numbit(int a)
{
    int num = 0;
    if (a < 0 || a == 0)
        num = 1;
    while (a)
    {
        num += 1;
        a /= 10;
    }
    return num;
}

int numsbit(int a, int b, int c)
{
    return numbit(a) + numbit(b) + numbit(c) + 2;
}

int main(void)
{
    int num, ord, a, b, c;  //num:存放i  ord:char类型的转换
    char tmp;
    cin >> num;
    for (int i = 0; i < num; i++)
    {
        if (!(cin >> a))
        {
            cin.clear();
            cin >> tmp;
            ord = int(tmp);
            cin >> a;
        }
        cin >> b;
        ord = int(tmp);
        switch (ord)
        {
        case 'a':
            c = a + b;
            cout << a << "+" << b << "=" << c << endl;
            cout << numsbit(a, b, c) << endl;
            break;
        case 'b':
            c = a - b;
            cout << a << "-" << b << "=" << c << endl;
            cout << numsbit(a, b, c) << endl;
            break;
        case 'c':
            c = a * b;
            cout << a << "*" << b << "=" << c << endl;
            cout << numsbit(a, b, c) << endl;
            break;
        }
    }
    return 0;
}
2024/1/23 20:53
加载中...