欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

在这个特殊的节日多陪陪你的电脑,hhh...

时间:2023-06-04

输入数字 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#includeint main(){ int n,i=0; scanf("%d",&n); for(i=1;i<=(pow(10,n)-1);i++) { if(i==(pow(10,n)-1)) { printf("%d",i); } else printf("%d,",i); } return 0;}

运行情况:

 由于此代码较为简单,所以在此不再详细描述。


进阶版:按照牛客网上提供了的接口,实现这个接口完成题目要求

这个清楚后动态申请空间,将数值填入就可以了,需要注意的是数组下标从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日,世界上第一台通用计算机在美国宾夕法尼亚大学诞生,请在这个特殊的节日多陪陪你的电脑,哈哈哈哈哈哈哈哈!

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。