循环结构2(while)——数字反转
任务描述
编写一个程序,将给定整数的各个位上数字反转,得到一个新的整数。新数应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。
输入输出要求
输入: 一个整数 N。
输出: 一个整数,表示反转后的新数。
代码实现
cpp
#include <stdio.h>
#include <limits.h>
int reverseInteger(int x) {
int reversed = 0;
int isNegative = x < 0;
unsigned int ux = isNegative ? -x : x;
while (ux != 0) {
int pop = ux % 10;
ux /= 10;
if (reversed > INT_MAX / 10 || (reversed == INT_MAX / 10 && pop > INT_MAX % 10)) {
return 0;
}
reversed = reversed * 10 + pop;
}
return isNegative ? -reversed : reversed;
}
int main() {
int n;
scanf("%d", &n);
int reversed = reverseInteger(n);
if (reversed == 0) {
printf("-");
} else {
printf("%d\n", reversed);
}
return 0;
}
总结
本次编程任务顺利完成,代码实现了数字反转的功能,并考虑了整数溢出的问题。通过这次练习,我加深了对整数操作和边界条件处理的理解。同时,我也意识到在编写代码时,清晰的逻辑和良好的代码风格是非常重要的。
编写一个程序,将给定整数的各个位上数字反转,得到一个新的整数。新数应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。
输入输出要求
输入: 一个整数 N。
输出: 一个整数,表示反转后的新数。
代码实现
cpp
#include <stdio.h>
#include <limits.h>
int reverseInteger(int x) {
int reversed = 0;
int isNegative = x < 0;
unsigned int ux = isNegative ? -x : x;
while (ux != 0) {
int pop = ux % 10;
ux /= 10;
if (reversed > INT_MAX / 10 || (reversed == INT_MAX / 10 && pop > INT_MAX % 10)) {
return 0;
}
reversed = reversed * 10 + pop;
}
return isNegative ? -reversed : reversed;
}
int main() {
int n;
scanf("%d", &n);
int reversed = reverseInteger(n);
if (reversed == 0) {
printf("-");
} else {
printf("%d\n", reversed);
}
return 0;
}
总结
本次编程任务顺利完成,代码实现了数字反转的功能,并考虑了整数溢出的问题。通过这次练习,我加深了对整数操作和边界条件处理的理解。同时,我也意识到在编写代码时,清晰的逻辑和良好的代码风格是非常重要的。
全部评论
相关推荐
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python 点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java 点赞 评论 收藏
分享