丹徒网站建设怎么样,WordPress 会员空间插件,哪里有免费的网站模板下载软件,智慧展馆科技展厅本专栏为c语言练习专栏#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新#xff0c;通过每天练习#xff0c;进一步对c语言的重难点知识进行更深入的学习。 #x1f493;博主csdn个人主页#xff1a;小小unicorn ⏩专栏分类#xff1a;C语言天天练 #x… 本专栏为c语言练习专栏适合刚刚学完c语言的初学者。本专栏每天会不定时更新通过每天练习进一步对c语言的重难点知识进行更深入的学习。 博主csdn个人主页小小unicorn ⏩专栏分类C语言天天练 代码仓库小小unicorn的代码仓库 关注我带你学习编程知识 Day1 题目描述解题思路代码实现结果情况 总结 题目描述 输入数字 n按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3则打印出 1、2、3 一直到最大的 3 位数 999。 用返回一个整数列表来代替打印n 为正整数0 n 5 解题思路
读完题目基本思路大多数人想到的是是遍历数组但有没有想过这次与以往遍历有所不同遍历数组的大小是由用户决定。那怎么解决呢我们可以采取赋值的方式解决这个问题。
由此接口函数的返回值肯定是整个数组所以我们采用int*作为该函数的返回值。
int* printNumbers(int n, int* returnSize ) int* returnSize返回数组元素的个数。
函数传参首先需要知道用户求值也就是题目问的其次还要告诉返回数组元素的个数。
返回数组元素的个数怎么判断呢举几个例子你就明白了 当输入1的时候最大的 1位十进制数为9. 当输入2的时候最大的 2位十进制数为99. 当输入3的时候最大的 3位十进制数为999. … 依次内推我们可以观察出一个规律返回值是10的n次方-1. 所以我们可以用c语言中的pow函数来进行该操作。
*returnSize pow(10, n) - 1;既然返回一个数组并给这个数组还要进行赋值操作数组的大小具体也不知道为防止空间消耗我们可以动态开辟一个数组。
int* arr (int*)malloc(*returnSize * sizeof(int)); //malloc(字节数)最后就是赋值操作了这应该难不倒大家
//赋值for (int i 0; i *returnSize ; i) {*(arr i) i 1;}代码实现
//*returnSize: 返回数组元素的个数int* printNumbers(int n, int* returnSize )
{//返回数组元素的个数*returnSize pow(10, n) - 1;//动态分配空间int* arr (int*)malloc(*returnSize * sizeof(int)); //malloc(字节数)//赋值for (int i 0; i *returnSize ; i) {*(arr i) i 1;}//返回return arr;
}结果情况 符合题目情况问题得到解决。
总结
以本题为例当用遍历这个方法解决不了问题或被卡主是时我们就用了赋值的方法。通过这道题会给我们一个启示当我们解决问题时用我们最容易想到的办法发现解决不了问题我们就就可以尝试换另一种思路。 文章到这里就要告一段落了有更好的想法或问题欢迎评论区留言。 希望今天的练习能对您有所收获咱们下期见