给你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

最新文章

  1. 在Mac中像Windows一样查看Tomcat控制台信息
  2. IIS HTTP 错误 404.17 - Not Found HTTP 错误 404.2 解决方法
  3. Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList&lt;T&gt;
  4. ZJOI2016 Round 1 之前
  5. IE6,7 margin-bottom失效bug
  6. Qt Style Sheet实践(三):QCheckBox和QRadioButton
  7. 转:实体ToolTip显示XData
  8. shell编程的一些例子5
  9. yii gridview columns value 内容如何换行 &amp; 链接
  10. Windows API中几个函数的总结
  11. bootstrop之模态框关闭
  12. 初探JavaScript魅力(二)
  13. js 客户端打印html 并且去掉页眉、页脚
  14. 关于linux下的嵌入式文件系统以及flash文件系统选择
  15. python微信自动回复
  16. 「2017 山东一轮集训 Day5」苹果树
  17. 开源框架.netCore DncZeus学习(一)npm安装
  18. 存储过程TYPE类型参数调试
  19. [hihoCoder] #1093 : 最短路径&#183;三:SPFA算法
  20. 当Appium中遇到alert(python篇)

热门文章

  1. 条款一:尽量使用const、inline而不是#define
  2. 开发:异常收集之 DB2建表相关问题
  3. Android多线程更新UI的方式
  4. mysql 转换编码方式
  5. B. Flag of Berland
  6. linux下jiffies定时器和hrtimer高精度定时器【转】
  7. docker随谈
  8. 【Android进度条】三种方式实现自定义圆形进度条ProgressBar
  9. Linux 下的静态(函数)库、动态(函数)库
  10. [Codeforces 545E] Paths and Trees