[关闭]
@sensitive-cs 2016-10-19T09:47:40.000000Z 字数 1279 阅读 803

H - Help Kingdom of Far Far Away 2

分析:

给出一个数,让它转换为要求的格式之后输出。

思路:!!!

我的代码您们可能看不懂,所以我尽量讲多一点。
先用字符串来保存输入的数,
首先判断这个数是否为负数,
若为负数,则搜遍整个字符串是否存在小数点,若存在,则标志小数点所在的位置,小数点之前的位置加();
至于打逗号的问题,则是我在各种情况之下模拟了之后犯了无数次错才发现规律,具体的在代码中可以看到。
有不懂的话,可以问本菜。

代码:

  1. #include <stdio.h>
  2. char a[150];
  3. int main(void)
  4. {
  5. int flag = 0,aft = 0,sum = 0,co,i,cal;
  6. char mark = '-';
  7. scanf("%s",a);
  8. if (a[0] == mark)
  9. {
  10. while (a[sum] != '\0')
  11. {
  12. sum++;
  13. }
  14. for (i = 1;i < sum;i++)
  15. {
  16. if (a[i] == '.')
  17. {
  18. flag = 1;
  19. co = i;
  20. }
  21. }
  22. if (flag)
  23. {
  24. cal = sum - co - 1;
  25. printf("($");
  26. for (i = 1;i < co;i++)
  27. {
  28. if ((co - i) % 3 == 0 && i != 1 && i != co - 1)
  29. printf(",");
  30. printf("%c",a[i]);
  31. }
  32. if (cal >= 2)
  33. printf(".%c%c)\n",a[co+1],a[co+2]);
  34. else
  35. printf(".%c0)\n",a[co+1]);
  36. }
  37. else
  38. {
  39. printf("($");
  40. for (i = 1;i < sum;i++)
  41. {
  42. if ((sum - i) % 3 == 0 && i != 1)
  43. printf(",");
  44. printf("%c",a[i]);
  45. }
  46. printf(".00)\n");
  47. }
  48. }
  49. else
  50. {
  51. while (a[sum] != '\0')
  52. {
  53. sum++;
  54. }
  55. for (i = 0;i < sum;i++)
  56. {
  57. if (a[i] == '.')
  58. {
  59. flag = 1;
  60. co = i;
  61. }
  62. }
  63. if (flag)
  64. {
  65. cal = sum - co - 1;
  66. printf("$");
  67. for (i = 0;i < co;i++)
  68. {
  69. if ((co - i) % 3 == 0 && i != 0)
  70. printf(",");
  71. printf("%c",a[i]);
  72. }
  73. if (cal >= 2)
  74. printf(".%c%c\n",a[co+1],a[co+2]);
  75. else
  76. printf(".%c%d\n",a[co+1],0);
  77. }
  78. else
  79. {
  80. printf("$");
  81. for (i = 0;i < sum;i++)
  82. {
  83. if ((sum - i) % 3 == 0 && i != 0)
  84. printf(",");
  85. printf("%c",a[i]);
  86. }
  87. printf(".00\n");
  88. }
  89. }
  90. return 0;
  91. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注