当前位置: 首页 > news >正文

C语言每日一题 ---- 打印从1到最大的n位数(Day 1)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。

💓博主csdn个人主页:小小unicorn
⏩专栏分类:C语言天天练
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识

Day1

  • 题目描述:
    • 解题思路:
    • 代码实现:
    • 结果情况:
  • 总结:

题目描述:

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

  1. 用返回一个整数列表来代替打印
  2. 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;
}

结果情况:

在这里插入图片描述
符合题目情况,问题得到解决。

总结:

以本题为例:当用遍历这个方法解决不了问题或被卡主是时,我们就用了赋值的方法。通过这道题会给我们一个启示,当我们解决问题时,用我们最容易想到的办法发现解决不了问题,我们就就可以尝试换另一种思路。

文章到这里就要告一段落了,有更好的想法或问题,欢迎评论区留言。
希望今天的练习能对您有所收获,咱们下期见!

http://www.lryc.cn/news/145093.html

相关文章:

  • 2023-08-23 LeetCode每日一题(统计点对的数目)
  • LLMs之Code:SQLCoder的简介、安装、使用方法之详细攻略
  • 数学建模(四)整数规划—匈牙利算法
  • openGauss学习笔记-47 openGauss 高级数据管理-权限
  • 开始MySQL之路——MySQL 事务(详解分析)
  • 注解和class对象和mysql
  • 【桌面小屏幕项目】ESP32开发环境搭建
  • CSS 滚动容器与固定 Tabbar 自适应的几种方式
  • IP 地址追踪工具
  • 最新企业网盘产品推荐榜发布
  • 实用的面试经验分享:程序员们谈论他们的面试历程
  • 6.oracle中listagg函数使用
  • 习题练习 C语言(暑期)
  • C++中虚函数表的概念
  • 代码随想录算法训练营第四十八天 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III
  • uniapp项目实战系列(1):导入数据库,启动后端服务,开启代码托管
  • 在互联网+的背景下,企业如何创新客户服务?
  • 国内的化妆品核辐射检测
  • 春秋云镜:CVE-2019-9042(Sitemagic CMS v4.4 任意文件上传漏洞)
  • 20230828工作日志:
  • flink on yarn 部署
  • postgresql基于postgis常用空间函数
  • 详细讲解移植u-boot.2022.10版本移植到开发板基本方法
  • Vue.js2+Cesium1.103.0 十一、Three.js 炸裂效果
  • Nodejs快速搭建简单的HTTP服务器,并发布公网远程访问
  • 爬虫入门01
  • 解读GIS软件:从ArcGIS到山海鲸可视化的全方位介绍
  • 嵌入式通用硬件模块设计——串口音频播放模块
  • 【PLSQL】PLSQL基础
  • 【C++笔记】C++内存管理