目录
- 1. 题目描述
- 2. 示例
- 3. 分析思路
- 4. 完整代码
1. 题目描述
- 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。
- 比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
- 用返回一个整数列表来代替打印
- n 为正整数,0 < n <= 5
- 链接在这里——OJ链接
2. 示例
3. 分析思路
- 这里我们首先要清楚n位数中最大的数字是谁
- 实际上就是10的n次方-1 (10^n-1)
- 比如:
- 1位数:9 = 10^1 - 1
- 2位数:99 = 10^2 - 1
- 3位数:999 = 10^3 - 1
- ……
★ 这个弄清楚后动态申请空间,将数值填入就可以了
★ 需要注意的是,小标是从0开始的,而数值是从1开始的
4. 完整代码
- 通过上面的思路我们可以写出以下代码
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型 最大位数
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
int* printNumbers(int n, int* returnSize )
{
*returnSize = pow(10,n) - 1;//确定最大的数字
int* arr = (int*)malloc(sizeof(int) * (*returnSize));//申请足够大的空间
for (int i=0; i<*returnSize; i++)
{
arr[i] = i + 1;//下标从0开始,而数值从1开始
}
return arr;
}
- 运行结果:
最后,
恭喜你又遥遥领先了别人!