满课一天,做25的时候还疯狂WA,进度可以说是很慢了 哭泣

------------------------------------------------L1-025----------------------------------------------------------

正整数A+B

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

输入格式:

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

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

输出格式:

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

输入样例1:

 

输出样例1:

 +  = 

输入样例2:

. 

输出样例2:

? +  = ?

输入样例3:

- blabla bla...

输出样例3:

? + ? = ?

------------------------------------------------L1-025----------------------------------------------------------

注解:这道题WA了我很久,直到某节英语课突然通关哈哈哈哈哈,这道题要注意很多东西:

①A和B同时输入,识别为负数则要输出问号

②A和B输入的大小不超过1000,否则要输出问号

③A可以为空,B不为空

④要处理A+B的结果,即要把字符串转为整型

⑤识别数字,如果乱码得输出为问号。

· 代码分块:

  第一步:构建结构体存储A和B的内容及转码int值还有是否合法:

struct T{
char temp[];
int is_empty = ;
int ans = ;
}temp_1,temp_2;

  第二步:对结构体进行审核处理,构建特殊函数对结构体处理:

  这里要注意:千万不能提前把0吃了,因为可能会出现04 08这样的情况,这样是符合题目条件的,输出4+8=12,因为得从sum加和结果判断是否为0,而不是凭输入。

void TempToAns(struct T &t)
{
int i = ;
t.ans = ;
base = ;
if(t.temp[] == ) t.is_empty = ,i = ;
if(t.temp[] == ) t.is_empty = , i = ;
for(int j = strlen(t.temp)-;j>=i;j--)
{
if((''<= t.temp[j]) && (t.temp[j] <= ''))
{
t.ans+=base*(t.temp[j] - );
base*=;
}
else
{
t.is_empty = ;
break;
}
}
if(t.ans > || t.ans <=) t.is_empty = ;
}

  第三步:将一个大数组进行临时存储所有字符,然后循环扫第一个空格,这里千万不能拆成两个输入,不然A无法获取为空值,就会过不了其中一个测试点。

    char temp[];
int up;
int have = ;
cin.getline(temp,);
for(int i = ;;i++)
{
if(temp[i] == ' ' && have == )
{
up = i;
have = ;
continue;
}
if(i>=strlen(temp)) break;
if(have == ) temp_1.temp[i] = temp[i];
else temp_2.temp[i-up-] = temp[i];
}

  第四步,调用结构体处理函数:

    TempToAns(temp_1);
TempToAns(temp_2);

  第五步:进行输出,通过判断temp_1(或temp_2).is_empty是否为1来判断是否输出?

    if(temp_1.is_empty == ) printf("?");
else
{
if(temp_1.ans == )
{
temp_1.is_empty = ;
printf("?");
}
else printf("%d",temp_1.ans);
}
printf(" + ");
if(temp_2.is_empty == ) printf("?");
else printf("%d",temp_2.ans);
printf(" = ");
if(temp_1.is_empty == && temp_2.is_empty == ) printf("%d\n",temp_1.ans+temp_2.ans);
else printf("?\n");

· AC代码:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<cstring>
using namespace std; struct T{
char temp[];
int is_empty = ;
int ans = ;
}temp_1,temp_2; char temp;
int base;
void TempToAns(struct T &t)
{
int i = ;
t.ans = ;
base = ;
if(t.temp[] == ) t.is_empty = ,i = ;
if(t.temp[] == ) t.is_empty = , i = ;
for(int j = strlen(t.temp)-;j>=i;j--)
{
if((''<= t.temp[j]) && (t.temp[j] <= ''))
{
t.ans+=base*(t.temp[j] - );
base*=;
}
else
{
t.is_empty = ;
break;
}
}
if(t.ans > || t.ans <=) t.is_empty = ;
} int main()
{
char temp[];
int up;
int have = ;
cin.getline(temp,);
for(int i = ;;i++)
{
if(temp[i] == ' ' && have == )
{
up = i;
have = ;
continue;
}
if(i>=strlen(temp)) break;
if(have == ) temp_1.temp[i] = temp[i];
else temp_2.temp[i-up-] = temp[i];
}
TempToAns(temp_1);
TempToAns(temp_2);
if(temp_1.is_empty == ) printf("?");
else
{
if(temp_1.ans == )
{
temp_1.is_empty = ;
printf("?");
}
else printf("%d",temp_1.ans);
}
printf(" + ");
if(temp_2.is_empty == ) printf("?");
else printf("%d",temp_2.ans);
printf(" = ");
if(temp_1.is_empty == && temp_2.is_empty == ) printf("%d\n",temp_1.ans+temp_2.ans);
else printf("?\n");
return ;
}

------------------------------------------------L1-026----------------------------------------------------------

I Love GPLT

这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了。

所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。

输入样例:

输出样例:

I

L
o
v
e G
P
L
T

注意:输出的两个空行中各有一个空格。

------------------------------------------------L1-026----------------------------------------------------------

注解 :水题,不知道意义在哪

#include<stdio.h>
#include<string.h> char N[]={"I Love GPLT"}; int main()
{
for(int i = ;i<;i++)
printf("%c\n",N[i]);
return ;
}

注:如果有更好的解法,真心希望您能够评论留言贴上您的代码呢~互相帮助互相鼓励才能成长鸭~~

『ACM C++』 PTA 天梯赛练习集L1 | 025-026的更多相关文章

  1. 『ACM C++』 PTA 天梯赛练习集L1 | 001-006

    应师兄要求,在打三月底天梯赛之前要把PTA上面的练习集刷完,所以后面的时间就献给PTA啦~ 后面每天刷的题都会把答案代码贡献出来,如果有好的思路想法也会分享一下~ 欢迎大佬提供更好的高效率算法鸭~ - ...

  2. 『ACM C++』 PTA 天梯赛练习集L1 | 052-053

    今日刷题,水题水题 ------------------------------------------------L1-052------------------------------------ ...

  3. 『ACM C++』 PTA 天梯赛练习集L1 | 048-49

    今日刷题048-049 ------------------------------------------------L1-048---------------------------------- ...

  4. 『ACM C++』 PTA 天梯赛练习集L1 | 040-41

    近期安排 校赛3.23天梯赛3.30华工校赛 4.21省赛 5.12 ------------------------------------------------L1-040----------- ...

  5. 『ACM C++』 PTA 天梯赛练习集L1 | 021-024

    忙疯警告,这两天可能进度很慢,下午打了一下午训练赛,训练赛的题我就不拿过来的,pta就做了一点点,明天又是满课的一天,所以进度很慢啦~ -------------------------------- ...

  6. 『ACM C++』 PTA 天梯赛练习集L1 | 007-011

    真的是忙头晕了,学业.ACM打题.班级活动.自学新东西,哇这充实的大学~ ------------------------------------------------L1-007--------- ...

  7. 『ACM C++』 PTA 天梯赛练习集L1 | 044-45

    记录今日刷题 ------------------------------------------------L1-044--------------------------------------- ...

  8. 『ACM C++』 PTA 天梯赛练习集L1 | 042-43

    记录刷题情况 ------------------------------------------------L1-042--------------------------------------- ...

  9. 『ACM C++』 PTA 天梯赛练习集L1 | 036-037

    这几天比较忙,所以随便做做水题了,得赶紧把英剧搞完啊啊啊啊啊啊 ------------------------------------------------L1-036-------------- ...

  10. 『ACM C++』 PTA 天梯赛练习集L1 | 029-033

    哈哈,今天开始我也是学车人了~ 开始一千多道疯狂刷题~ ------------------------------------------------L1-029------------------ ...

随机推荐

  1. SSO单点登录实现原理

    SSO单点登录实现原理 只是简要介绍下基于java的实现过程,不提供完整源码,明白了原理,我相信你们可以自己实现.sso采用客户端/服务端架构,我们先看sso-client与sso-server要实现 ...

  2. 我的MBTI小测试

    今天做了自己的MBTI测试,选了93道题版本的,测试结果是ESFP表演者型——有我在就有笑声.这个测试很有趣,我也觉得很神奇. 一.我的MBTI图形 二.才储分析:我的性格类型倾向为“ ESFP ”( ...

  3. Dancing Line、网易蜗牛读书——创新性分析

    Dancing Line——视听效果极佳的解压游戏 介绍:跳舞的线是由猎豹移动公司和BoomBitInc制作的一款游戏,发行于2016年12月12日. 游戏规则:跟着音乐的节奏点击屏幕,完成转向,躲避 ...

  4. centors7 elasticsearch6.3安装以及问题记录

    1.安装elasticsearch . 安装系统:centors7 1.下载安装包 官网地址:https://www.elastic.co/downloads/past-releases 2.mac文 ...

  5. Anaconda管理多版本的python环境

    通过Conda的环境管理功能,我们能同时安装多个不同版本的Python,并能根据需要自由切换.下面我将给大家分享一下,新增Python版本,切换,再切回主版本的详细过程. 方法/步骤   1 首先确保 ...

  6. Windows10禁用update

    1.运行 gpedit.msc 或搜索 组策略 ,点 计算机配置—管理模板—Windows组件—Windows更新—配置自动更新 ,设置“已禁用”.2.点 控制面板—系统和安全—管理工具 ,点 服务 ...

  7. FTP上传和WEB上传的区别

       说区别之前,咱先说说什么是上传?上传就是将信息从个人计算机(本地计算机)传递到中央计算机(远程计算机)系统上,让网络上的人都能看到.将制作好的网页.文字.图片等发布到互联网上去,以便让其他人浏览 ...

  8. python面向对象编程(2)—— 实例属性,类属性,类方法,静态方法

    1  实例属性和类属性 类和实例都是名字空间,类是类属性的名字空间,实例则是实例属性的名字空间. 类属性可通过类或实例来访问.只有通过类名访问时,才能修改类属性的值. 例外的一种情况是,当类属性是一个 ...

  9. 乘风破浪:LeetCode真题_016_3Sum Closest

    乘风破浪:LeetCode真题_016_3Sum Closest 一.前言      这一次,问题又升级了,寻找的是三个数之和最靠近的某个数,这是非常让人难以思考的,需要把三个数相加之后和最后给的目标 ...

  10. 沉淀,再出发:XPath的理解和使用

    沉淀,再出发:XPath的理解和使用 一.前言   在很多查找的场合之下,我们需要使用正则表达式和其他的查找工具来进行内容的匹配和查找,特别是对于xml文件,我们可以使用xpath等工具来进行查找,通 ...