输入数字 n ,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3 ,则打印出 1、2、3 一直到最大的 3 位数999 。
用返回一个整数列表来代替打印n 为正整数
OJ链接【牛客网题号: JZ17 打印从1到最大的n位数】
示例:
输入:1
返回值:[1,2,3,4,5,6,7,8,9]
int* printNumbers(int n, int* returnSize )
{
}
如果没有上述输入提供的接口,我们可以不用动态申请空间的方法!
首先要清楚n位数中最大的数字,实际上就是 10^n - 1
1位数: 10^1 - 1
2位数: 10^2 - 1
3位数: 10^3 - 1
...(调用pow函数:pow(10,n)-1)
实际代码如下:
#include
运行情况:
由于此代码较为简单,所以在此不再详细描述。
进阶版:按照牛客网上提供了的接口,实现这个接口完成题目要求
这个清楚后动态申请空间,将数值填入就可以了,需要注意的是数组下标从0开始,而数值从1开始
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;}
1946年2月14日,世界上第一台通用计算机在美国宾夕法尼亚大学诞生,请在这个特殊的节日多陪陪你的电脑,哈哈哈哈哈哈哈哈!