pta题库答案c语言7-11 将整数按三位分节
时间: 2025-07-05 17:07:48 浏览: 2
### PTA C语言 7-11 整数三位分节解答
为了实现将整数按照三位一组的方式进行分割并输出,可以采用字符串处理的方法来简化操作。具体来说,在读取到一个非负整数之后,将其转换成字符串形式以便于逐位访问各个数字字符;接着逆序遍历该字符串,并每三个字符插入一次逗号作为千位分隔符;最后再反转整个字符串得到最终结果。
下面是一个完整的解决方案:
```c
#include <stdio.h>
#include <string.h>
void format_number(char *str) {
int length = strlen(str);
for (int i = length - 3; i > 0; i -= 3)
str[i] = ',' + (str[i] - ','); // 插入逗号
}
int main() {
char number[16]; // 考虑到最大可能的情况为2^31-1=2147483647,所以长度设为16足够了
scanf("%s", number);
format_number(number);
printf("%s\n", number);
return 0;
}
```
上述代码存在一个问题:直接修改原始字符串可能会导致越界错误。因此改进后的版本如下所示[^1]:
```c
#include <stdio.h>
#include <string.h>
// 定义一个新的函数用于格式化数字
char* format_number(const char *input) {
static char output[16];
strcpy(output, input); // 复制输入字符串至静态缓冲区中
int len = strlen(output), pos = len;
while ((pos-=3)>0){
memmove(&output[pos+1],&output[pos],len-pos+1);
output[pos]=',';
++len;
}
return output;
}
int main(){
long num;
scanf("%ld",&num);
char buffer[16];
sprintf(buffer,"%ld",num);
puts(format_number(buffer));
return 0;
}
```
此段代码实现了对任意给定的不超过四字节数值范围内的正整数完成按三位分组的功能,并且通过`format_number()` 函数返回已正确添加好千位分隔符的新字符串表示形式。
阅读全文
相关推荐


















