如何按逆顺序输出各位数字?
程序要求如下:
1,求出数字是几位数
2,分别输出每一位数字
3,按逆顺序输出各位数字,如123输出321
#include <stdio.h>
#include <math.h>
int main()
{
int num, gewei, shiwei, baiwei, qianwei, wanwei, place;//定义为int型方便后面计算数位
printf("请输入一个数:");
scanf_s("%d", &num);
if (num > 9999)
place = 5;
else if (num > 999)
place = 4;
else if (num > 99)
place = 3;
else if (num > 9)
place = 2;
else
place = 1;
printf("place=%d\n", place);
wanwei = num / 10000;
qianwei = (num - 10000*wanwei) / 1000;
baiwei =( num-10000*wanwei-1000*qianwei) / 100;
shiwei = (num- 10000 * wanwei - 1000 * qianwei-100*baiwei) / 10;
gewei = (num - 10000 * wanwei - 1000 * qianwei - 100 * baiwei - 10 * shiwei);
switch (place)
{
case(5):
printf("%d%d%d%d%d\n",wanwei,qianwei,baiwei,shiwei,gewei);
printf("反序数字为:%d%d%d%d%d", gewei,shiwei,baiwei,qianwei,wanwei );
break;
case(4):
printf("%d%d%d%d\n", qianwei, baiwei, shiwei, gewei);
printf("反序数字为:%d%d%d%d", gewei, shiwei, baiwei, qianwei); break;
case(3):
printf("%d%d%d\n", baiwei, shiwei, gewei);
printf("反序数字为:%d%d%d", gewei, shiwei, baiwei); break;
case(2):
printf("%d%d\n", shiwei,gewei);
printf("反序数字为:%d%d", gewei, shiwei); break;
case(1):
printf("%d\n", gewei);
printf("反序数字为:%d", gewei); break;
}
return 0;
}
计算各个位的数字分别是多少,可以进行如下优化。
#include <stdio.h>
#include <math.h>
int main()
{
int num, gewei, shiwei, baiwei, qianwei, wanwei, place;//定义为int型方便后面计算数位
printf("请输入一个数:");
scanf_s("%d", &num);
if (num > 9999)
place = 5;
else if (num > 999)
place = 4;
else if (num > 99)
place = 3;
else if (num > 9)
place = 2;
else
place = 1;
printf("place=%d\n", place);
wanwei = num / 10000;
qianwei = (num / 1000) % 10;
baiwei = (num / 100) % 10;
shiwei = (num / 10)%10;
gewei = num % 10;
switch (place)
{
case(5):
printf("%d%d%d%d%d\n", wanwei, qianwei, baiwei, shiwei, gewei);
printf("反序数字为:%d%d%d%d%d", gewei, shiwei, baiwei, qianwei, wanwei);
break;
case(4):
printf("%d%d%d%d\n", qianwei, baiwei, shiwei, gewei);
printf("反序数字为:%d%d%d%d", gewei, shiwei, baiwei, qianwei); break;
case(3):
printf("%d%d%d\n", baiwei, shiwei, gewei);
printf("反序数字为:%d%d%d", gewei, shiwei, baiwei); break;
case(2):
printf("%d%d\n", shiwei, gewei);
printf("反序数字为:%d%d", gewei, shiwei); break;
case(1):
printf("%d\n", gewei);
printf("反序数字为:%d", gewei); break;
}
return 0;
}
比如:qianwei = (num / 1000) % 10;
原理就是用(number/1000)使千位变成个位,然后%10得到个位上的数字
(number%10=number ,0<=number<=9)
如果只是为了倒序输出而不需要知道具体的数位的数字,那么还有一种更简洁的方法:
#include <stdio.h>
int main() {
int n1,n2;
scanf("%d",&n2);
while(n2!=0) {//n2=0的时候结束循环
n1=n2%10;//求最小数位
n2=n2/10;//将十位变成个位
printf("%d",n1);
}
return 0;
}
//程序特点就是简单便捷
//相较于之前switch-case的程序,只是不能指定数位进行输出
操作系统:Windows10
软件:Devc++
编译器:TDM-GCC 4.9.2 64-bit Release
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!