团体程序设计天梯赛-练习集——L1-025 正整数A+B

一年之际在于春,新年的第一天,大家敲代码了吗?哈哈

前言

这道题分值是15分,值这个分,有一小点运算,难度不大,虽然说做出来了,但是有两个小疑点。

L1-025 正整数A+B

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

输入格式:

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

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

输出格式:

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

输入样例1:

c 复制代码
123 456

输出样例1:

c 复制代码
123 + 456 = 579

输入样例2:

c 复制代码
22. 18

输出样例2:

c 复制代码
? + 18 = ?

输入样例3:

c 复制代码
-100 blabla bla...33

输出样例3:

c 复制代码
? + ? = ?

OK,以上就是所有的题目内容了,题目所说的是计算两个正整数加分,两个正整数的取值范围是1~1000,不符合以上要求的值在输出,结果对应的也输出

下面看看代码吧

代码

c 复制代码
#include <stdio.h>
#include <string.h>
int panduan(char num[])//计算并且判断输入的数字是否符合要求
{
    int number = 0;
    int l = strlen(num);
    if(l>4) return -1;\\长度
    else
    {
        for(int i = 0;i < l;i++)
        {
            if(num[i] >= '0'&&num[i] <= '9')number = number*10 + (num[i] - '0');//符合要求计算
            else return -1;
        }
    }
    if(number < 1||number > 1000)return -1;//所有-1都是不符合要求的
   else return number;//返回输入的数字
}

int main()
{
    char num1[100] = {0};
    char num2[100] = {0};//定义两个数组存储输入的数字
    scanf("%s ",&num1);
    // gets(num1);
    gets(num2);//这里有一个小问题,后面展开说一下
    int number1 = panduan(num1);
    int number2 = panduan(num2);//接收两个输入的值
    //判断并且输出,为-1的话就输出?,不是-1的话就正常输出
    if(number1 == -1&&number2 == -1)printf("? + ? = ?");
    else if(number1 == -1&&number2)printf("? + %d = ?",number2);
    else if(number1&&number2 == -1)printf("%d + ? = ?",number1);
    else if(number1&&number2)printf("%d + %d = %d",number1,number2,number1+number2);
}

上面在输入的地方,注释掉了一部分,那里有一点问题,感觉这几个输入都差不多一样的分别来看一下,大家也想一下为什么不行

c 复制代码
scanf("%s %s",&num1,&num2);

以上这种输入的话,会得到

的一个结果

如果

c 复制代码
gets(num1);
gets(num2);

这样输入的话,就会得到下面

的结果

都会出错,但是都有分,下面的这个正确的好像是输出了一个? + ? = ?的两分,说实话没什么用,跟没分没什么区别了也

以上所有代码均为自己编写,本人水平有限,如果有哪里出错或者有更好的解法可以与我私信或在评论区里进行讨论

上一题:团体程序设计天梯赛-练习集------L1-024 后天

下一题:团体程序设计天梯赛-练习集------L1-026 I Love GPLT

相关推荐
feng_you_ying_li几秒前
C++11,lambda,包装器
开发语言·数据结构·c++
云栖梦泽2 分钟前
Linux内核与驱动:11.设备树
linux·c++
Shadow(⊙o⊙)2 分钟前
C学习历程的总汇
c语言·学习·jquery
傻啦嘿哟4 分钟前
Python 操作 Word 页眉页脚完整指南
开发语言·c#
小O的算法实验室5 分钟前
2022年IEEE TITS,基于 VRP 优化模型的城市轨道交通智能物流车辆配送路径优化,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
艾莉丝努力练剑6 分钟前
【Linux线程】Linux系统多线程(五):<线程同步与互斥>线程互斥
linux·运维·服务器·c语言·c++·学习·ubuntu
kyle~8 分钟前
FANUC机械臂---R寄存器
开发语言·c++·机器人·fanuc
_日拱一卒11 分钟前
LeetCode:206反转链表
算法·leetcode·链表
chao18984412 分钟前
C# 读取和绘制 Shapefile (SHP) 文件
c#
山甫aa15 分钟前
哈希表的变化(链表数组强化)----从零开始的数据结构
数据结构·哈希算法·散列表