
描述
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
1.用返回一个整数列表来代替打印
2. n 为正整数,0 < n <= 5
示例1
输入:
1
返回值:
[1,2,3,4,5,6,7,8,9]
代码如下:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param n int整型 最大位数
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
static int a[100000];
int* printNumbers(int n, int* returnSize ) {
// write code here
int i = 0;
int k = 0;
switch(n)
{
case 1:
k = 9;
break;
case 2:
k = 99;
break;
case 3:
k = 999;
break;
case 4:
k = 9999;
break;
case 5:
k = 99999;
break;
default:
break;
}
for(i = 0;i < k;i++)
a[i] = i+1;
*returnSize=i;
return a;
}
二、打印日期
描述
根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。
进阶:时间复杂度:O(n) O(n)\ O(n) ,空间复杂度:O(1) O(1)\ O(1)
输入描述:
输入一行,每行空格分割,分别是年,月,日
输出描述:
输出是这一年的第几天
示例1
输入:
2012 12 31
输出:
366
代码:
#include
int m[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int sum_day,day,year,month;
scanf("%d %d %d",&year,&month,&day);
if((year%4 == 0&&year%100!=0)||(year%400==0))
{
for(int i = 0;i < month;i++)
{
day += m[i];
}
if(month > 2)
{
printf("%d",day+1);
}
else
{
printf("%d",day);
}
}
else
{
for(int i = 0;i < month;i++)
{
day += m[i];
}
printf("%d",day);
}
return 0;
}
2、请问下列表达式哪些会被编译器禁止【多选】()
int a = 248, b = 4;
int const *c = 21;
const int *d = &a;
int *const e = &b;
int const * const f = &a;
A: *c = 32; B:*d = 43 C:e=&a D:f=0x321f
题解:
const如果在指针变量的 *的左边【即 const int * a == int const * a】:
表达的意思是: 对指针变量a 解引用的值是保持不变的
只有a里面存放的地址改变了,解引用出来的值才会变化
const如果在指针变量的 “ * ” 的右边【即 int * const a】
表达的意思是: a里面存放的地址是保持不变
只有主动对 *a 赋值才能改变这个值,但a里面的地址是一直保持不变的
经过以上了解后,再看回题目:
如果 const 位于 * 的左侧,则 const 就是用来修饰指针所指向的变量,即指针指向为常量
所以上题中的:*c 和 *d 不能变
如果 const 位于 * 的右侧,则 const 就是修饰指针本身,即指针本身是常量
所以上题中的: e和f的地址不能被改变
综上:A选项想改变*c的值就错了,B选项同理;e和f的地址不能被改变,所以C选项和D选项都错
JZ11 旋转数组的最小数字
描述
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。
数据范围:1≤n≤100001 \le n \le 100001≤n≤10000,数组中任意元素的值: 0≤val≤100000 \le val \le 100000≤val≤10000
要求:空间复杂度:O(1)O(1)O(1) ,时间复杂度:O(logn)O(logn)O(logn)
/**
*
* @param rotateArray int整型一维数组
* @param rotateArrayLen int rotateArray数组长度
* @return int整型
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
int minNumberInRotateArray(int* rotateArray, int rotateArrayLen ) {
// write code here
int min = rotateArray[0] ,i;
for(i = 0;i<rotateArrayLen;i++)
{
if(rotateArray[i] < min)
min = rotateArray[i];
}
return min;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)