//打印1到最大的n位数 //输入数字n,按顺序打印出从1到最大的n位十进制数。比方:输入3。则打印出1、2一直到最大的3位数999 #include <stdio.h> #include <stdlib.h> #include <memory.h> int num[10]; int add(int n) { int isoverflow = 0; int carry = 0; int i; for (i = 9; i >= 10 - n; i--) { num[i] += carry; if (i == 9) num[i]++; if (num[i] >= 10) { if (i == 10 - n) { isoverflow = 1; } else { num[i] -= 10; carry = 1; } } else { break; } } return isoverflow; } int main(void){ int n, i; while (scanf_s("%d", &n) != EOF && n >= 1 && n <= 5) { memset(&num, 0, sizeof(int)* 10); while (!add(n)) { int flag = 0; for (i = 10 - n; i < 10; i++) { if (num[i] != 0 || flag) //假设是前面的零。则不输出。假设是后面的零,则输出 { flag = 1; printf("%d", num[i]); } } printf(" "); } } return 0; }