JZ17 打印从1到最大的n位数
·
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
输入:1
输出:[1,2,3,4,5,6,7,8,9]
思路:
-
计算最大值:通过for循环计算最大值。
-
动态分配内存:malloc分配的内存空间。
-
填充数组:循环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: 需要返回一个数组首元素的地址
更多推荐



所有评论(0)