前后端分离的网站怎么做,宁波企业网站制作推荐,整形网站建设方案策划书,花都区建设网站1.题1 
float f[10];
// 假设这里有对f进行初始化的代码
for(int i  0; i  10;)
{
if(f[i]  0)
break;
} 
上述代码有那些缺陷#xff08;#xff09; 
A: for(int i  0; i  10;)这一行写错了 B: f是float型数据直接做相等判断有风险 
C: f[i]应该是f[i]    D: 没有缺…1.题1 
float f[10];
// 假设这里有对f进行初始化的代码
for(int i  0; i  10;)
{
if(f[i]  0)
break;
} 
上述代码有那些缺陷 
A: for(int i  0; i  10;)这一行写错了 B: f是float型数据直接做相等判断有风险 
C: f[i]应该是f[i]    D: 没有缺陷 
我们来分析一下我们创建了一个float类型的数组for循环中没有调整步骤但是在if中却有一个调整i变量的操作可以弥补没有调整的操作我们知道for循环中可以没有调整但是肯呢个会导致陷入死循环。显然在这里是不会存在的。还有就是float类型的数据如果直接相等是可能出问题的因为浮点数在存入内存时可能保存不完整这样的话可能你不会得到想要的结果在这里i是一个前置这样的话会使f数组中的第一个元素得不到比较这会影响代码的严谨。所以我们应该选B,C 
2.题2 
void GetMemory(char **p, int num)
{
if(NULL  p  num  0)//1
return;
*p  (char*)malloc(num);
return;
}
int main()
{
char *str  NULL;
GetMemory(str, 80); //2
if(NULL ! str)
{
strcpy(str, hello); //3
printf(str); //4
}
return 0;
} 
上述代码有那些错误的地方 
A: 1 B: 2 C: 3 D: 4 
我们来分析一下1处是为了避免直接传入空指针和传入的数值不能为0所以这里应该用或如果用的是的话是两个同时成立才会直接返回。所以1错误。2处大家会不会觉得是错的呢在这里我们对空指针str进行取地址操作看上去像是错的其实这只是未定义行为并不是错的而且我们的GetMemory函数中是不能直接传空指针但是没有规定不能通过地址找到str。3处strcpy函数的参数是目标空间的地址和需要复制空间的地址这两个参数都是一级指针但是在这里我们对str进行了取地址操作这样的话我们strcpy就需要用二级指针来解说很显然strcpy不具备这个条件所以3是错的。4是对的之前有说过。 
3.题3 
#include stdio.h
typedef union
{
int a;
struct
{
short b;
short c;
};
}X;
int main()
{
X x;
x.a  0x20150810;
printf(%x,%x\n, x.b, x.c);
return 0
} 
上述代码运行结果可能是  
A: 2015,810 B: 50810,201 C: 810,2015 D:20150,810 
我们来分析一下对于0x20150810 如果按照大端模式存储从低地址到高地址20 15 08 10 输出从低地址到高地址20 15 08 10 如果按照小端模式存储从低地址到高地址10 08 15 20 输出从高地址到低地址08 10 20 15 此数以int类型赋值给联合体x.a而以结构成员b和c分开访问分别拿到低地址的2个字节和高地址的2个字节大端下是2015和810小端下是810和2015 
4.题4 
#define MAX 255
int main()
{
unsigned char A[MAX], i;
for(i  0; i  MAX; i)
A[i]  i;
return 0;
} 
上述这个程序执行后会有什么错误或者效果 
A: 数组越界 B: 死循环 C: 栈溢出 D: 内存泄露 
我们来分析一下我们定义了一个MAX值为255我们知道无符号的char最大值为255再加1就变为0我们的for循环判断条件为iMAX但是我们的i最大也只能为255所以不可能让循环停下来。所以程序会陷入死循环还有一个问题我们的A[i]中的iMax时就会导致数组越界。这里没有不断地申请空间且也不是在动态内存中申请的空间。 
5.题5 
2、给定一个长度为n的数组 nums 请你找到峰值并返回其索引。数组可能包含多个峰值在这种情况下返回任 何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于 2.假设 nums[-1]  nums[n]  负无穷小 3.对于所有有效的 i 都有 nums[i] ! nums[i  1] 
示例 输入[2,4,1,2,7,8,4] 返回值1 说明4和8都是峰值元素返回4的索引1或者8的索引5都可以 
int findPeakElement(int* nums, int numsLen ) {
//边界情况处理1个元素前后都是负无穷 以及 0号位置大于1号位置-1位置负无穷的情况
if (numsLen  1 || nums[0]  nums[1]) return 0;
//末尾位置数据大于上一个位置数据而nums[numsLen]负无穷的情况
if (nums[numsLen-1]  nums[numsLen-2]) return numsLen-1;
int left  0, right  numsLen - 1, mid;
while(left  right) {
mid  left  (right - left) / 2;
if (nums[mid]  nums[mid  1])//中间比右边小意味着右边肯定有个峰值
left  mid  1;
else //否则在左边包括当前位置肯定有个峰值
right  mid;
}
return left;
} 谢谢