首页 > 试题广场 >

打印从1到最大的n位数

[编程题]打印从1到最大的n位数
  • 热度指数:43212 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
1. 用返回一个整数列表来代替打印
2. n 为正整数,0 < n <= 5
示例1

输入

1

输出

[1,2,3,4,5,6,7,8,9]
#include<stdlib.h>
int* printNumbers(int n, int* returnSize ) {
    int i = n;
    *returnSize = pow(10,n)-1;
    int *arr = (int *)malloc(sizeof(int)*(*returnSize));
    for(int i = 0;i<*returnSize;i++)
    {
        arr[i]=i+1;
    }
    return arr;
}
编辑于 2024-02-08 15:02:50 回复(1)
    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;

发表于 2023-08-10 17:42:11 回复(0)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @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;
}


发表于 2022-12-27 17:08:04 回复(0)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @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;
    }
}

发表于 2022-07-09 22:45:52 回复(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;
}

发表于 2022-05-06 15:17:45 回复(0)
int* printNumbers(int n, int* returnSize ) {
    // write code here
    *returnSize = pow(10, n) - 1;
    int* nums = (int*)malloc(*returnSize * sizeof(int));
    for(int i = 0; i<*returnSize; i++)
    {
        nums[i] = i + 1;
    }
    return nums;
}

发表于 2022-04-26 16:17:32 回复(0)
static int arr[100001];
int* printNumbers(int n, int* returnSize ) {
    int max = 1;
    for(int i = 0;i < n;i++)
    {
        max *= 10;
    }
    int i = 0;
    for(i = 1;i < max;i++)
    {
        arr[i-1] = i;
    }
    *returnSize = i-1;
    return arr;
}
returnSize是你返回的数组长度,需要你自己设定,编译器并不知道,不是你返回的数组
发表于 2022-01-22 10:48:08 回复(2)

问题信息

难度:
10条回答 2784浏览

热门推荐

通过挑战的用户

查看代码