C语言:选择+编程(每日一练Day15)

目录

选择题:

题一:

题二:

题三:

题四:

题五:

编程题:

题一:寻找奇数

思路一:

题二:寻找峰值

思路一:

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!


选择题:

题一:

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], *pa=a;

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 计算 prod=1*2*3*…*n ,并返回计算结果值。但当 n>12 时,返回值不正确。要找出该程序的错误,正确的调试方法是( )

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: 在prod=1;处设置断点,然后在函数调用堆栈中即可发现错误原因
D: 监视变量i的值,在for (i=1; i<=n; i++)行处设置断点,然后单步运行,直到发现错误原因

答案解析:

        依题目已知情况,当n<=12时结果是正确的,说明是随着参数的变大计算过程中哪里出了问题,故而要在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;
        j=0;
        for (i=0; i<n; i++)
                if (a[i]%2== _________ )
                {
                        a[j]=a[i];
                        _________;
                }

        return _________;
}

A: 0 j++ j    B: 1 j++ j+1    C: 0 j++ j+1    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.h>int 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[mid+1]时,说明峰在右边,即需要left = mid + 1;

                                        nums[mid] >= nums[mid+1]时,说明峰在左边,即需要 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[mid+1]){left = mid + 1;}else {right = mid;}}return left;
}

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!

                                              

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java八股文面试[数据库]——B树和B+树的区别

B树是一种树状数据结构&#xff0c;它能够存储数据、对其进行排序并允许以O(logn)的时间复杂度进行查找、顺序读取、插入和删除等操作。 1、B树的特性 B树中允许一个结点中包含多个key&#xff0c;可以是3个、4个、5个甚至更多&#xff0c;并不确定&#xff0c;需要看具体的实…

svn checkout 报 ‘svn: E000061: 执行上下文错误: Connection refused‘

问题 svn: E170013svn: E000061 ➜ svn svn checkout https://xxx.xxx.xxx.xxx:9443/svn/project-xxx/ svn: E170013: Unable to connect to a repository at URL https://xxx.xxx.xxx.xxx:9443/svn/project-xxx svn: E000061: 执行上下文错误: Connection refused链接在浏览…

详细说明OSPF常见的LSA

目录 1类LSA &#xff08;Router LSA&#xff09;介绍 总结&#xff1a;1类LSA 2类LSA &#xff08;Network LSA&#xff09;介绍 总结&#xff1a;2类LSA 3类LSA &#xff08;Summary LSA&#xff09;介绍 总结&#xff1a;3类LSA 5类LSA &#xff08;ase LSA&…

ARP欺骗

ARP欺骗定义 ARP欺骗&#xff08;英语&#xff1a;ARP spoofing&#xff09;&#xff0c;又称ARP毒化&#xff08;ARP poisoning&#xff0c;网络上多译为ARP病毒&#xff09;或ARP攻击&#xff0c;是针对以太网地址解析协议&#xff08;ARP&#xff09;的一种攻击技术&#x…

索引简单概述(SQL)

一、什么是索引&#xff1f; 索引是一种特殊的文件&#xff08;InnoDB数据表上的索引是表空间的一个组成部分&#xff09;&#xff0c;他们包含着对数据表里所有记录的引用指针。 索引是一种数据结构。数据库索引&#xff0c;是数据库管理系统中一个排序的数据结构&#xff0…

OceanBase 里的 schema 是什么?

李博洋 OceanBase 技术部研发工程师。 OceanBase 开源社区里经常会看到一些类似于 “ schema 是什么” 的疑问&#xff1a; 很多同学经常会误以为在 OceanBase 里&#xff0c;schema 只是 database 的同义词&#xff0c;这次分享就从 schema 是什么这个问题稍微展开聊一下。 首…

3月面试华为被刷,准备半年,9月二战华为终于上岸,要个27K不过分吧?

终于二战上岸了&#xff0c;二战华为也并不是说非华为不可&#xff0c;只是觉得心里憋着一口气&#xff0c;这就导致我当时有其他比较好的offer&#xff0c;我也没有去&#xff0c;就是想上岸华为来证明自己,现在也算是如愿了&#xff0c;来跟大伙们分享一下~ 个人情况 我本人…

【STM32】IIC使用中DMA传输时 发送数据总少一个的问题

问题描述 在使用STM32 I2C数据发送过程中&#xff0c;发现每轮实际发送出去的数据总比在DMA配置中设定的传输数据个数要少一个。比方说&#xff1a;DMA配置里设定的传输数据个数是10个&#xff0c;结果发现在总线上只能发出9个&#xff0c;经过进一步发现是少了最后一个数据。…

使用正则表达式在中英文之间添加空格

有时为了排版需要&#xff0c;我们可能需要在文章的中英文之间添加空格&#xff0c;特别是中文中引用了英文单词时&#xff0c;这种情况使用正则表达式整体修订是最明智的做法。首先&#xff0c;推荐使用在线的正则表格式工具&#xff1a;https://regex101.com/ , 该工具非常强…

C++11

全文目录 {}列表初始化initializer_list 声明autodecltype nullptrSTL中一些变化右值引用左值引用和右值引用的区别左值引用与右值引用比较移动构造和移动赋值模板的万能引用和完美转发 类的新功能新的类的成员函数强制生成和删除默认成员函数 可变参数模板emplace 和 insert l…

【pytest】tep环境变量、fixtures、用例三者之间的关系

tep是一款测试工具&#xff0c;在pytest测试框架基础上集成了第三方包&#xff0c;提供项目脚手架&#xff0c;帮助以写Python代码方式&#xff0c;快速实现自动化项目落地。 在tep项目中&#xff0c;自动化测试用例都是放到tests目录下的&#xff0c;每个.py文件相互独立&…

在VSCode上画UML的三个插件

2023年9月2日&#xff0c;周六晚上 因为写代理模式的博客时需要画UML&#xff0c;所以就在网上找了半天&#xff0c; 最后觉得VSCode上的这三个插件比较好用 目录 三个画UML的VSCode插件PlantUMLDraw.io IntegrationUMLet我个人推荐使用PlantUML 三个画UML的VSCode插件 Pla…

blender基本操作

文章目录 引言一、选择二、移动1. xyz轴移动2. xyz平面移动3. 精确移动4. 快捷键移动G 三、旋转四、缩放五、变换1. 变换坐标系2. 变换轴心&#xff1a; 六、吸附七、模式切换八、物体的合并和分离1. 合并2.分离 九、设置父子级关系十、叠加层和快速收藏夹1. 叠加层2. 快速收藏…

配电室电力智能运维云平台

目前电力运维面临的问题和困扰&#xff1a; 配电室安全稳定运行、电能使用高效节能是每个企业关注的问题&#xff0c;然而&#xff0c;由于供用电系统的运行维护又是一项复杂而且专业性很强的工程&#xff0c;如果没有先进的技术手段&#xff0c;靠人工值班、人工操作的运行方…

day30 日期转换

一&#xff1a;Date Date类&#xff1a; 这个类是java.util.Date getTime() : 获取内部维护的long值 Date date new Date(); long time date.getTime(); setTime()&#xff1a;按照指定的long值&#xff08;表示的时间&#xff09;设置Date表示的时间 time 60*60*24*1000;…

【力扣每日一题】2023.9.4 序列化和反序列化二叉搜索树

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一棵搜索二叉树&#xff0c;要我们将这棵二叉树转变为字符串&#xff0c;同时我们需要根据字符串再变回二叉树&#xff0c;具体…

Linux之虚拟主机功能

目录 虚拟主机功能 概述 基于 IP 地址的虚拟主机 原理 案例 --- 增加多个IP地址&#xff0c;实现基于不同IP地址的虚拟主机功能 基于端口号的虚拟主机 原理 案例 --- 基于不同端口号的虚拟主机 基于域名的虚拟主机 原理 域名解析 案例 --- 使用2个域名建立虚拟主机网…

Mysql 高阶语句

高阶语句 对 MySQL 数据库的查询&#xff0c;除了基本的查询外&#xff0c;有时候需要对查询的结果集进行处理&#xff1b; 例如只取 10 条数据、对查询结果进行排序或分组等&#xff0c;来获取想要有用的数据 无非还是对于MySQL —— 增、删、改、查 的操作 升降序 SELECT…

基于单片机的万年历温度无线传输控制系统系统

一、系统方案 本设计采用DS1302采集年月日时分秒&#xff0c;DS18B20采集温度值&#xff0c;按键设置温度报警上下限&#xff0c;实际测量温度低于下限或高于上限&#xff0c;蜂鸣器报警&#xff0c;同时将测量温度上传到蓝牙助手。 二、硬件设计 原理图如下&#xff1a; 三…

R语言图形的组合( par(),layout(),par(fig()) )

引入d.class进行画图 > d.class<-read.csv("D://class.csv",header T) > attach(d.class) > opar<-par(no.readonly TRUE)非常简单的数据&#xff0c;需要可自取 链接&#xff1a;https://pan.baidu.com/s/1zNx5z9JsaaRqFueRgGY3mQ 提取码&#x…