zoukankan      html  css  js  c++  java
  • L1-025 正整数A+B

    L1-025 正整数A+B (15 分)

    题的目标很简单,就是求两个正整数AB的和,其中AB都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

    输入格式:

    输入在一行给出AB,其间以空格分开。问题是AB不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

    注意:我们把输入中出现的第1个空格认为是AB的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

    输出格式:

    如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?

    输入样例1:

    123 456
    

    输出样例1:

    123 + 456 = 579
    

    输入样例2:

    22. 18
    

    输出样例2:

    ? + 18 = ?
    

    输入样例3:

    -100 blabla bla...33
    

    输出样例3:

    ? + ? = ?
    


    细心就简单,否则挺麻烦的
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        string s;
        int A = 0, B = 0, base;
        int flag = 0, flag1 = 0, flag2 = 0;
        getline(cin, s);
        for (int i = 0; i < s.length(); i++)
        {
            if (s[i] == ' '&&i == 0)//A可以为空格
            {
                flag = 1;
            }
            else if (s[i] == '-'&&i == 0)//A为负数
                flag = 1;
            else if (s[i] == ' '&&flag2==0)//AB间隔
            {
                flag2 = 1;//标记第一个空格
                base = 1;
                if (s[i + 1] == '-')//B为负数
                    flag1 = 1;
                for (int j = i-1; j>=0&&flag==0; j--)
                {
                    if (i > 4)
                    {
                        flag = 1;
                        break;
                    }
                    else if (s[j] >= '0'&&s[j] <= '9')
                    {
                        A = A + base * (s[j] - '0');
                        base = base * 10;
                        continue;
                    }
                    else
                    {
                        flag = 1;
                        break;
                    }
                }
                base = 1;
                for (int j = s.length()-1; j >i&&flag1==0; j--)
                {
                    if (s.length() - 1 - i > 4)
                    {
                        flag1 = 1;
                        break;
                    }
                    else if (s[j] >= '0'&&s[j] <= '9')
                    {
                        B = B + base * (s[j] - '0');
                        base = base * 10;
                        continue;
                    }
                    else
                    {
                        flag1 = 1;
                        break;
                    }
                }
            }
    
        }
        if (A == 0||A>1000)
            flag = 1;
        if (B == 0||B>1000)
            flag1 = 1;
        if (flag == 1 && flag1 == 1)
            cout << "? + ? = ?";
        if (flag == 1 && flag1 == 0)
            cout << "? + " << B << " = ?";
        if (flag == 0 && flag1 == 1)
            cout << A << " + ? = ?";
        if (flag == 0 && flag1 == 0)
            cout << A << " + " << B << " = " << A + B;
        //system("pause");    
        return 0;
    }
  • 相关阅读:
    Civil 3D 二次开发 创建Civil 3D 对象—— 01 —— 创建几何空间点
    Civil 3D 二次开发 创建Civil 3D 对象—— 00 ——
    Civil 3D 二次开发 创建AutoCAD对象—— 01 —— 创建直线
    Civil 3D 二次开发 新建CLR项目出现错误C2143
    Civil 3D 二次开发 创建AutoCAD对象—— 00 ——
    了解AutoCAD对象层次结构 —— 6 ——块表记录
    datepicker97使用
    使用angular 外接 templateUrl,使用ng-include
    angularJs 遮罩
    网上找的有关css兼容问题
  • 原文地址:https://www.cnblogs.com/-citywall123/p/10619292.html
Copyright © 2011-2022 走看看