@sensitive-cs
2016-10-19T09:47:40.000000Z
字数 1279
阅读 1049
给出一个数,让它转换为要求的格式之后输出。
我的代码您们可能看不懂,所以我尽量讲多一点。
先用字符串来保存输入的数,
首先判断这个数是否为负数,
若为负数,则搜遍整个字符串是否存在小数点,若存在,则标志小数点所在的位置,小数点之前的位置加();
至于打逗号的问题,则是我在各种情况之下模拟了之后犯了无数次错才发现规律,具体的在代码中可以看到。
有不懂的话,可以问本菜。
#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]);elseprintf(".%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]);elseprintf(".%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;}