C及C++每日练习(3)
选择题:
1.以下程序的输出结果是()
#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
对于本题,首先创建了一个大小为的字符数组,数组名为
,接着创建了
类型的指针
,随后,让
赋值为
,即
,此处的加法是针对于指针的加法,在对指针做加法时,表示的是跳过
个字节,即跳过指针指向数组类型
个字节。在本题中,进行加法后,指针指向元素
。
在进行打印是,打印的初始位置为,即从元素
开始对数组进行打印,此时的打印类型为
%
,对于这种类型的打印,当遇到结束标志
'\0'时停止打印,需要注意的是,此处数组中的
并不是待打印的元素
,而是表示打印结束的标志,因此答案选择
2.以下程序的输出结果是()
#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
对于本题,主要考察对于选择语句的语法规则。在上述给出的代码中,由于
%
,因此在进入
选择语句时,执行
的情况,在
中,由于
,因此执行
情况下的语句,即打印字符串
,在此处需要注意,由于在
中,并不存在
,因此,在执行完
后,代码会继续执行
中所对应的代码,即打印字符串
。因此,答案选择
3.以下能对二维数组a进行正确初始化的语句是()
A. int ta[2][]={{0,1,2},{3,4,5}};B. int ta[][3]={{0,1,2},{3,4,5}};
C. int ta[2][4]={{0,1,2},{3,4},{5}};
D. int ta[][3]={{0,,2},{},{3,4,5}};
在初始化二维数组时,需要注意以下的点:表示二维数组行数的参数可以省略,但是表示二维数组列数的参数不能省略。并且,在初始化其中一行时,必须连续初始化,不能出现中断。
在给出上面的两点后,对比各个选项,其中选项省略了列参数,因此错误,对于选项
,由于数组的参数表示数组是一个两行四列的数组,但是在初始化时,确实三行,因此错误。对于选项
由于出现了不连续初始化,因此错误。答案选择
4.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是()
A. return这二个数
B.形参用数组
C.形参用二个指针
D.用二个全局变量
对于本题,两个选项的返回方式大致相同,都是采用指针,正确。对于
,由于全局变量的作用范围是整个程序,因此正确。对于选项
,由于一个函数只能返回一个值,所以错误。
5.int *p[4] 与选择项中的() 等价
A. int p[4]
B. int *p
C. int *(p[4])
D. int (*p)[4]
对于题目中题目中给定的,由于
的结合优先级大于
,因此,
会先和
结合,再和
结合,此时的
为指针数数组,即数组中存放了
个类型为
的指针。
对于选项,此时的
只是一个数组的名称,所以不等价
对于选项,此时的
表示
类型的指针
对于选项,
先和
结合,再和
结合,此时的
是指针数组,于
等价。
对于选项,
先和
结合,再与
结合,此时的
是一个数组指针。
综上,答案选择
6.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是
A.n=0;while(ch=getchar()!='\n')n++;
B.n=0;while(getchar()!='\n')n++;
C. for(n=0;getchar()!='\n';n++);
D.n=0;for(ch=getchar();ch!='\n';n++);
对于选项,其整体逻辑为:用变量
接收
读取的字符,如果不为'\n',则继续统计。因为'\n'为换行标志,因此可以正确的统计出字符个数。
对于选项,则是直接利用
函数读取的字符进行判断,原理于选项
相同,正确。
对于选项,是将
函数作为
循环中判断是否结束的标志,正确。
对于选项,这里需要注意,由于
循环中第一个;之前的内容是表示初始化变量,因此,再这种书写方法中,
一直是
第一次读取的字符,不会继续向后读取,因此错误,答案选择
。
7.下面3段程序代码的效果一样吗()
int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;
A. (2)=(3)
B. (1)=(3)
C. (1)=(2)
D.都不一样
对于判断常量指针和指针常量的题目,在C及C++每日练习(2)-CSDN博客中给出了详细的解释,这里只进行大概的说明:对于常量指针,表示指针指向的内容为常量,不能通过解引用的方式来修改指向的内容,但是可以改变指针的指向,即可以指向另一个常量。其特点是在
之前。
对于指针常量,表示指针本身就是一个常量,因此,不能改变指针的指向,但是可以通过解引用的方式来改变指针所指向的内容。
因此,是一个常量指针,
同样也是常量指针,
是指针常量,所以答案选择
8.32位系统中,定义**a[3][4],则变量占用内存空间为()。
A.4 B. 48 C.192 D.12
由于是位地址,因此,指针的大小为
字节,在上面提到了
的结合优先级是大于
的,因此,题目中的代码表示,
是一个三行四列的二维数组,并且数组中存储的内容是二级指针。因此变量
占用内存空间的大小为
,即
字节。
9.假设在一个 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
对于本题,首先需要看到,创建的三个变量的类型为,但是在打印时,却是采用打印
变量的格式。并且,在题干中给出的信息为:机器是一个
位的小端机。对于小端机,其定义为:低位存低地址。对于大端机,其特点为低位存高地址。例如存储一个
,如果采用
进制进行表示,并且左边为低地址,右边为高地址。则在小端机中存储为
。如果是一个大端机,则为
。
在了解了大端机,小端机的概念后,还需要直到,对于函数,其需要打印的变量的入栈参数是从右向左入栈的,并且从高地址进行入栈,因此,三个变量入栈的顺序为
具体效果可以由下面的图展示:
由于栈的性质是后进先出,并且,%是将四个字节的内容以十进制的方式进行打印,因在打印时,首先打印后进入的内容的前四个字节的内容,即
,随后继续打印,即打印
,最后再打印
.因此答案选择
编程题:
第一题较为简单,创建个
类型的对象,第一个命名为
,用于接收题目的输入,剩下二个命名为
,当
所对应的字符为数字时
,如果
不是数字,此时对应的情况时,连续的数字串已经被遍历完毕,此时让
进行比较,如果
,则令
。随后清楚
中的内容。
需要注意的一个点是,如果最大的数字串恰好在给定字符串的末尾结束,例如,此时需要注意对于一个长度为
的字符串循环时,需要循环
次,即
。对于代码如下:
#include <iostream>
#include<string>
using namespace std;int main()
{string str,max,com;cin >> str;for(int i = 0; i <= str.size(); i++){if(str[i] >= '0' && str[i] <= '9'){com += str[i];}else {if(max.size() < com.size()){max = com;}com.clear();}}cout << max;return 0;
}
// 64
题目较为简单,由于需要找出现次数大于数组长度一半的数字,所以直接对数组进行排序,取中间数,随后再进行一次遍历,如果这个是数字在数组中的出现次数超过一半,则返回整个数,代码如下:
class Solution {
public:int MoreThanHalfNum_Solution(vector<int>& numbers) {sort(numbers.begin(),numbers.end());int mid = numbers[numbers.size()/2];int count = 0;for(int i = 0; i < numbers.size(); i++){if(numbers[i] == mid){count++;}}if(count > (numbers.size()/2)){return mid;}return 0;}
};
相关文章:

C及C++每日练习(3)
选择题: 1.以下程序的输出结果是() #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 对于本题࿰…...

黑马点评-附近商户实现
GEO数据结构 Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,根据经纬度来检索数据。 GEO本质上是基于sortedSet实现的,在Sorted Set中,每个成员都是与一个分数(score)相关联的,这个分数用于对成员进行排序…...

安装nginx:手动安装和yum安装
本文在centos7.9下分别尝试了yum安装和手动安装,记录一下试验过程。为后来者少踩点坑。 下载 下载地址:链接 。建议下载稳定版本,也就是Stable Version,这里下载的是 nginx-1.24.0 # 我下载在如下文件夹 mkdir/opt/apps cd /op…...

【C++ STL详解】——string类
目录 前言 一、string类对象的常见构造 二、string类对象的访问及遍历 1.下标【】(底层operator【】函数) 编辑 2.迭代器 3.范围for 4.at 5.back和front 三、string类对象的容量操作 1.size 和 length 2.capacity 3.empty 4.clear 5.res…...

MatplotlibPython 1 3.7
放大数据,如果想仔细看某一行的数据的时候 可以调不同的颜色,图片的长宽高,以及线的种类 plt.figure 这个命令下的所有东西都在这个figure里面 plt.xlim 改变坐标轴的范围 plt.xlabel 改变坐标轴的总名称 plt.xticks 换单位 plt.yt…...
深入理解 Dubbo:构建分布式服务治理体系
目录 1. 介绍 2. Dubbo 的核心概念 2.1 服务提供者(Provider)与服务消费者(Consumer) 2.2 注册中心(Registry) 2.3 监控中心(Monitor) 3. Dubbo 的功能特性 3.1 远程调用&…...
唤起原生IOS和安卓Android app的方法
大家好我是咕噜美乐蒂,很高兴又和大家见面了! 要唤起原生 iOS 或 Android 应用程序,你可以使用以下方法: 唤起原生 iOS 应用程序 在 iOS 上,你可以使用自定义 URL 方案或 Universal Links 来唤起原生应用程序。以下…...

RabbitMQ的web控制端介绍
2.1 web管理界面介绍 connections:无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况channels:通道,建立连接后,会形成通道,消息的投递、获取…...

GitHub登不上:修改hosts文件来解决(GitHub520,window)
参考链接:GitHub520: 本项目无需安装任何程序,通过修改本地 hosts 文件,试图解决: GitHub 访问速度慢的问题 GitHub 项目中的图片显示不出的问题 花 5 分钟时间,让你"爱"上 GitHub。 (gitee.com) GitHub网站…...

01-DevOps代码上线-git入门及gitlab远程仓库
一、准备学习环境 10.0.0.71-gitlab 2c2g-20GB 10.0.0.72-jenkins 2c2g-20GB 10.0.0.73-sonarqube 1c1g-20GB 10.0.0.74-nexus 1c1g-20GB 10.0.0.75-dm 1c1g-20GB (模拟写代码服务器) 在centos系统中&…...

EdgeX Foundry 安全模式安装部署
文章目录 一、安装准备1.官方文档2. 克隆服务器3.安装 Docker4.安装 docker-compose 二、安装部署1.docker-comepse2.启动 EdgeX Foundry3.访问 UI3.1. consul3.2. EdgeX Console EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.org.cn/docs…...

网络安全-appcms-master
一、环境 gethub上面自己找appcms-master 二、分析一下源码以及闯关思路 首先是有一个函数循环以及函数过滤,我们的post会将我们所传的所有val值去进行一个循环,之后通过htmlspecialchars这个函数进行过滤和转换所以val值不能通过单双引号闭合注入的方…...
ThreadLocal 与 synchronized 区别
我的理解 目的都是为了一个大前提:操作内容的线程安全。 任务不同:synchronized 解决的是多线程下线程操作权限的问题,以及原子性的保证。通过对锁的竞争,达到对资源的访问有序。 ThreadLocal是解决的事多线程下资源的隔离问题,即…...

灵魂指针,教给(二)
欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 目录 一、数组名的理解 二、使用指针访问数组 三、一维数组传参本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组…...
线程安全--浅谈Ad-hoc与加锁的区别
浅谈Ad-hoc 与加锁 两者要解决的都是对对象的语义混乱操作,即有个count进行累加操作。 我的理解/文心一言的反馈如下: 加锁是保证我们对同一个count在多线程下的访问有序,即“读写-修改-写入”具有原子性。 而Ad-hoc机制就是通过程序员自己定义一个私有…...

数据治理实战——翼支付金融板块业务数仓建设和数据治理之路
目录 一、数据治理背景 二、数据治理建设内容 2.1 组织协同 2.2 平台建设 2.3 数据应用治理 2.4 数据规范 2.5 数据安全 三、企业级数仓建设 3.1 调研阶段 2.2 平台护航 2.3 数仓分层 2.4 维度建模 2.4.1 维度建模四步曲 2.4.2 命名规范 2.4.3 资产沉淀 2.4.4 …...

[Buuctf] [MRCTF2020]Transform
1.查壳 64位exe文件,没有壳 2.用64位IDA打开 找到主函数,F5查看伪代码 从后往前看,有一个判断语句,是两个数组进行比较的,我们双击byte_40F0E0查看里面的内容 所以能够推出byte_414040的内容,byte_4140…...

【C++】C++模板基础知识篇
个人主页 : zxctscl 文章封面来自:艺术家–贤海林 如有转载请先通知 文章目录 1. 泛型编程2. 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 3. 类模板3.1 类模板的定义格式3.2 类模板的实例化…...

golang 注释插件
Goanno插件 自动生成golang注释,该插件为 Intellij/Goland 中的 golang 提供自动生成注释 如何使用? control command / (for windows: control alt /)(生成注释)Right click -> Generate -> Goanno(生成注释&#x…...

Unity插件之天气系统UniStorm
首先呢,它是一款强大的动态昼夜天气系统,能够以较快的帧速率创建AAA级动态生成的天气、照明和天空,并且具有300多个可定制的组件,允许用户创建任何可以想象的环境。 第一步:他需要两个物体Camera摄像机、Player播放器…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...

Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...