输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

输入:1

输出:[1,2,3,4,5,6,7,8,9]

思路

  1. 计算最大值:通过for循环计算最大值。

  2. 动态分配内存:malloc分配的内存空间。

  3. 填充数组:循环i从0到total-1将数字i+1簇内res[i],避免越界

int* printNumbers(int n, int* returnSize) {
    // 计算最大值 max = 10^n
    int max = 1;
    for (int i = 0; i < n; i++) {
        max *= 10;
    }
    
    // 确定数组大小(从 1 到 max-1)
    int total = max - 1;
    int* res = (int*)malloc(total * sizeof(int));
    *returnSize = total;
    
    // 填充数组
    for (int i = 0; i < total; i++) {
        res[i] = i + 1;  // 下标 i 对应数字 i+1
    }
    return res;
}

注意:

1: 这里returnSize是需要打印个数的变量的指针

2: 需要返回一个数组首元素的地址

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐