@sensitive-cs
2016-10-19T17:47:40.000000Z
字数 1279
阅读 886
给出一个数,让它转换为要求的格式之后输出。
我的代码您们可能看不懂,所以我尽量讲多一点。
先用字符串来保存输入的数,
首先判断这个数是否为负数,
若为负数,则搜遍整个字符串是否存在小数点,若存在,则标志小数点所在的位置,小数点之前的位置加();
至于打逗号的问题,则是我在各种情况之下模拟了之后犯了无数次错才发现规律,具体的在代码中可以看到。
有不懂的话,可以问本菜。
#include <stdio.h>
char a[150];
int main(void)
{
int flag = 0,aft = 0,sum = 0,co,i,cal;
char mark = '-';
scanf("%s",a);
if (a[0] == mark)
{
while (a[sum] != '\0')
{
sum++;
}
for (i = 1;i < sum;i++)
{
if (a[i] == '.')
{
flag = 1;
co = i;
}
}
if (flag)
{
cal = sum - co - 1;
printf("($");
for (i = 1;i < co;i++)
{
if ((co - i) % 3 == 0 && i != 1 && i != co - 1)
printf(",");
printf("%c",a[i]);
}
if (cal >= 2)
printf(".%c%c)\n",a[co+1],a[co+2]);
else
printf(".%c0)\n",a[co+1]);
}
else
{
printf("($");
for (i = 1;i < sum;i++)
{
if ((sum - i) % 3 == 0 && i != 1)
printf(",");
printf("%c",a[i]);
}
printf(".00)\n");
}
}
else
{
while (a[sum] != '\0')
{
sum++;
}
for (i = 0;i < sum;i++)
{
if (a[i] == '.')
{
flag = 1;
co = i;
}
}
if (flag)
{
cal = sum - co - 1;
printf("$");
for (i = 0;i < co;i++)
{
if ((co - i) % 3 == 0 && i != 0)
printf(",");
printf("%c",a[i]);
}
if (cal >= 2)
printf(".%c%c\n",a[co+1],a[co+2]);
else
printf(".%c%d\n",a[co+1],0);
}
else
{
printf("$");
for (i = 0;i < sum;i++)
{
if ((sum - i) % 3 == 0 && i != 0)
printf(",");
printf("%c",a[i]);
}
printf(".00\n");
}
}
return 0;
}