把输入的数字倒序输出

1、怎么判断我们输入的数字有多大

我们可以在0-100000的范围内随便输入一个数字,那我们怎么判断它是几位数呢。
可以用我们的C语言中的选择结构

if()
else if()
else if()

else

来判断。假设我们输入数字n,用它与10000比较,即n>9999。如果为真,则它为5位数;如果为假,继续往下走,判断n>999是否为真,为真就是4位数,为假继续往下判断。一直判断,知道找到它是几位数为止。
代码段如下:

scanf("%d",&n);     //输入要倒序输出的数字
	if(n>=100000||n<0)    //判断是否位于0-100000里面,不在,则重新输入
	{
		printf("please input");
		scanf("%d",&n);
	}
//判断该数是几位数
if(n>9999)
	{
		place=5;
	}
	else if(n>999)
	{
		place=4;
	}
	else if(n>99)
	{
		place=3;
	}
	else if(n>9)
	{
		place=2;
	}
	else
		place=1;

2、提取各个位上的数字

假设该数为5位数,可以用该数除以10000,就可以得到万位上的数字,保存到t中,要是它不是5位数,t里面的数字就是0.
接着用该数减去万位上的数字,再去除以1000,就可以得到千位上的数字。
依次往下除,直到获得个位上的数字。

t=n/10000;                   //获得万位上的数字
h=(n-t*10000)/1000;         //获得千位上的数字
j=(n-t*10000-h*1000)/100;   //获得百位上的数字
k=(n-t*10000-h*1000-j*100)/10;   //获得十位上的数字
l=(n-t*10000-h*1000-j*100-k*10)/1;   //获得个位上的数字

3、倒序输出

可以采用多分支选择结构,来输入5位数字、4位数字、3位数字、2位数字、1位数字。可以先正向输出,在反向输出,来判断我们是否成功倒序输出。

switch(place)
{
case 5:printf("%d,%d,%d,%d,%d\n",t,h,j,k,l);  //5位数正序输出
	   printf("%d,%d,%d,%d,%d",l,k,j,h,t); //倒序输出
	   break;
case 4:printf("%d,%d,%d,%d\n",h,j,k,l);  //4位数正序输出
		printf("%d,%d,%d,%d",l,k,j,h);  //倒序输出
		break;
case 3:printf("%d,%d,%d\n",j,k,l); //3位数正序输出
		printf("%d,%d,%d",l,k,j); //倒序输出
		break;
case 2:printf("%d,%d\n",k,l);  //2位数正序输出
		printf("%d,%d",l,k);//倒序输出
		break;
case 1:printf("d\n",l);  /1位数正序输出
	   printf("d",l);  //倒序输出

}

完整代码如下

#include<stdio.h>
int main()
{
	
	int n;
	int place;
	int t,h,j,k,l;
	scanf("%d",&n);
	if(n>=100000||n<0)
	{
		printf("please input");
		scanf("%d",&n);
	}
	if(n>9999)
	{
		place=5;
	}
	else if(n>999)
	{
		place=4;
	}
	else if(n>99)
	{
		place=3;
	}
	else if(n>9)
	{
		place=2;
	}
	else
		place=1;
 
printf("number %d\n",place);
t=n/10000;
h=(n-t*10000)/1000;
j=(n-t*10000-h*1000)/100;
k=(n-t*10000-h*1000-j*100)/10;
l=(n-t*10000-h*1000-j*100-k*10)/1;
switch(place)
{
case 5:printf("%d,%d,%d,%d,%d\n",t,h,j,k,l);
	   printf("%d,%d,%d,%d,%d",l,k,j,h,t);
	   break;
case 4:printf("%d,%d,%d,%d\n",h,j,k,l);
		printf("%d,%d,%d,%d",l,k,j,h);
		break;
case 3:printf("%d,%d,%d\n",j,k,l);
		printf("%d,%d,%d",l,k,j);
		break;
case 2:printf("%d,%d\n",k,l);
		printf("%d,%d",l,k);
		break;
case 1:printf("d\n",l);
	   printf("d",l);

}
return 0;
}

 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值