描述
输入数字 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]
代码如下:
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
代码:
#includeint 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)
int minNumberInRotateArray(int* rotateArray, int rotateArrayLen ) {
// write code here
int min = rotateArray[0] ,i;
for(i = 0;i
if(rotateArray[i] < min)
min = rotateArray[i];
}
return min;
}



