输入数字n,按顺序输出从1最大的n位10进制数

题目:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,

则输出1、2、3一直到最大的3位数即999。

分析:当位数较少时,在整数范围内时可由1到pow(10,n)-1 循环输出。

但是当位数超过整数范围时会溢出,需另寻他路。中心思想是进位制,如逢十进一。

可定义一个n位数组来模拟一个数字,或者一个n位字符串,数组中某一位的值的改变是因为后面逢10.

具体实现如下:

 

[java][/java]

  1. import java.util.Scanner;
  2. public class Main {
  3.     /**
  4.      * @param args
  5.      */
  6.     public static void main(String[] args) {
  7.         Scanner cin = new Scanner(System.in);
  8.         int n;
  9.         //while (cin.hasNext()) {
  10.             n = cin.nextInt();
  11.             System.out.println(n);
  12.             Print1toNDigits(n);
  13.         //}
  14.     }
  15.     static void Print1toNDigits(int n) {
  16.         int i;
  17.         int[] number = new int[n];
  18.         for (i = 0; i < n; i++)
  19.             number[i] = 0;
  20.         i = n – 1;
  21.         int k = n – 1, count = 1;
  22.         for (i = 0; i < n; i++)
  23.             count *= 10;
  24.         while (count > 0) {
  25.             k = n – 1;
  26.             if (number[k] < 9) {
  27.                 ++number[k];
  28.             } else {
  29.                 while (k >= 0) {
  30.                     if (number[k] == 9) {
  31.                         number[k] = 0;
  32.                         –k;
  33.                     } else {
  34.                         number[k]++;
  35.                         break;
  36.                     }
  37.                 }
  38.             }
  39.             print(number);
  40.             count = count – 1;
  41.         }
  42.     }
  43.     static void print(int num[]) {
  44.         int len = num.length;
  45.         for (int i = 0; i < len; i++) {
  46.             if (num[i] != 0) {
  47.                 while (i < len) {
  48.                     System.out.print(num[i]);
  49.                     ++i;
  50.                     if (i >= len) {
  51.                         System.out.println();
  52.                         return;
  53.                     }
  54.                 }
  55.             }
  56.         }
  57.     }
  58. }

标签