编写一个程序,输入一个3位整数,要求逆序输出对应的数。例如:输入123,则输出321。
**输入格式要求:"%d" 提示信息:"Please enter a positive integer: "
**输出格式要求:"%d-->%d\n"
程序运行示例1如下:
Please enter a positive integer: 345
345-->543
程序运行示例2如下:
Please enter a positive integer: 340
340-->43
程序运行示例3如下:
Please enter a positive integer: 034
34-->430
我写的是不是问题很大
 {
int n;
printf("Please enter a positive integer: ");
scanf("%d", &n);
int a = n / 100; // 取百位数字
int b = n % 100 / 10; // 取十位数字
int c = n % 10; // 取个位数字
if (a == 0) { // 处理输入的数以 0 开头的情况
printf("%d-->%d%d\n", n, c, b);
} else {
printf("%d-->%d%d%d\n", n, c, b, a);
}
return 0;
}
程序的主要思路是利用除法和取余运算分别取出输入整数的个位、十位和百位数字,并按逆序输出。需要注意的是,如果输入的数以 0 开头,那么在输出时需要特别处理。
提供下你写的代码,给你看一看
#include <stdio.h>
int main() {
int n;
printf("Please enter a positive integer: ");
scanf("%d", &n);
int h = n/100;
int s = n%100/10;
int g = n%10;
printf("%d-->%d%d%d",n,g,s,h);
return 0;
}
因为没有看到你的图片,所以自己写了一个实现;
根据题目的例子,推测应该是不要打印新数的前导0,即百位为0,或百位为0,十位也为0的情况,前导0都不打印,根据这个思路,写了一个实现,代码如下:
#include <stdio.h>
int main(void){
int num;
printf("Please enter a positive integer:");
scanf("%d",&num);
int one = num/100%10; //获取原数的百位 变为 新数的 个位
int ten = num/10%10; // 原数的十位 仍为 新数的 十位
int hundred = num%10; // 获取原数的个位 为新数的 百位
if(hundred==0&&ten==0){ // 如果新数 百位 和 十位 都为0 ,则只打印个位
printf("%d-->%d",num,one);
}else if(hundred==0&&ten!=0){ // 如果 新数的 百位为0,十位不为0 ,则打印新数的十位 和 个位
printf("%d-->%d%d",num,ten,one);
}else { // 其他情况,则新数的 百位 十位 个位 都打印
printf("%d-->%d%d%d",num,hundred,ten,one);
}
return 0;
}
供参考:
#include <stdio.h>
int main()
{
int n, i, m, t;
printf("Please enter a positive integer: ");
scanf("%d", &n);
for (i = 0, t = n, m = 0; i < 3; i++)
m = m * 10 + t % 10, t /= 10;
printf("%d->%d\n", n, m);
return 0;
}