当前位置: 首页 > news >正文

【C/C++笔试练习】——数组名和数组名、switch循环语句、数据在计算机中的存储顺序、字符串中找出连续最长的数字串、数组中出现次数超过一半的数字

文章目录

  • C/C++笔试练习
    • 1.数组名和&数组名
      • (1)数组名和&数组名的差异
      • (2)理解数组名和指针偏移
      • (3)理解数组名代表的含义
      • (4)理解数组名代表的含义
    • 2.switch循环语句
      • (6)理解switch语句中的case特点
    • 3.数据在计算机中的存储顺序
      • (7)小端在计算机中的存储方式
    • 4.编程题
      • (8)字符串中找出连续最长的数字串
      • (9)数组中出现次数超过一半的数字

C/C++笔试练习

1.数组名和&数组名

(1)数组名和&数组名的差异

  以下C语言指令:

int a[5] = {1,3,5,7,9};
int *p = (int* )(&a+1);
printf(%d,%d”,*(a+1)*(p-1));

  运行结果是什么?

  A 2,1    B 3,1
  C 3,9    D 运行时崩溃

  

  数组名和&数组名在C和C++编程语言中具有不同的含义。

  数组名:数组名是用于引用数组的标识符。它可以是任何有效的标识符,通常用于对数组进行索引和访问数组元素。假设有一个名为“arr”的数组,就可以使用“arr[0]”来访问第一个元素,以此类推。

  &数组名:在C和C++中,&运算符用于获取变量的地址。因此,&数组名是用来获取数组的地址。这通常用于传递数组到函数或从函数返回数组。当你使用&数组名时,你实际上得到的是一个指向数组的指针。

  因此,数组名和&数组名的主要区别在于:数组名代表的是数组中的元素,而&数组名代表的是整个数组的地址。

在这里插入图片描述

  结合上面内容,所以这段C++的代码中,定义了一个包含5个整数的数组a,然后创建了一个指向整个数组类型的指针p,&a代表了取整个数组,(&a+1)代表指针需要跳过一个a的类型大小,此时的a是一整个数组,所以(&a+1)代表了向后偏移一个数值大小, 此时的p指向数组最尾段的下一个int类型的地址。

  然后打印* (a+1)和 * (p-1)),a是数组名,数组名不加修饰的,代表了数组首元素的大小,(a+1)表示地址向后偏移一个a类型大小的指针,此时的a为int,(a+1)就表示指向a数组的第二个元素,*(p-1)代表p向前移动一个数据类型大小,指向9,即可得到结果。

  
在这里插入图片描述
   答案选:C

             

(2)理解数组名和指针偏移

  以下程序的输出结果是()

#include <stdio.h>
main() 
{char a[10] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', 0}, *p;int i;i = 8;p = a + i;printf("%s\n", p - 3);
}

  A 6      B 6789
  C ‘6’    D 789

  首先,数组a被初始化为字符数组,包含10个元素,值为’1’到’9’和’\0’。然后创建一个指针p=a,此时的a不加&修饰,就表示数组的首元素地址 ‘1’ 元素的地址。然后对a+8,表示指向首元素的地址向后偏移8个数据类型大小,此时p指向9。(0和’\0’是一样的)

  在printf语句中,先将p向前移动3个位置,即指向了字符’6’,然后再打印字符串。输出的是从’6’开始的4个字符,即’6789’。

在这里插入图片描述

   答案选:B

             

(3)理解数组名代表的含义

   以下代码

char *ptr;
char myString[] = "abcdefg";
ptr = myString;
ptr += 5;
cout<<ptr;

   代码执行之后的结果是?
   A Compiler error       B fg
   C efg              D defg

  结合上面的内容,我们容易知道ptr是一个char类型的指针,此时的ptr指向myString数组的首元素地址,对ptr+=5,ptr指针向后偏移5个指向元素类型大小的距离。此时的ptr指向f,cout<<ptr,表示打印这个ptr指针指向的字符串。

在这里插入图片描述

   答案选:B

             

(4)理解数组名代表的含义

   下面代码会输出()

int main()
{int a[4]={1,2,3,4};int *ptr=(int*)(&a+1);printf("%d",*(ptr-1));
}

   A 4       B 1
   C 2       D 3

  结合上面的内容,我们容易知道ptr是一个(int*)(&a+1)的指针,对&a+1,表示指针向后面偏移一整个数组的大小,此时ptr指针指向4元素的后面一个元素。

  要注意(&a+1)赋值给ptr的时候强转成了(int*)的指针,要注意此时指向整个数组的指针成为了指向一个数组元素的指针。 打印时对ptr-1表示指针,向前偏移一个(int*)类型大小,此时ptr指向4。

在这里插入图片描述
   答案选:A

             

2.switch循环语句

(6)理解switch语句中的case特点

  以下程序的输出结果是()

#include <iostream.h>
int main()
{int x=3,y=3;switch(x%2){case 1:switch (y){case 0:cout<<"first";case 1:cout<<"second";break;default:cout<<"hello";}case 2:cout<<"third";}return 0;
}

  A second third      B hello
  C first second       D hellothird

   在这个程序中,当x%2的结果为1时,y的值为3,所以会先进入到(x%2)的case1中;然后y=3,case1和case2都不满足,直接default,打印hello,注意下面的语句没有break,所以程序会继续向下执行,进入到(x%2)中的case2,打印third。

   正常情况下,在C++中,每个case标签后都应该有一个break语句,来防止程序继续执行下一个case。如果没有break,程序将会继续执行下一个case的代码, 直到遇到break或者switch结束。

在这里插入图片描述
   答案选:D

             

3.数据在计算机中的存储顺序

(7)小端在计算机中的存储方式

  假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

#include <stdio.h>
int main()
{long long a = 1, b = 2, c = 3;printf("%d %d %d\n", a, b, c);return 0;
}

  A 1,2,3      B 1,0,2
  C 1,3,2      D 3,2,1

  在计算机中数据的存储分为大端和小端存储,什么是大端小端:

  大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;

  小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。

在这里插入图片描述

   答案选:B

   设计一个函数来判断当前机器的字节序:

void check_sys()
{int i = 1;if (*(char*)&i == 0){cout << "大端";}else{cout << "小端";}
}

在这里插入图片描述

             

4.编程题

(8)字符串中找出连续最长的数字串

字符串中找出连续最长的数字串

  解题思路:

  遍历字符串,使用cur去记录连续的数字串,如果遇到不是数字字符,则表示一个连续的数字串结束了,则将数字串跟之前的数字串比较,如果更长,则更新更长的数字串更新到ret。

#include <iostream>
using namespace std;int main() {string str,ret,cur;cin>>str;for(int i=0;i<=str.size();i++)//遍历整个字符串{//如果是数字就加入到临时数字串cur中if(str[i]>='0'&&str[i]<='9'){cur+=str[i];}else//如果遇到了字符就和ret比较,保存较大的数字串{if(cur.size()>ret.size()){ret=cur;cur.clear();}else//如果cur比ret长,替换ret,否则重置cur{cur.clear();}}}cout<<ret;return 0;
}

             

(9)数组中出现次数超过一半的数字

  解题思路1:

  众数:就是出现次数超过数组长度一半的那个数字,如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数。

class Solution {public:int MoreThanHalfNum_Solution(vector<int> numbers) {if (numbers.empty()) return 0;
// 遍历每个元素,并记录次数;若与前一个元素相同,则次数加1,否则次数减1int result = numbers[0];int times = 1; // 次数for (int i = 1; i < numbers.size(); ++i) {if (times != 0) {if (numbers[i] == result) {++times;} else {--times;}} else {result = numbers[i];times = 1;}}
// 判断result是否符合条件,即出现次数大于数组长度的一半times = 0;for (int i = 0; i < numbers.size(); ++i) {if (numbers[i] == result) ++times;}return (times > numbers.size() / 2) ? result : 0;}
};

  

  解题思路2:

   数组排序后,如果符合条件的数存在,则一定是数组中间那个数。但是时间复杂度稍高。

class Solution {
public:int MoreThanHalfNum_Solution(vector<int>& numbers) {sort(numbers.begin(),numbers.end());return numbers[numbers.size()/2];}
};

相关文章:

【C/C++笔试练习】——数组名和数组名、switch循环语句、数据在计算机中的存储顺序、字符串中找出连续最长的数字串、数组中出现次数超过一半的数字

文章目录 C/C笔试练习1.数组名和&数组名&#xff08;1&#xff09;数组名和&数组名的差异&#xff08;2&#xff09;理解数组名和指针偏移&#xff08;3&#xff09;理解数组名代表的含义&#xff08;4&#xff09;理解数组名代表的含义 2.switch循环语句&#xff08;6…...

力扣每日一题(+日常水题|树型dp)

740. 删除并获得点数 - 力扣&#xff08;LeetCode&#xff09; 简单分析一下: 每一个数字其实只有2个状态选 or 不 可得预处理每一个数初始状态(不选为0,选为所有x的个数 * x)累加即可 for(auto &x : nums)dp[x][1] x;每选一个树 i 删去 i 1 和 i - 1 故我们可以将 i…...

使用perming加速训练可预测的模型

监督学习模型的训练流程 perming是一个主要在支持CUDA加速的Windows操作系统上架构的机器学习算法&#xff0c;基于感知机模型来解决分布在欧式空间中线性不可分数据集的解决方案&#xff0c;是基于PyTorch中预定义的可调用函数&#xff0c;设计的一个面向大规模结构化数据集的…...

【数据库】存储引擎InnoDB、MyISAM、关系型数据库和非关系型数据库、如何执行一条SQL等重点知识汇总

目录 存储引擎InnoDB、MyISAM的适用场景 关系型和非关系型数据库的区别 MySQL如何执行一条SQL的 存储引擎InnoDB、MyISAM的适用场景 InnoDB 是 MySQL 默认的事务型存储引擎&#xff0c;只有在需要它不支持的特性时&#xff0c;才考虑使用其它存储引擎。实现了四个标准的隔…...

车道线分割检测

利用opencv&#xff0c;使用边缘检测、全局变化梯度阈值过滤、算子角度过滤、HLS阈值过滤的方法进行车道线分割检测&#xff0c;综合多种阈值过滤进行检测提高检测精度。 1.利用cv2.Sobel()计算图像梯度(边缘检测) import cv2 import numpy as np import matplotlib.pyplot a…...

树莓集团又一力作,打造天府蜂巢成都直播产业园样板工程

树莓集团再次推出惊艳之作&#xff0c;以打造成都天府蜂巢直播产业园为目标。该基地将充分展现成都直播产业园的巨大潜力与无限魅力&#xff0c;成为一个真正的产业园样板工程。 强强联手 打造未来 成都天府蜂巢直播产业园位于成都科学城兴隆湖高新技术服务产业园内&#xff0…...

ubuntu 软件包管理之二制作升级包

Deb 包(Debian 软件包)是一种用于在 Debian 及其衍生发行版(例如 Ubuntu)中分发和安装软件的标准包装格式。它们构成了 Debian Linux 发行版中的软件包管理系统的核心组成部分,旨在简化软件的分发、安装、更新和卸载流程。在本篇文章中,我们将深入探讨以下内容: Deb 包基…...

TCP/IP网络江湖——数据链路层的防御招式(数据链路层下篇:数据链路层的安全问题)

目录 引言 一、 数据链路层的隐私与保密 二、数据链路层的安全协议与加密...

ios项目安装hermes-engine太慢问题

问题说明 ios工程&#xff0c;在使用"pod install"安装依赖的时候&#xff0c;由于超时总是报错 $ pod install ... Installing hermes-engine (0.71.11)[!] Error installing hermes-engine [!] /usr/bin/curl -f -L -o /var/folders/4c/slcchpy55s53ysmz_1_q_gzw…...

构建个人云存储:本地电脑搭建SFTP服务器,开启公网访问,轻松共享与管理个人文件!

本地电脑搭建SFTP服务器&#xff0c;并实现公网访问 文章目录 本地电脑搭建SFTP服务器&#xff0c;并实现公网访问1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内…...

springboot 下载文件为excel数据,中文自定义单元格宽度

/**2 * Description:表格自适应宽度(中文支持)3 * Author: 4 * param sheet sheet5 * param columnLength 列数6 */7 private static void setSizeColumn(HSSFSheet sheet, int columnLength) {8 for (int columnNum 0; columnNum < …...

机器学习 面试/笔试题

1. 生成模型 VS 判别模型 生成模型&#xff1a; 由数据学得联合概率分布函数 P ( X , Y ) P(X,Y) P(X,Y),求出条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)的预测模型。 朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型&#xff08;LDA&#xff09;、限制玻尔兹曼机…...

某企查ymg_ssr列表详情

js篇— 今天来看下某企查的列表详情–侵删 header发现这个参数 先断点一下 然后上一步 就到了这个地方 就开始扣一下这个js 三大段&#xff0c;先不解混淆了&#xff0c; 给a粘贴出来 &#xff0c;去掉自执行 给结果稍微改一下 缺windows&#xff0c;开始补环境 直接上…...

使用YOLOv5的backbone网络识别图像天气 - P9

目录 环境步骤环境设置包引用声明一个全局的设备 数据准备收集数据集信息构建数据集在数据集中读取分类名称划分训练、测试数据集数据集划分批次 模型设计编写维持卷积前后图像大小不变的padding计算函数编写YOLOv5中使用的卷积模块编写YOLOv5中使用的Bottleneck模块编写YOLOv5…...

TikTok海外扩张:亚马逊的新对手崛起

随着社交媒体和电子商务的融合&#xff0c;TikTok正迅速崭露头角&#xff0c;成为亚马逊等传统电商巨头的潜在竞争对手。这一新兴平台的快速发展引发了广泛的关注&#xff0c;特别是在全球范围内。 在这篇文章中&#xff0c;我们将探讨TikTok海外扩张的战略&#xff0c;以及它…...

CSS详细基础(五)选择器的优先级

本节介绍选择器优先级&#xff0c;优先级决定了元素最终展示的样式~ 浏览器是通过判断CSS优先级&#xff0c;来决定到底哪些属性值是与元素最为相关的&#xff0c;从而作用到该元素上。CSS选择器的合理组成规则决定了优先级&#xff0c;我们也常常用选择器优先级来合理控制元素…...

LLM-TAP随笔——有监督微调【深度学习】【PyTorch】【LLM】

文章目录 5、 有监督微调5.1、提示学习&语境学习5.2、高效微调5.3、模型上下文窗口扩展5.4、指令数据构建5.5、开源指令数据集 5、 有监督微调 5.1、提示学习&语境学习 提示学习 完成预测的三个阶段&#xff1a;提示添加、答案搜索、答案映射 提示添加 “[X] 我感到…...

kafka伪集群部署,使用docker环境拷贝模式

线上启动容器的方式是复制容器的运行环境出来&#xff0c;然后进行运行脚本的形式 1&#xff1a;在home/kafka目录下创建如下目录 2&#xff1a;复制kafka1容器内的数据/bitnami/kafka/data&#xff0c;直接放在1992_data里面&#xff0c;同理,复制kafka2容器内的数据/bitnami/…...

工业交换机一般的价格是多少呢?

工业交换机是一种应用于工业领域的网络设备。它的性能和所有安全指标都比一般商业交换机更加稳定。所以&#xff0c;工业级交换机的价格相对于普通的交换机要稍稍昂贵一些。工业交换机一般的价格是多少呢&#xff1f;每个厂家的交换机价格是不是都一样呢&#xff1f; 首先&…...

QT使用前的知识

QT使用前的知识 常用的快捷键 源文件的内容解释 .pro文件的解释 头文件的解释 构建新的对象—组成对象树 槽函数 自定的信号和槽 槽函数的信号是一个重载函数时 电机按钮触发信号 调用无参数的信号 断开信号...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...