L1-025 正整数A+B (15 分)
1.题目描述:
题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。
输入格式:
输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。
注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。
输出格式:
如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?。
输入样例1:
123 456
结尾无空行
输出样例1:
123 + 456 = 579
结尾无空行
输入样例2:
22. 18
输出样例2:
? + 18 = ?
输入样例3:
-100 blabla bla...33
输出样例3:
? + ? = ?
2.代码展示:
#include<bits/stdc++.h>
using namespace std;
//用于判断字符串是否为数字
bool isNum(string s){
for(int i=0;s[i];i++)
if(s[i]-'0'<0 || s[i]-'0'>9)return false;
return true;
}
int main(){
string s1,s2,s;
getline(cin,s);//读入一整串字符串
//找到第一个空格,空格左边赋给s1字符串,空格右边赋给s2字符串
for(int i=0;s[i];i++){
if(s[i]==' '){
s1=s.substr(0,i);
s2=s.substr(i+1);
break;
}
}
//如果两个字符串都是数字,则对其是否在区间[1,1000]进行判断
if(isNum(s1)&&isNum(s2)){
long long a1=stoi(s1);
long long a2=stoi(s2);
int flag3=1,flag4=1;
//如果不满足条件,则将字符串变为"?",方便输出
if(a1<1||a1>1000){
s1="?";
flag3=0;
}
//如果不满足条件,则将字符串变为"?",方便输出
if(a2<1||a2>1000){
s2="?";
flag4=0;
}
//如果满足在区间[1,1000]的条件,则计算他们的和
if(flag3&&flag4){
long long res=a1+a2;
cout<<s1<<" + "<<s2<<" = "<<res<<endl;
}
//否则输出如下
else cout<<s1<<" + "<<s2<<" = ?"<<endl;
return 0;
}
//控制正确的输出
if(!isNum(s1) && isNum(s2))s1="?";
if(isNum(s1) && !isNum(s2))s2="?";
if(!isNum(s1) && !isNum(s2)){
s1="?",s2="?";
}
cout<<s1<<" + "<<s2<<" = ?"<<endl;
return 0;
}
3.注意:

注意:
难点:
1)A可能是空格、0、负数、乱码;B除了不能为空字符串其他一样。
2)A,B可能为整数,但是范围并不在[1,1000]中。(对应于测试点5和6)。
输入时用getline接受所有字符串,根据第一个空格为A、B分隔点找出A、B赋值给变量;
原题链接:PTA | 程序设计类实验辅助教学平台
L1-025 正整数A+B (15 分)的更多相关文章
- L1-050 倒数第N个字符串 (15分)
L1-050 倒数第N个字符串 (15分) 给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增.例如当 L 为 3 时, ...
- PAT 乙级 1091 N-自守数 (15 分)
1091 N-自守数 (15 分) 如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×922=25392,而 25392 的末尾两位正好是 ...
- PAT 乙级 1086 就不告诉你 (15 分)
1086 就不告诉你 (15 分) 做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三.”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积. 输入格式 ...
- PAT 乙级 1071 小赌怡情(15 分)
1071 小赌怡情(15 分) 常言道“小赌怡情”.这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大还是小:玩家下注 t 个筹码后,计算机给出第二个数.若玩 ...
- 求交错序列前N项和(15 分)
7-2 求交错序列前N项和(15 分) 本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和. 输入格式: 输入在一行中给出一个正整数N. 输出格式: 在 ...
- 【PAT】1016 部分A+B(15 分)
1016 部分A+B(15 分) 正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA.例如:给定 A=3862767,DA=6,则 A ...
- B1091 N-自守数 (15分)
B1091 N-自守数 (15分) 如果某个数 \(K\)的平方乘以\(N\) 以后,结果的末尾几位数等于 \(K\),那么就称这个数为"\(N\)-自守数".例如 \(3×92 ...
- B1086 就不告诉你 (15分)
B1086 就不告诉你 (15分) 做作业的时候,邻座的小盆友问你:"五乘以七等于多少?"你应该不失礼貌地围笑着告诉他:"五十三."本题就要求你,对任何一对给定 ...
- B1081 检查密码 (15分)
B1081 检查密码 (15分) 本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能.该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母.数字和小数点 .,还必须既有字母 ...
- B1076 Wifi密码 (15分)
B1076 Wifi密码 (15分) 下面是微博上流传的一张照片:"各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B ...
随机推荐
- Android笔记--在活动之间传递消息
显式Intent和隐式Intent Intent--各个组件信息沟通的桥梁 组成部分: 显式Intent:--精确匹配 具体实现: 1.在Intent的构造函数中指定 2.调用意图对象的setClas ...
- day08-自定义转换器&处理JSON&内容协商
自定义转换器&处理JSON&内容协商 1.自定义转换器 1.1基本介绍 SpringBoot 在响应客户端请求时,将提交的数据封装成对象时,使用了内置的转换器,也就是自动帮我们封装对象 ...
- 小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我
开发php,还是找个专业的Ide较好,vscode毕竟在php上不专业,需要下载各种插件才行,还不支持多线程调试,因此小编下载了phpstorm,打算以后用phpstorm来开发php项目,断点调试代 ...
- 手机号码归属地 API 实现防止骚扰电话,看这一篇就够了(内附设计思路和代码)
在当今时代,骚扰电话已经成为了很多人日常生活中的一个常见问题,严重影响了人们的工作和生活. 为了避免这种情况的发生,企业和机构可以采用手机号码归属地 API,以提供更好的电话服务,减少骚扰电话的出现 ...
- urllib.parse的使用
urllib简介 urllib是pyhton自带的标准库用于网络请求库,无需安装,直接引用 通常用于爬虫开发,API(应用程序编程接口)数据获取和测试 urllib库的4大模块 urllib.requ ...
- 深度学习之PyTorch实战(4)——迁移学习
(这篇博客其实很早之前就写过了,就是自己对当前学习pytorch的一个教程学习做了一个学习笔记,一直未发现,今天整理一下,发出来与前面基础形成连载,方便初学者看,但是可能部分pytorch和torch ...
- [CTF学习笔记]net-pack(WinShark)
题目:shark on wire 1 Description We found this packet capture. Recover the flag. 思路 这里懂得了winshark的一些基本 ...
- Goalng:基础复习一遍过
Go(又称Golang)是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言. 剖析 Hello world 新建文件 main.go 写入以下内容: package ma ...
- Python之进程管理
使用python创建进程 from multiprocessing import Process # 导入进程模块 import time # 定义一个函数,测试创建进程使用 def task(nam ...
- Bootstrapd导航条使用
要想在程序中集成Bootstrap,显然要对模板做所有必要的改动.不过,更简单的方法是使用一个名为Flask-Bootstrap 的Flask 扩展,简化集成的过程. 安装:Flask-Bootstr ...