团体程序设计天梯赛-练习集——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

相关推荐
anlog1 小时前
ini文件读取,EXE同目录文件读取
c#·ini
736c2 小时前
C语言-结构体 08
c语言
rockey6272 小时前
AScript之编译递归函数
c#·.net·script·动态脚本
736c2 小时前
C语言-数组 07
c语言·开发语言
shehuiyuelaiyuehao2 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
kakakahahahaha3 小时前
【Windows】C盘低空间反复复发的排查与扩容边界
c语言·windows·电脑·笔记本电脑·内容运营·软件需求
203号居民4 小时前
LeetCode hot 100 — 141. 环形链表2
算法·leetcode·链表
玖玥拾4 小时前
LeetCode 202 快乐数
算法·leetcode
LuminousCPP4 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
Brilliantwxx5 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络