[PTA]7-3 逆序的三位数 (10 分)

本文介绍了一个简单的C语言程序,用于实现三位数的反转。通过获取输入的三位数,然后使用模运算和整除运算,分别提取个位、十位和百位上的数字,并将它们重新组合成一个反转后的三位数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

既然是三位数,分别将三个位置求出在反向相加即可。

#include<stdio.h>

int main()
{
	int n;
	scanf("%d",&n);
	printf("%d",(n % 10) * 100+((n % 100) / 10) * 10+(n / 100));
	return 0;
}
### 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] = &#39;,&#39; + (str[i] - &#39;,&#39;); // 插入逗号 } 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]=&#39;,&#39;; ++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()` 函数返回已正确添加好千位隔符的新字符串表示形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值