• 7-184 正整数A+B (15 分)


    7-184 正整数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 <stdio.h>
    #include <string.h>
    #define MAX 100
    
    int judge(const char *);
    int main (){
        char str[MAX],a[MAX],b[MAX];
        scanf("%s ",a);
        gets(b);
        int ai , bi ;
        ai =  judge(a);
        bi = judge(b);
        if ( ai == -1 && bi == -1)
            printf("? + ? = ?");
        else if (ai == -1 )
            printf("? + %d = ?",bi);
        else if (bi == -1)
            printf("%d + ? = ?",ai);
        else
            printf("%d + %d = %d",ai,bi,ai+bi);
    
        return 0  ;
    }
    int judge( const char  *t){//判断并取值
        int i,ret,len;
        ret = 0;
        len = strlen(t);
        if (len <1 || len >4)
            ret = -1;
        else {
            for ( i=0 ; i<len ; i++){
                if ( t[i] >= '0' && t[i] <= '9')
                    ret = ret * 10 + t[i] - '0';
                else {
                    ret = -1;
                    break;
                }
            }
        }
        if ( ret < 1 || ret > 1000)
            ret = -1;
        return ret ;
    }
  • 相关阅读:
    1、嵌入式Linux开发环境搭建
    JAVA_SE基础——1.JDK&JRE下载及安装
    数组
    Java方法的概述
    Java流程控制
    初识Java
    windows常用的快捷键和dos命令
    window10 Java JDK环境变量配置
    jQuery学习 (实现简单选项卡效果练习test)
    jQuery学习 (实现内联下拉菜单效果(一个小test)
  • 原文地址:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/13418379.html
Copyright © 2020-2023  润新知