输入数字 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;
}