重庆网站制作设计,网站动画效果怎么做,山西seo博客,免费域名的网站目录
选择题#xff1a;
题一#xff1a;
题二#xff1a;
题三#xff1a;
题四#xff1a;
题五#xff1a;
编程题#xff1a;
题一#xff1a;寻找奇数
思路一#xff1a;
题二#xff1a;寻找峰值
思路一#xff1a;
本人实力有限可能对一些地方解…
目录
选择题
题一
题二
题三
题四
题五
编程题
题一寻找奇数
思路一
题二寻找峰值
思路一
本人实力有限可能对一些地方解释和理解的不够清晰可以自己尝试读代码或者评论区指出错误望海涵
感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连 选择题
题一 1、有如下代码则 *(p[0]1) 所代表的数组元素是 int a[3][2] {1, 2, 3, 4, 5, 6}, *p[3]; p[0] a[1]; A: a[0][1] B: a[1][0] C: a[1][1] D: a[1][2] 答案解析 p是一个指针数组p[0] a[1];此处a[1]是二维数组的第二行的数组名数组名表示首元素的地址a[1]是a[1][0]的地址所以p[0]中存储的是第2行第1个元素的地址p[0]1就是第二行第2个元素的地址*(p[0]1)就是第二行第二个元素了。所以C正确。 题二 2、关于指针下列说法正确的是【多选】 A: 任何指针都可以转化为void * B: void *可以转化为任何指针C: 指针的大小为8个字节 D: 指针虽然高效、灵活但可能不安全 答案解析 C选项指针占几个字节要看平台64位环境下8个字节32位环境下4个字节。 题三 3、以下 scanf 函数调用选项中 错误的是 struct T { char name[20]; int age; int sex; } a[5], *paa; A: scanf(%s,a[0].name); B: scanf(%d, pa[0].age);C: scanf(%d,(pa-age)); D: scanf(%d, pa-age); 答案解析 该题考察的是通过scanf函数的调用对结构体数据类型进行初始化。scanf(输入控制符, 输入参数);功能将从键盘输入的字符转化为“输入控制符”所规定格式的数据然后存入以输入参数的值为地址的变量中。scanf输入时要通过地址找空间B、C用了是正确的。name属于字符数组的数组名相当于数组的首地址A正确。单独的pa-age可用于输出语句获取 值的形式用在scanf中的时候需要操作符D错误。 题四 4、如下函数 fun 计算 prod1*2*3*…*n 并返回计算结果值。但当 n12 时返回值不正确。要找出该程序的错误正确的调试方法是 int fun(int n) { int prod 1 , i 0; for(i 1;i n;i) { prod * i; } return prod; } A: 监视变量prod的值在prod * i;行处设置断点然后单步运行直到发现错误原因B: 监视变量prod的值在return prod;行处设置断点程序中断后即可发现错误原因C: 在prod1;处设置断点然后在函数调用堆栈中即可发现错误原因D: 监视变量i的值在for (i1; in; i)行处设置断点然后单步运行直到发现错误原因 答案解析 依题目已知情况当n12时结果是正确的说明是随着参数的变大计算过程中哪里出了问题故而要在prod * i;处设断点查看原因。错误原因是数据过大时整型溢出。 题五 5、下列给定程序中函数 fun 的功能是把形参a所指数组中的奇数按原顺序依次存放到 a[0]、a[1]、a[2]… 中把偶数从数组中删除奇数个数通过函数值返回。 例如若a所指数组中的数据最初排列为 9,1,4,2,3,6,5,8,7 删除偶数后a所指数组中的数据为 9,1,3,5,7 返回值为5。请在程序的下画线处填入正确的内容并将下画线删除使程序得出正确的结果 int fun(int a[], int n) { int i, j; j0; for (i0; in; i) if (a[i]%2 _________ ) { a[j]a[i]; _________; } return _________; } A: 0 j j B: 1 j j1 C: 0 j j1 D: 1 j j 答案解析 代码实现的思路应该是arr[i]是奇数的时候要存储起来所以第一个空是1最开始j是0每次找到一个奇数就存储到arr[j]的位置那接下里j需要1所以得第二个空是j当循环停止的时候j其实就是奇数的个数。所以最后返回j第三个空是j。所以选D。 编程题
题一寻找奇数
寻找奇数_牛客题霸_牛客网 (nowcoder.com) 示例1 输入 52 1 2 3 1 输出 3 思路一 必懂知识按位异或“ ^ ”:二进制位相同为“0”不同为“1”。 第一步定义记录元素值的result以及元素个数n 第二步遍历题目所给数组,并输入各个下标对应的元素给result按位异或最终将相同的数抵消为“0” 第三步最后得到的就是数组中奇数个元素打印。
#include stdio.h
#include string.hint main()
{int n 0;int result 0;scanf(%d, n);int num 0;//遍历题目数组for (int i 0; i n; i){//输入各个下标对应的元素scanf(%d, result);//按位异或最终将相同的数抵消为“0”num ^ result;}//最后得到的就是数组中奇数个元素printf(%d\n, num);return 0;
}
题二寻找峰值
寻找峰值_牛客题霸_牛客网 (nowcoder.com) 示例1 输入 [2,4,1,2,7,8,4] 返回值 1说明 4和8都是峰值元素返回4的索引1或者8的索引5都可以 思路一
二分查找 第一步首先排除边界情况再定义首元素下标left尾元素下标right 第二步二分查找nums[mid] nums[mid1]时说明峰在右边即需要left mid 1 nums[mid] nums[mid1]时,说明峰在左边即需要 right mid; 第三步最后二分查找使下标left就是最大值返回left。
int findPeakElement(int* nums, int numsLen )
{//排除边界情况if(numsLen 1 || nums[0] nums[1])return 0;if(nums[numsLen-1] nums[numsLen-2])return numsLen-1;int left 0;int right numsLen-1;//二分查找使下标left就是最大值while(left right){int mid (left right) / 2;if(nums[mid] nums[mid1]){left mid 1;}else {right mid;}}return left;
}
本人实力有限可能对一些地方解释和理解的不够清晰可以自己尝试读代码或者评论区指出错误望海涵
感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连