输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
1. 用返回一个整数列表来代替打印
2. n 为正整数,0 < n <= 5
2. n 为正整数,0 < n <= 5
int*a=NULL; //*********运用realloc动态开辟内存********** int num = 1; int size = 0; int cap = 0; //得到一个临界数 for (int i = 0; i < n; i++) { num *= 10; } num--; //打印逻辑 int step=1; while (size < num) { if (size == cap) { a = (int*)realloc(a, sizeof(int) * (cap==0?3:cap+3)); cap += 3; } a[size++] = step++; } *returnSize=size; return a;
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 最大位数 * @return int整型一维数组 * @return int* returnSize 返回数组行数 */ int* printNumbers(int n, int* returnSize ) { int i=0; int N=9; for(i=1;i<n;i++) { N=N*10+9; } static int a[1000000]={0};//static 使数组成为静态局部变量 for(i=0;i<N;i++) { a[i]=i+1; } *returnSize=i;//returnSize返回数组元素个数 return a; }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 最大位数 * @return int整型一维数组 * @return int* returnSize 返回数组行数 * * C语言声明定义全局变量请加上static,防止重复定义 */ static int arr[100000]; int* printNumbers(int n, int* returnSize ) {// write code here int m = 9; scanf("%d", &n); if(n > 0 && n <= 5) { for(int i = 1; i < n; i++) { m = 10 * m + 9; } for(int j = 1; j <= m; j++) { arr[j - 1] = j; *returnSize = j; } return arr; } else { return 0; } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 最大位数 * @return int整型一维数组 * @return int* returnSize 返回数组行数 * * C语言声明定义全局变量请加上static,防止重复定义 */ static int s[100000]; int* printNumbers(int n, int* returnSize ) { // write code int k=9; for(int i=1;i<n;i++) k=k*10+9; int j; for(j=0;j<k;j++) s[j]=j+1; *returnSize=j; return s; }