谭浩强C语言(第三版)习题5.7

题目描述

给出一个不多于5位的整数,要求

  • 1、求出它是几位数

  • 2、分别输出每一位数字

  • 3、按逆序输出各位数字,例如原数为321,应输出123

输入描述

一个位数不超过5位的数字

输出描述

输出共3行

  • 第1行 描述数字的位数

  • 第2行 用空格分开的每个数字,注意最后一个数字后没有空格

  • 第3行 按逆序输出这个数

样例输入

12345

样例输出

5
1 2 3 4 5
54321

 注意输入的值可能为负整数,负整数时要忽略负号。 

解决:

	import java.util.Scanner;
	
	public class Main {
		public static void main(String[] args) {
			
			Scanner in = new Scanner(System.in);
			
			int num = in.nextInt();
			
			if (num>=0) {
				
				myPrint(num);
			
			}else {
				
				num = Math.abs(num);
				myPrint(num);
			
			}
			
			in.close();
		}
		
		public static void myPrint(int num) {
			 // 取输入数值中的每一位
			int[] all = {
					(num/10000)%10,
					(num/1000)%10,
					(num/100)%10,
					(num/10)%10,
					num%10
			};
			
			// 找到第一个数值不为0的元素的下标
			int head = 0;
			for (int i=0;i<all.length;i++) {
				if (all[head]==0) {
					head++;
				}
			}
			// 计算并输出   输入值的位数
			System.out.println(all.length-head);
			
			// 分隔输出每位
			for (int j=head;j<all.length-1;j++) {
				System.out.print(all[j]+" ");
			}
			System.out.println(all[all.length-1]);
			
			// 倒序输出每位
			for (int j=all.length-1;j>=head;j--) {
				System.out.print(all[j]);
			}
		}
	}
发布了25 篇原创文章 · 获赞 0 · 访问量 1285

猜你喜欢

转载自blog.csdn.net/weixin_42059368/article/details/103114402
今日推荐