格式化数字
时间限制(C/C++):1000MS/3000MS 运行内存限制:65536KByte
总提交:352 测试通过:112
总提交:352 测试通过:112
描述
给你一个数字,请去掉多余的前导零和后继零(如果小数点多余,也要去掉),将它格式化成常规的数字格式。如0001000.0100000应该格式化为1000.01。
输入
输入包含多组测试样例,每组数据包含一个数字(不超过1000位),每个数字占一行。
输出
对于每组输入数据,请输出该数字的常规格式,每组输出占一行。
样例输入
0001000.0100000
010.000
样例输出
1000.01
10
提示
要充分考虑各种情况。
题目来源
ben
解题思路:不多说,考虑好所有情况
AC代码:
#include<stdio.h>
#include<string.h>
int main()
{
char f[1005];
int len,flag1,flag2,i,j;
while(scanf("%s",f)!=EOF)
{
len=strlen(f);
flag1=flag2=0;
int start=0,end=len-1,mid=-1;
for(i=0;i<len;i++)
{
if(f[i]=='.')
{
flag1=1;
mid=i;
}
if(f[i]!='0')
flag2=1;
}
if(flag2==0)
{
printf("0\n");
continue;
}
while(f[start]=='0')
start++;
if(flag1)
while(f[end]=='0')
end--;
if(start==mid)
start--;
if(end==mid)
end--;
for(j=start;j<=end;j++)
{
if(j==-1)
printf("0");
else
printf("%c",f[j]);
}
printf("\n");
}
return 0;
}