问题 E: 数字翻转
时间限制: 1 Sec 内存限制: 128 MB
提交: 213 解决: 148
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
写一个程序,要求:输入一个正整数,输出该数逆置后的正整数。
如输入:123
则输出:321
若输入:102400
则输出:4201 (注意:若输出004201则判错)
输入
一个正整数,不超过109
输出
一个正整数
样例输入 Copy
123
样例输出 Copy
321
问题 E: 数字翻转
时间限制: 1 Sec 内存限制: 128 MB
提交: 213 解决: 148
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
写一个程序,要求:输入一个正整数,输出该数逆置后的正整数。
如输入:123
则输出:321
若输入:102400
则输出:4201 (注意:若输出004201则判错)
输入
一个正整数,不超过109
输出
一个正整数
样例输入 Copy
123
样例输出 Copy
321
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n); // 输入正整数
int res = 0; // 存储逆置后的结果
while (n > 0) {
res = res * 10 + n % 10; // 计算逆置后的结果
n /= 10;
}
printf("%d\n", res); // 输出逆置后的正整数
return 0;
}
代码的思路很简单,就是使用循环从输入的整数n中逐位取出数字,然后将这些数字按位逆序组合成一个新的整数res。具体来说,每次循环开始时,通过取余数运算得到n的末位数字,然后将其乘以10的相应次方后加入到res中。随着循环的进行,res中存储的数字位数也越来越多。最后,输出逆置后的正整数res即可。注意,当输入的正整数n的最后几位是0时,需要去掉这些前导0,否则会被认为是错误结果。