给一个不多于5位数的正整数要求 1,求出它是几位数。2,分别输出每一位数字。3,按照逆序输出各位数字。

该程序接收一个整数输入,根据数值范围将其分类为1位数、2位数、3位数、4位数或5位数,并进行逆序输出。程序通过if-elseif语句进行条件判断,然后使用switch-case结构进行不同情况的处理,展示数字的各个位数并完成逆序输出。
#include<stdio.h>
void main()
{   int m,i,a,b,c,d,e;
	scanf("%d",&i);
	if(i>=0&&i<10)
	{
		m=1;
	}
	else if(i>=10&&i<100)
	{
		m=2;
	}
	else if(i>=100&&i<1000)
	{
		
		m=3;
	}
	else if(i>=1000&&i<=9999)
	{
		
		m=4;
	}
	else if(i>=10000&&i<=99999)
	{
		
			m=5;
	}
    else
	{
		printf("error");
	}
	switch(m)
	{
	case 1:
        printf("1位数\n");
		printf("逆序输出%d\n%d\n",i,i);
		break;
	case 2:
		b=i%10;
		a=i/10;
		printf("2位数\n");
		printf("%d\n%d\n",b,a);
		printf("逆序输出%d\n",a*10+b);
		break;
	case 3:
		c=i/100;
        b=i%100/10;
		a=i%100%10;
printf("3位数\n");
		printf("%d\n%d\n%d\n",c,b,a);
		printf("逆序输出%d\n",a*100+b*10+c);
		break;
	case 4:
		d=i/1000;
		c=i%1000/100;
		b=i%100/10;
		a=i%10;
printf("4位数\n");
		printf("%d\n%d\n%d\n%d\n",d,c,b,a);
		printf("逆序输出%d\n",a*1000+b*100+c*10+d);
		break;
	case 5:
		e=i/10000;
		d=i%10000/1000;
		c=i%1000/100;
		b=i%100/10;
		a=i%10;
        printf("5位数\n");
		printf("%d\n%d\n%d\n%d\n%d\n",e,d,c,b,a);
		printf("逆序输出%d\n",a*10000+b*1000+c*100+d*10+e);
		break;
	}
}
  

 

以下几种同的C语言代码可以实现对于多于5的整数,计算其位数并分别输出一位数字: #### 方法一:使用if嵌套运算(取整) ```c #include <stdio.h> int main() { int a; scanf("%d", &a); if ((int)a / 10000 > 0) printf("五位数 %d %d %d %d %d", a / 10000, a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10); else if ((int)a / 1000 > 0) printf("四位数 %d %d %d %d", a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10); else if ((int)a / 100 > 0) printf("三位数 %d %d %d", a / 100 % 10, a / 10 % 10, a % 10); else if ((int)a / 10 > 0) printf("二位数 %d %d", a / 10 % 10, a % 10); else if ((int)a > 0) printf("一位数 %d", a % 10); else printf("输出错误"); return 0; } ``` 此方法通过断地对输入的整数进行整除操作,根据结果判断其位数,并输出一位数字[^1]。 #### 方法二:分别计算每一位 ```c #include <stdio.h> int main() { int n, w = 0, q = 0, b = 0, s = 0, g = 0; printf("输入一个多于5正整数:\n"); scanf("%d", &n); w = n / 10000; // 万 q = n % 10000 / 1000; // 千 b = n % 1000 / 100; // 百 s = n % 100 / 10; // 十 g = n % 10; // 个 if (w != 0) { printf("5位数\n"); printf("每一位数:%d %d %d %d %d\n", w, q, b, s, g); } else if (q != 0) { printf("4位数\n"); printf("每一位数:%d %d %d %d\n", q, b, s, g); } else if (b != 0) { printf("3位数\n"); printf("每一位数:%d %d %d\n", b, s, g); } else if (s != 0) { printf("2位数\n"); printf("每一位数:%d %d\n", s, g); } else if (g != 0) { printf("1位数\n"); printf("每一位数:%d\n", g); } return 0; } ``` 该方法分别计算出整数的每一位,根据每一位是否为0判断其位数,并输出一位数字[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香蕉不拉了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值