给你100块钱

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

小光见到昨晚旭能神没拿到一血,又损失了一百块,很同情他。但是为了不表现出自己在同情他,于是对他说:“我最近碰到了难题,一直没有AC,如果你能第一个帮我AC掉,我就给你100块钱。题目就是:给定一个实数,输出它的相反数。”

Input:

输入包含多组测试数据,每组数据包含一个实数(100位以内)。输入的数据最多只包含一个负号。

Output:

对于每组数据,输出它的相反数,占一行。

Sample Input:

0
-0.1
00.10

Sample Output:

0
0.1
-0.1
解题思路:处理字符串,各种情况要面面俱到。很容易想到,用另外的数组a来保存相反数,每一次输入都将a数组元素全部赋为'\0',这有利于直接输出最后的新字符串。先判断第一个字符是否为'-',是的话先用flag标记true,然后去掉前导0,之后要判断i==len?表示全部为0(包含'-'、'+'、'.',但其实表示的是0)接下来判断是否有小数点,有点话就去掉尾部的0。剩下的分4种情况:
一、当s[i]!='.'时,如果flag为false,则a[k++]='-'先标记负号;①如果s[j]!='.',直接从i~j拷贝给a数组;②否则,先--j,去掉多余的'.',对剩下的整数部分进行拷贝;
二、当s[i]=='.'时,同样如果flag为false,则a[k++]='-'先标记为负号;③如果s[j]!='.',先把0给整数部分,接下来直接拷贝i~j即可;④否则说明此时相当于0,直接a[k]='0'即可。
AC代码:
 #include<bits/stdc++.h>
using namespace std;
bool ispoint(char ch[],int len){ //用来判断是否有小数点,这样才可以去掉尾部多余的0
for(int i=;i<len;++i)
if(ch[i]=='.')return true;
return false;
}
int main()
{
char s[],a[];
int i,j,k,len;
bool flag;
while(cin>>s){
memset(a,'\0',sizeof(a));
k=i=;len=strlen(s);flag=false;
if(s[i]=='-'){flag=true;++i;}
while(s[i]=='')++i;
if(i==len){ //判断是否都为0的情况
cout<<""<<endl; //是的话直接输出0
continue; //继续输入
}
j=len-;
if(ispoint(s,len)){ //有小数点的话才去掉后导0
while(s[j]=='')--j;
}
if(s[i]!='.'){
if(!flag)a[k++]='-';
if(s[j]!='.'){
while(i<=j)a[k++]=s[i++];
}
else{
--j;
while(i<=j)a[k++]=s[i++];
}
}
else{ //表示当前为'.'
if(s[j]!='.'){
if(!flag)a[k++]='-';
a[k++]='';
while(i<=j)a[k++]=s[i++];
}
else a[k]=''; //直接赋值为'0'
}
cout<<a<<endl;
}
return ;
}
测试数据:输入:.1  00  -.2  10  -0.0  0.0
对应的输出:-0.1 0 0.2  -10  0 0

ACM_给你100块钱的更多相关文章

  1. 报表软件公司悬赏 BUG,100块钱1个的真实用意

    上一篇文章我讲到,报表软件FineReport一反常态,做了个<提BUG,拿现金>的活动,1个BUG,100块钱.纵览软件行业,如金蝶用友浪潮IBM微软等国内外巨头,均没有这样的举动去征集 ...

  2. 后台开发 3个题目 array_chunk, 100块钱找零钱(动态规划 dynamic programming), 双向循环链表 llist 删除节点

    1. array_chunk 实现 http://php.net/manual/en/function.array-chunk.php <?php function my_array_chunk ...

  3. 报表软件公司高价悬赏BUG,100块1个我真是醉了

    一直在用帆软的报表软件FineReport来做项目,也一直关注着这个公司的发展. 看到<提BUG,拿奖金>的这个活动,有些疑问和思考. 一般FineReport新版本在正式发布前,都会经过 ...

  4. JAVA题目:小芳的妈妈每天给她2.5元,她都会存起来,但是,每当这一天是存钱的第五题或者5的倍数的话,她都会去用掉6块钱。 问:至少经过多少天可以存到100块?

    1 /*题目:小芳的妈妈每天给她2.5元,她都会存起来, 2 但是,每当这一天是存钱的第五题或者5的倍数的话, 3 她都会去用掉6块钱. 4 问:至少经过多少天可以存到100块? 5 */ 6 /*分 ...

  5. 为了讲明白继承和super、this关键字,群主发了20块钱群红包

    摘要:以群主发红包为例,带你深入了解继承和super.this关键字. 本文分享自华为云社区<群主发红包带你深入了解继承和super.this关键字>,作者:共饮一杯无 . 需求 群主发随 ...

  6. 大三那年在某宝8块钱买的.NET视频决定了我的职业生涯

    前言 谨以此文献给那些还在大学中迷茫的莘莘学子们! 韩愈在<师说>中提出了作为师者应该做的三件事:传道.授业.解惑. 1.传道:培养学生的道德观 2.授业:传授学生专业技能 3.解惑:解答 ...

  7. 自己做站点(二) 20块钱搞定一个企业站:域名&amp;空间申请

    域名注冊的话,推荐大家用新网,由于申请费用确实非常低,但续费的价格还是比較高的,所以不妨多申请几年.打开站点: http://www.xinnet.com/ 注冊一个帐号,然后申请域名,你能够看到,费 ...

  8. 磐创AI GPU租用平台上线,1小时不到1块钱

    >> 小白也能看懂的PyTorch从入门到精通系列 << 今天磐创AI GPU租赁平台上线了!!!为大家解决用GPU难的问题!一块10G显存的GPU,1小时租用费用不到1块钱, ...

  9. JS计算十万块钱 分31期 利息万分之五 每个月的还款数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. VB程序逆向反汇编常见的函数(修改版)

    VB程序逆向常用的函数 1) 数据类型转换: a) __vbaI2Str    将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,7 ...

  2. strstr-strcat实现

    strstr 调用格式 #include <string.h> char *strstr(const char *haystack, const char *needle); 功能说明 该 ...

  3. js实现动态删除表格的行或者列-------Day57

    昨天记录了动态加入表格的一行,当然这个一行是指一行数据,也就是说一行多少列也是加上的,而且第几列的内容都能够加入上,先来回想下它的实现的关键点: 1.var row=table.insertRow() ...

  4. [Angular] Refactor Angular Component State Logic into Directives

    Allow the base toggle to be a tag (<toggle>) or attribute (<div toggle>). The <toggle ...

  5. 7.1 itertools--高效循环的创建函数

    7. 函数式编程库 本库主要提供了支持函数式编程的函数和类,以及提供通用调用对象. 7.1 itertools--高效循环的创建函数 本模块主要提供了迭代器方面的操作函数,跟语言API.Haskell ...

  6. js中window.onload 与 jquery中$(document.ready()) 測试

    js中window.onload 与 jquery中$(document.ready())差别,验证代码例如以下(调换js代码和Jquer代码书写顺序測试.执行结果一样.因此与代码书写位置没关系): ...

  7. Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode

    O(n)的算法就不说了,这题主要考查的是 O(logn)的算法. 有序数组easy想到使用二分查找解决.这题就是在二分基础上做一些调整.数组仅仅有一次翻转,能够知道原有序递增数组被分成两部分,这俩部分 ...

  8. 《modern operating system》 chapter 6 DEADLOCKS 笔记

    DEADLOCKS Both processes are blocked and will remain so forever. This situation is called a deadlock ...

  9. Android之——AIDL深入

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47071927 在上一篇博文<Android之--AIDL小结>中,我们 ...

  10. java8--网络编程(java疯狂讲义3复习笔记)

    重点复习一下网络通信和代理 java的网络通信很简单,服务器端通过ServerSocket建立监听,客户端通过Socket连接到指定服务器后,通信双方就可以通过IO流进行通信. 需要重点看的工具类:I ...