满课一天,做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. 新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布

    Vue2.0 新手入门 — 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就 ...

  2. GNU工具 ar

    1.ar基本用法 ar命令可以用来创建.修改库,也可以从库中提出单个模块.库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member).原始文件的内容.模式.时间戳 ...

  3. sudo的安装

    关于mini版的centos7的是不能直接sudo命令的 下面我来说一下怎么让sudo命令生效 第一步 先切换到root用户: su -    第二步 visudo 给相应用户分配sudo的权限 第三 ...

  4. PHP中die()、exit()、return的区别

    1.die()是exit()的别名函数,用法与exit()完全相同,php手册上的说法是,“使用这种别名通常不是个好主意,因为这种别名可能会被完全废弃或更名,导致脚本难以移植到新版本的 PHP 上.” ...

  5. 算法之水仙花数(Java语言)

    概述 在数论中,水仙花数(Narcissistic number),也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯 ...

  6. RoCE、softRoCE与iWRAP

    RoCE - RDMA over Converged Ethernet 以太网在全球互联的广域网中毫无异议的老大,但在高带宽.低延时的专有网络领域却明显混不开.伴随网络融合概念兴起,IETF发布了DC ...

  7. javascript requestAnimationFrame vs. setTimeout

    在做javascript动画时,我们常常使用的方法就是通过setTimeout调用告诉浏览器每隔20ms执行一段js代码来对dom对象执行操作,这个貌似没有什么问题,但是当深入理解计算机的fps以及浏 ...

  8. asp.net mvc4 小问题

    最近在学习mvc4中间出现一些问题.留作记录.. 1.新建立的项目在vs2013中运行后会出现一个长轮询..这个叫browserLink 是vs2013中新加入的东西.至于更多解释.直接百度.. 关闭 ...

  9. MySQL 数据库--SQL语句优化

    explain查询和分析sql 开发中,为满足一业务功能,使用mysql书写sql时,一条sql往往有多种写法,那么我们就需要选择执行效率比较高的sql. 因此要比较分析sql的执行过程,且同一条sq ...

  10. U-Mail邮件营销可视化编辑设计邮件模板so easy

    相信每位看过军事演习的朋友都知道,现代战争越来越就像一场沙盘演练,真正做到了“运筹帷幄之中决战千里之外”,后方坐镇指挥战斗的能够将前线战场变得透明,这就叫“可视化战争”,做到了<孙子兵法> ...