帮我用C语言写一段代码实现在表示一些很长的数字时,为了便于观览,有时会用英文逗号‘,’有规律地插入数字中。 现要求对给定的数字串,从左到右每隔三个数字插入一个英文逗号,直到最后不足三个数字或者到达字符串结尾
时间: 2023-06-25 14:07:50 浏览: 134
以下是一份实现该功能的 C 代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char num_str[1000];
printf("请输入一个数字串:");
scanf("%s", num_str);
int len = strlen(num_str);
int comma_cnt = len / 3; // 需要插入逗号的个数
if (len % 3 == 0) comma_cnt--; // 特判末尾只剩三个数字的情况
int res_len = len + comma_cnt; // 插入逗号后的字符串长度
char res_str[res_len + 1]; // 加 1 是为了存放字符串结尾的 '\0'
int j = res_len - 1; // 从末尾开始填充结果字符串
res_str[j + 1] = '\0'; // 先填充字符串结尾的 '\0'
for (int i = len - 1; i >= 0; i--) {
res_str[j--] = num_str[i];
if ((res_len - j - 1) % 4 == 0 && j >= 0) {
res_str[j--] = ',';
}
}
printf("插入逗号后的数字串为:%s\n", res_str);
return 0;
}
```
代码的思路如下:
1. 读入一个数字串。
2. 计算需要插入逗号的个数 `comma_cnt`,即字符串长度除以 3 的整数部分。
3. 特判末尾只剩下三个数字的情况,此时不需要插入逗号(如 123,456)。
4. 计算插入逗号后的字符串长度 `res_len`。
5. 声明一个长度为 `res_len + 1` 的字符数组 `res_str`,并从末尾开始填充该数组。
6. 当填充到需要插入逗号的位置时,在该位置填入逗号。
注意,上述代码中的逗号位置计算是从末尾开始计算的,这样可以避免在计算时需要考虑字符串长度变化带来的影响。
阅读全文