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 ...
随机推荐
- 在Linux中安装containerd作为kubernetes的容器运行时
概述 从kubernetes1.24开始的版本移除了内置的docker支持,用户可以自行选择需要使用的容器运行时,比如containerd.CRI-O.Docker Engine等等,这里我们采用二进 ...
- P7213 [JOISC2020] 最古の遺跡 3 乱写
不想写题解了,把写在草稿纸上的东西整理了一下 感谢 crashed 大佬的题解与对本人问题的回答,没有他我就不会搞懂这道神仙计数题.
- conda环境下使用nvcc -V报错nvcc: command not found的一种解决方法
前言 缘起 实验室的学弟问我为什么他使用nvcc命令报错,起先我以为他用的是老师给的root账户,按照参考文献1便可以解决问题. 但由于并非root用户,/usr/local下没有cuda,于是便 ...
- 机器学习算法(八):基于BP神经网络的乳腺癌的分类预测
机器学习算法(八):基于BP神经网络的乳腺癌的分类预测 1.算法简介和应用 1.1 算法简介 BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学 ...
- 使用nw.js打包以后的web项目 发布客户端
一.下载nw.js 直接前往官网下载即可 https://nwjs.io/downloads/ 二.封装最简单的客户端 nw.js下载完成后,在任意位置新建文件夹,例如nwtest,然后在文件夹中新建 ...
- argparser Python包使用
argparser Python包使用 导入 import argparse 定义parser对象(参数为介绍) parser = argparse.ArgumentParser('test pars ...
- 基于FMCW的毫米波雷达简介
- VScode连接GPU服务器进行深度学习
VScode连接GPU服务器进行深度学习 最近用台式机跑一些小的深度学习项目,发现越来越慢了,由于一些原因,有时候需要我进行现场作业但是我的笔记本是轻薄本(Thinkpad YYDS)不带显卡,百 ...
- 【FAQ】关于华为推送服务因营销消息频次管控导致服务通讯类消息下发失败的解决方案
一. 问题描述 使用华为推送服务下发IM消息时,下发消息请求成功且code码为80000000,但是手机总是收不到消息: 在华为推送自助分析(Beta)平台查看发现,消息发送触发了频控. 二. 问题原 ...
- Rust中的智能指针:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak<T>
Rust中的智能指针是什么 智能指针(smart pointers)是一类数据结构,是拥有数据所有权和额外功能的指针.是指针的进一步发展 指针(pointer)是一个包含内存地址的变量的通用概念.这个 ...