题目链接:点击打开链接
代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
#include<bits/stdc++.h>
int main()
{
char a[200];
// memset(a,'0',sizeof(a));
while( scanf("%s",a)!=EOF)
{
int s=strlen(a);
int flag=0;
if(a[0]=='-')
flag=1;
int y=0;
for(int i=0; i<s; i++)
{
if(a[i]!='0'&&a[i]!='.'&&a[i]!='-')
{
y=1;
break;
}
}
if(!y)
{
if(flag)
printf("(0.00)\n");
else
printf("0.00\n");
continue;
}
int flag1=-1;
for(int i=flag; i<s; i++)
{
if(a[i]=='.')
flag1=i;
}
int biaoji=-1;
if(flag1 !=-1)
{
for(int i=flag; i<=flag1; i++)
{
if(a[i]!='0')
{
biaoji=i;
break;
}
a[i]='*';
}
// if((a[flag1+3]-'0')>=5)
// {
// if(a[flag+2]=='9')
// {
// a[flag+2]='0';
//
// }
// a[flag1+2]+=1;
// }
int q;
if(a[flag1+3]>='5')
{
for(int i=flag1+2; i>=biaoji; i--)
{
q=i;
if(a[i]=='.')
continue;
if(a[i]!='9')
{
a[i]+=1;
break;
}
else
a[i]='0';
}
}
// printf("%d %d\n",q,biaoji);
if(flag==1)
printf("(");
int qq=0;
if(q==biaoji)
{
printf("1");
qq=1;
}
else if(biaoji==flag1)
printf("0");
int r1=0;
if((flag1+qq-biaoji)%3==0)
r1=1;
for(int i=biaoji; i<flag1; i++)
{
if((!((flag1-i)%3)))
{
if(!r1)
printf(",");
r1=0;
}
printf("%c",a[i]);
}
for(int i=flag1; i<flag1+3; i++)
{
if(i>=s)
printf("0");
else
printf("%c",a[i]);
}
if(flag==1)
printf(")");
printf("\n");
}
else
{
for(int i=flag;; i++)
{
if(a[i]!='0')
{
biaoji=i;
break;
}
a[i]='*';
}
if(flag==1)
printf("(");
int r=0;
if((s-biaoji)%3==0)
r=1;
for(int i=biaoji; i<s; i++)
{
if(!((s-i)%3))
{
if(!r)
printf(",");
r=0;
}
printf("%c",a[i]);
}
printf(".00");
if(flag==1)
printf(")");
printf("\n");
}
}
return 0;
}
看讨论区的数据了,大二,加油!!!
本文介绍了一种使用C语言处理输入字符串的方法,该方法能够将特定格式的小数和整数转换为统一的带有千位分隔符及固定小数位数的标准格式。通过对输入字符串的逐字符解析,实现了对特殊格式数字的有效识别与格式化输出。
821

被折叠的 条评论
为什么被折叠?



