谭浩强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]);
			}
		}
	}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值