五道选择题:
1、下列定义数组的语句中正确的是【多选】( )
A、
#define size 10
char str1[size], str2[size+2];
B、char str[]; C、int num['10'];
D、int n=5; int a[n][n+2];
2、已知 i,j 都是整型变量,下列表达式中,与下标引用 X[i][j] 不等效的是【多选】( )
A、*(X[i]+j) B、*(X+i)[j] C、*(X+i+j) D、*(*(X+i)+j)
A、*(X[i]+j) B、*(X+i)[j] C、*(X+i+j) D、*(*(X+i)+j)
3、二维数组X按行顺序存储,其中每个元素占1个存储单元。若 X[4][4] 的存储地址为Oxf8b82140 X[9][9] 的存储地址为 Oxf8b8221c ,则 X[7][7] 的存储地址为( )
A、Oxf8b821c4 B、Oxf8b821a6 C、Oxf8b82198 D、Oxf8b821c0
4、下列代码运行后的结果是什么( )
#include<stdio.h>
int main()
{
char a = 'a', b;//1
printf("%c,", ++a);//2
printf("%c\n", b = a++);//3
return 0;
}
A、b,b B、b,c C、a,b D、a,c
5、求函数返回值,传入 -1 ,则在64位机器上函数返回( )
int func(int x)
{
int count = 0;
while (x)
{
count++;
x = x&(x - 1);//与运算
}
return count;
}
A、死循环 B、64 C、32 D、16
编程题1:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize){
int i=0;*returnSize=0;
int*new=(int*)malloc(sizeof(int)*numsSize);
//创建数组
for(i=0;i<numsSize;i++)
{
int tmp=abs(nums[i]);
//下标不能为负数
tmp-=1;
//因为是1到n的范围,对应的下标减1才能得到
nums[tmp]=-abs(nums[tmp]);
//把对应下标变为负数,用绝对值避免负负得正
}
for(i=0;i<numsSize;i++)
{
if(nums[i]>0)
{
new[*returnSize]=i+1;
//+1得对应的位置
(*returnSize)++;
}
}
return new;
//返回数组
}
编程题2:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
int findMaxConsecutiveOnes(int* nums, int numsSize){
int i=0;int count=0;int max=0;
for(i=0;i<numsSize;i++)
{
if(nums[i]==1)
{
count++;
}
else
{
max=max>count?max:count;
//比较当前连续的次数和之前连续的次数,大的赋值给max
count=0;
}
}
max=max>count?max:count;
//出来之后再判定一次,避免漏判
return max;
}
好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O