C语言例题,数字的处理与判断,求一个整数是几位数 ,输出一个整数的每一位数字 ,逆序输出一个整数的各位数字 switch语句例题

题目:

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

输入:

一个不大于5位的数字

输出:

输出三行, 第一行 位数, 第二行 用空格分开的每个数字,注意最后一个数字后没有空格, 第三行 按逆序输出这个数

样例输入:

12345

样例输出:

5
1 2 3 4 5
54321

代码如下:

#include<stdio.h>
int main()
{
    
    
	int a,b,c,d,e,k,i;
	scanf("%d",&k);
	a=k/10000;
	b=k%10000/1000;
	c=k%1000/100;
	d=k%100/10;
	e=k%10;
	for(i=0;k!=0;i++)
	{
    
    
		k=k/10;
	}
	switch(i)
	{
    
    
		case 1:printf("1\n%d\n%d",e,e);break;
		case 2:printf("2\n%d %d\n%d%d",d,e,e,d);break;
		case 3:printf("3\n%d %d %d\n%d%d%d",c,d,e,e,d,c);break;
		case 4:printf("4\n%d %d %d %d\n%d%d%d%d",b,c,d,e,e,d,c,b);break;
		case 5:printf("5\n%d %d %d %d %d\n%d%d%d%d%d",a,b,c,d,e,e,d,c,b,a);break;
	}
 } 

关于这个题,看了很多题解,都没有用switch做的,我个人认为这样便于理解,逻辑简单,且位数只在5位以内,不至于写很多种情况,所以采用了此方法。

注意:

  1. for循环的正确使用,此题中,用for循环进行了位数计数,两行带过;
  2. 在求每一位的数值时,注意求余和除法不能错,第几位应该除几余几要搞清楚;

猜你喜欢

转载自blog.csdn.net/m0_46735251/article/details/112972499