【暑期每日一练】 day8

news2024/9/27 5:44:32

目录

选择题

(1)

解析:

(2)

解析:

(3)

解析:

(4)

解析: 

(5)

解析:

编程题

题一

描述

输入描述:

输出描述:

示例

解析 

代码实现

题二

描述

示例

​编辑

提示

解析 

代码实现

总结


选择题

(1)

1、如下程序的运行结果是( )

char c[5]={'a', 'b', '\0', 'c', '\0'};
printf("%s", c);

A: 'a' 'b'  B: ab\0c\0  C: ab c  D: ab
答案: D

解析:

字符串的结束标志是'\0',而'\0'的ASCII值是0,而c[2]被初始化为0,就相当于是'\0',故字符串打印的内容只有"ab"

(2)

2、若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确引用的是( )

A: a[2][0]  B: a[2][3]  C: a[0][3]  D: a[1>2][1]
答案:D

解析:

本题主要考虑数组越界访问的情况,二维数组的行和列都是从0开始的,对于a数组来说,行下标最大是1,列下标最大是2,D选项中1>2表达式的值是0,是正确的,其他选项行和列都可能存在越界,A是行越界,B是行和列都越界,C是列越界。

(3)

3、在下面的字符数组定义中,哪一个有语法错误( )

A: char a[20]="abcdefg";  B: char a[]="x+y=5.";  C: char a[15];  D: char a[10]='5';
答案:D

解析:

D中的'5'是一个字符常量,不能给字符型数组a初始化

(4)

4、下列定义数组的语句中正确的是【多选】( )

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];

答案:A、C

解析: 

A选项:宏替换,没问题;B选项:非法定义,一维数组必须定义数组元素个数;C选项:字符'0',转换成十进制为48,所以该选项最终为int num[48];D选项:错误,数组定义下角标不能为变量,注:C99标准中支持了使用变量,这里不做特殊考虑。

(5)

5、已知 i,j 都是整型变量,下列表达式中,与下标引用 X[i][j] 不等效的是【多选】( )

A: *(X[i]+j)  B: *(X+i)[j]  C: *(X+i+j)  D: *(*(X+i)+j)
答案:B、C

解析:

 本题考查的是二维数组的元素访问,A选项是 正确的,X[i]就是第i行的数组名,数组名表示首元素的地址,X[i]表示第i行的第一个元素的地址,+j后就是第i行下标为j的元素的地址,整体解引用就是X[i][j],A正确。B选项因为[]的优先级高于*,所以代码相当于**((x+i)+j),X+i+j后就越界了,并不代表X[i][j],所以错误。C选项也明显不对,X是二维数组的数组名,数组名相当于第一行的地址,X+i+j,跳过了i+j行,就越界了,C错误。D选项是标准的指针形式访问二位数组的一个元素。

编程题

题一

描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次

例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

数据范围: 1≤n≤500 

输入描述:

输入一行没有空格的字符串。

输出描述:

输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。

示例

解析 

这道题思路比较简单,因为题目圈定出现的字符都是 ascii 值小于127的字符,因此只需要定义一个标记数组大小为127 ,然后将字符作为数组下标在数组中进行标记,若数组中没有标记过表示第一次出现,进行计数,否则表示重复字符。

示例:查表法, "aca" ,首先把a字符( ascii 值为 97 )作为下标,将标记数组的第 97 位置 1 ,下次如果还有 a 字符出现,到下标 'a' 或者 97 的位置一看是1就表示a已经统计过了。

代码实现

#include <stdio.h>
int main()
{
    char tmp[501] = {0};
    while(~scanf("%s", tmp)) 
    {
        char table[128] = {0}, *ptr = tmp;
        int count = 0;
            while(*ptr != '\0') 
            {
                if (table[*ptr] != 1) {//判断字符ascii值作为下标的位置是否被标记过,是否是重复字符
                count++; //当前字符的位置没有被标记过表示没有出现过,则计数+1
            } 
        table[*ptr++] = 1;//将字符ascii值作为下标的位置进行标记置1
    }
printf("%d\n", count);
} 
return 0;
}

题二

描述

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例

提示

解析 

一个数组中有一个数字出现次数大于 n/2 ,从第 0 个字符开始,假设它就是最多的那个数字,遇到相同的数字则计数 +1 , 遇到不同的则计数 -1 ,其实就是互相消耗,等到计数为 0 的时候,表示本次互拼完毕,从下一个字符重新开始互拼,但是归根结底出现次数大于 n/2 的这个数字数量更多,因此也是最后保留的字符。

示例: "23335" 首先从字符 2 开始计数 1 ,遇到 3 ,不同则 -1 ,互拼消耗 重新从剩下的 "335" 开始的过程,这时候保存的字符为 3 ,遇到 3 则计数 +1 , 遇到5则计数 -1 ,在计数不为 0 时,走到末尾保存的字符就是个数超过n/2 的字符

代码实现

int majorityElement(int* nums, int numsSize)
{
    int count = 1;
    int tmp = nums[0];
    for (int i = 1; i < numsSize; i++) 
    {
        if (tmp == nums[i]) 
        {//与保存的字符相同则计数+1
            count++;
        } 
        else 
        {//与保存的字符不同则计数-1
            count--;
        //计数为0表示有可能保存的字符不是最多的字符,换下一个
            if (count == 0) tmp = nums[i + 1];
        }
    } 
return tmp
}

总结

关于今日练习讲解到这儿,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下。

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

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

相关文章

简单聊聊创新与创造力

文章目录 前言一、大脑运行的两种方式1、聚焦模式2、发散模式3、影响想法的因素a、背景知识b、兴趣c、天赋 4、思维固化 二、想法的不可靠1、对想法进行验证2、颠覆性创新&#xff0c;挤牙膏式创新3、为什么模仿这么多 三、更多更多的idea1、个人的方面a、积累不同的背景知识b、…

怎么在线修改图片?分享一个图片修改工具

无论是在个人或商业领域&#xff0c;我们都需要使用高质量的图片来传达信息或提高品牌形象。大尺寸的图片也会占据大量的存储空间和带宽&#xff0c;影响网站的加载速度和用户体验。因此&#xff0c;我们需要一种高效的工具来解决这个问题。今天向大家介绍一款非常实用的图片处…

(学习笔记-内存管理)内存分段、分页、管理与布局

内存分段 程序是由若干个逻辑分段组成的&#xff0c;比如可由代码分段、数据分段、栈段、堆段组成。不同的段是有不同的属性的&#xff0c;所以就用分段的形式把这些分段分离出来。 分段机制下&#xff0c;虚拟地址和物理地址是如何映射的&#xff1f; 分段机制下的虚拟地址由…

JetBrains 为测试自动化打造的强大 IDE-Aqua

QA 和测试工程对现代软件开发必不可少。 在 JetBrains&#xff0c;我们相信使用正确的工具对每项工作都很重要。 对我们来说&#xff0c;为自动化测试开发创建单独的工具是自然而然的事&#xff0c;因为这使我们能够满足多角色软件开发团队的需求。 我们很高兴能够推出 JetBra…

【Vscode】远程内存占用大

查看远程服务器上的扩展 依次删除&#xff0c;重新连接后观察内存占用 此扩展占用较高&#xff0c;约2G&#xff08;前后端项目&#xff0c;依赖较多导致&#xff09;

JS前端读取本地上传的File文件对象内容(包括Base64、text、JSON、Blob、ArrayBuffer等类型文件)

读取base64图片File file2Base64Image(file, cb) {const reader new FileReader();reader.readAsDataURL(file);reader.onload function (e) {cb && cb(e.target.result);//即为base64结果}; }, 读取text、JSON文件File readText(file, { onloadend } {}) {const re…

一个写了3年半flutter的小伙,突然写了2个月uniapp的感悟!

前言 因为某些原因&#xff0c;在过去的三年半时间&#xff0c;我除了flutter之外&#xff0c;很少接触其他的框架&#xff0c;期间除了学习了Android&#xff08;主要是Kotlin、jetpack&#xff09;、GoLang Gin之外基本上很少接触其他的框架。而在最近的两个月&#xff0c;突…

如何基于 Apache Doris 构建新一代日志分析平台

作者&#xff1a;肖康&#xff0c;SelectDB 技术 副总裁 、Apache Doris Committer 日志数据是企业大数据体系中重要的组成部分之一&#xff0c;这些数据记录了网络设备、操作系统以及应用程序的详细历史行为&#xff0c;蕴含了丰富的信息价值&#xff0c;在可观测性、网络安全…

项目篇:Echo论坛系统项目

一、登录注册模块 1、注册功能 1.1、注册流程图 1.2、注册代码 /*** 用户注册* param user* return Map<String, Object> 返回错误提示消息&#xff0c;如果返回的 map 为空&#xff0c;则说明注册成功*/public Map<String, Object> register(User user) {Map&l…

YOLOv8实现K折交叉验证教程:解决数据集样本稀少和类别不平衡的难题

本篇博文为大家讲解 YOLOv8 实现 k折交叉验证的流程,包含代码使用和讲解。 K折交叉验证 概念 K折交叉验证 (K-fold cross-validation) 是一种常用于评估机器学习模型性能的技术。 它可以更充分地利用有限的数据集,减少由于数据划分不当而引起的偏差,提高模型的泛化能力。…

计算机里基本硬件的组成以及硬件协同

文章目录 冯诺依曼体系输入设备输出设备存储器运算器控制器协同工作的流程 冯诺依曼体系 世界上第一台通用计算机&#xff0c;ENIAC&#xff0c;于1946年诞生于美国一所大学。 ENIAC研发的前期&#xff0c;需要工作人员根据提前设计好的指令手动接线&#xff0c;以这种方式输入…

卸载大脑,相信DFS

切莫相信动规&#xff0c;吾将为您指明前进之路 印子 比赛时&#xff0c;你是否有这样的经历&#xff1a;不敢用for暴搜&#xff0c;又不会用数学公式推理&#xff1b;焦急地在纸上打草&#xff0c;却没有优化思路&#xff1b;明明比赛前一天晚上背了那么多模板却脑子一片空白…

Modbus tcp转ETHERCAT网关modbus tcp/ip协议

捷米JM-ECT-TCP网关能够连接到Modbus tcp总线和ETHERCAT总线中&#xff0c;实现两种不同协议设备之间的通讯。这个网关能够大大提高工业生产的效率和生产效益&#xff0c;让生产变得更加智能化。捷米JM-ECT-TCP 是自主研发的一款 ETHERCAT 从站功能的通讯网关。该产品主要功能是…

《Deep Leakage from Gradients》

Deep Leakage from Gradients 摘要 现在的分布式机器学习&#xff0c;或联邦学习中最常用的一种方法就是交换梯度&#xff0c;长期以来人们都认为交换梯度的安全的&#xff0c;但是本文提出从公开共享的梯度中获得私有训练数据是可能的。文章将这种泄漏命名为Deep leak from …

PDPS教程:导出带颜色的JT格式2D布局图文件的另一种方法

目录 概述 布局图平面化与边缘化处理 导出为JT格式文件 JT格式文件查看 概述 在PDPS软件中导入机器人生产线或工作站2D布局图之前&#xff0c;要先将布局图文件转换为JT格式。 使用Crossmanager软件转换出来的2D布局图文件会将图形元素原有的颜色自动修改为黑白颜色&…

源码学习初章-基础知识储备

文章目录 学前准备源码地址引言extern "C" 宏定义平台宏跨平台宏vstdio平台禁用警告宏 连接、双层宏定义函数宏系统函数宏自定义函数宏多语句执行宏do while0 普通宏定义 C的一些必备函数知识回调函数和函数指针回调函数wireshark-4.0.7源码例子函数指针wireshark4.0…

Flutter-基础Widget

Flutter页面-基础Widget 文章目录 Flutter页面-基础WidgetWidgetStateless WidgetStateful WidgetState生命周期 基础widget文本显示TextRichTextDefaultTextStyle 图片显示FlutterLogoIconImageIamge.assetImage.fileImage.networkImage.memory CircleAvatarFadeInImage 按钮R…

视频号私信关注引流脚本实操演示教学,分享几个微信视频号引流推广的方法

大家好&#xff0c;我是小刘互联网思维。最近视频号越来越火&#xff0c;所以很多人或者小团队也都盯上了这个新兴市场。有人选择手动引流&#xff0c;就一定有人想软件引流&#xff0c;有些朋友就私信问我这个软件引流要怎么操作&#xff0c;接下来我就为大家简单讲解视频号脚…

【数据结构】【王道408】——PPT截图与思维导图

自用视频PPT截图 视频网址王道B站链接 23考研 408新增考点&#xff1a; 并查集&#xff0c;红黑树 2023年408真题数据结构篇 408考纲解读 考纲变化 目录 第一章 绪论第二章 线性表顺序表单链表双链表循环链表静态链表差别 第三章 栈 队列 数组栈队列栈的应用数组 第四章 串第五…

RustDesk 1.2 现已发布

RustDesk 1.2 现已发布&#xff0c;此版本采用 Flutter 重写桌面版本&#xff0c;支持 Wayland 被控。 一些值得关注的变化有&#xff1a; 用 Flutter 重写支持 ipv6&#xff08;Beta&#xff09;增加一次性密码QuickSupport &#xff08;Beta&#xff09;硬件编解码器 H264 /…