大家好,又见面了,我是你们的朋友全栈君。
【完美版】
更新(2022/3/12):
直接上代码,优化后:
#include <stdio.h>
int main()
{
int x;
int result = 0;
printf("请输入一个整数:");
scanf("%d",&x);
while(x != 0)
{
result = result*10 + x%10;
x = x/10;
}
printf("%d",result);
printf("\n"); //换行
return 0;
}
测试的结果:
输入:501 , 输出:105
输入:521 , 输出:125
输入:025 , 输出:52 //注意,我们说的整数025其实就是25,所以逆序输出之后是52
输入:520 , 输出:25
如果想要逆序后开头的 0 也显示,比如输入500,输出005,则可以将上面代码变为下面这种:
#include <stdio.h>
int main()
{
int x;
int result = 0;
printf("请输入一个整数:");
scanf("%d",&x);
while(x != 0)
{
result = result*10 + x%10;
x = x/10;
//如果上面得到的result是0,就立即把这个0打印出来;否则,就什么也不做,继续循环
if(result == 0)
{
printf("%d",result);
}
}
printf("%d",result);
printf("\n"); //换行
return 0;
}
测试的结果:
输入:501 , 输出:105
输入:521 , 输出:125
输入:025 , 输出:52 //注意,我们说的整数025其实就是25,所以逆序输出之后是52
输入:520 , 输出:025
输入:500 , 输出:005
综上。
以下是之前写的,在评论区里面很多同学说不够完善,不过,也可以看一遍我优化的过程。
初次写于2018-12-15:
在很多编程练习中都会遇到关于数字方面的题目,其中比较常见的一种是逆序输出整数。
下面我给出一个最简单的例子。
#include <stdio.h>
int main()
{
int x;
int i; //这里声明的i变量我没有用,本来是想用它计算有多少位数
int sum=0;
printf("请输入一个整数:");
scanf("%d",&x);
while(x!=0)
{
sum=sum*10+x%10;
x/=10;
}
printf("%d",sum);
printf("\n"); //换行
return 0;
}
最主要的就是下面这段:
while(x!=0)
{
sum=sum*10+x%10;
x/=10;
}
其中 sum = sum*10+x%10;这个公式大家可以自己推算一遍。(自己找几个数,在草稿纸上算一算,然后就会明白了)
更新(2021/4/8):
由于部分同学评论说输入的整数后面带0的话,逆序后不会显示0,比如,输入300,逆序后只输出3,而不是003
所以我又重新更新了一份代码,如下:
#include <stdio.h>
int main()
{
int x;
int sum=0;
printf("请输入一个整数:");
scanf("%d",&x);
while(x!=0)
{
sum = sum*10 + x%10;
printf("%d",sum); //其实就是把打印语句放到这里就OK了
x /= 10;
}
printf("\n");
return 0;
}
这个程序就可以显示后面带0的数字了,比如300,逆序后输出是003
觉得有用的话点个赞哈,谢谢支持。如果想看更多其它的也可以关注我哈,一起学习交流。
以后我会把其它的几种算法也发出来。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163834.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...