PTA 5-3 逆序的三位数 (10分)

本文介绍了一个简单的C语言程序,该程序接收一个三位正整数作为输入,并输出其按位逆序的数字,同时确保输出不带前导零。

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

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:

每个测试是一个3位的正整数。

输出格式:

输出按位逆序的数。

输入样例:

123

输出样例:

321


考察点:取余


#include<stdio.h>
int main()
{
int n,num1,num2,num3,end;
scanf("%d",&n);
num1 = n/100;
num3 = n%10;
num2 = (n%100)/10;
end = (num3)*100+(num2)*10+num1;
printf("%d",end); 
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、付费专栏及课程。

余额充值