C++笔试训练day_2

文章目录

  • 选择题
    • 7.
  • 编程题
    • 1.
    • 2.

选择题

在这里插入图片描述
(6)因为p2被const修饰所以p2不可以被改变,但是p2的指向可以被改变
(7)因为指针p3被const修饰,所以p3的指向不能被改变,但是*p3可以被改变

int main()
{int a = 10;int b = 5;const int* p1 = &a;int* const p2 = &a;p1 = &b;cout << "*p1:" << *p1 << endl;//*p1 = 8;//不能修改//p2 = &b;//不能修改*p2 = 8;cout << "*p2:" << " " << *p2 << endl;cout << "a:" << " " << a << endl;return 0;
}

在这里插入图片描述
常量指针和指针常量的区别:
常量指针,指针所指空间的值不能发生改变,不能通过指针解引用修改指针所指空间的值,但指针所指空间可以发生改变
常量指针,该指针是一个常量,可以通过解引用改变指针所指空间的值,但是指针的指向不能发生改变
3.
在这里插入图片描述
A:acx和acy都是字符数组,是在栈上开辟的空间,内容可以被修改
B:szx和szy都是指针字符串,在常量区开辟的空间,且字符串相同,因此他们指向同一块空间
C:acx是字符串初始化字符数组,字符串结尾默认有一个\0,因此acx占用空间比acy大
D:szx内容修改实际是指针的指向发生了改变,字符串常量本身并不会被修改
5.
在这里插入图片描述
A:宏定义是没有类型安全检测的
B:因为宏定义是在编译阶段进行傻瓜式的替换的,不能被调试,因此我们要尽量使用const常量,而避免使用宏定义
D:相对于函数调用,宏定义可以提高程序的运行效率,宏定义没有创建函数栈帧和函数压栈的开销

7.

在这里插入图片描述
A: 存放的是10个int类型的指针的数组,指针数组
B:一个指针指向的是大小为10的int类型的数组,数组指针,因为[ ]优先级高于所以这里添加了()
C:指向一个参数为一个int类型的函数指针
D:是有10个指向参数为一个int类型的指针数组
注意区分:
指针数组和数组指针:
指针数组: int
p[10],本质是一个数组,数组里面存放的是指针
数组指针:
int (p)[10],本质是一个指针,指针指向的是一个数组
int (p[10])[5],p是一个数组,数组中存放的类型是int ( * )[5]
判断类型的方法:去掉第一个和p结合的,产生的是p的类型,而剩下的是指向的类型
例如:
int
p的含义是p先和
结合说明p是一个指针,剩下的是int,所以p是一个指向int类型的指针

int (p)[10]:p先和结合说明p是一个指针,指向的是一个含有10个int类型的数组int [10]

数组指针和函数指针
数组指针:int (*p)[10]
函数指针:int (*p)(int, int)
9.
在这里插入图片描述
这题主要考察的是位段:
什么是位段,位段的作用是做什么?
位段的作用是用来减少空间开辟的
结构体内如果类型为int,unsigned int或char类型就可采用位段来进行存储
位段的定义:类型后面定义变量,变量后面加冒号:,冒号后面加上该类型存放所需要的比特位,注意这里最后的结果也要进行内存对齐。具体请查看博客文章C语言三万字总结
10.
在这里插入图片描述

int main()
{int a[4] = { 1,2,3,4 };cout << &a << endl;cout << &a + 1 << endl;cout << &a[0] << endl;cout << &a[0] + 1 << endl;cout << endl;int b[][3] = { 1,2,3,4,5,6 };cout << &b << endl;cout << &b + 1 << endl;cout << &b[0] << endl;cout << &b[0] + 1 << endl;return 0;
}

在这里插入图片描述

&a + 1加的是整个数组的大小
对于一维数组&a[0] + 1加的是一个元素的大小
对于二维数组&a[0] + 1加的是一行数组的大小

编程题

1.

在这里插入图片描述

在这里插入图片描述
思路:先让字符串整体逆序,再对每个单词进行逆序

#include <iostream>
#include <string>
#include <algorithm>using namespace std;int main() {string s;getline(cin, s);//先整体逆置reverse(s.begin(), s.end());//再对每个单词进行逆置auto begin = s.begin();auto end = s.begin();while(begin != s.end()){while(*end != ' ' && end != s.end()){++end;}reverse(begin, end);//如果end = s.end(),就不能让begin = end + 1了,加了的话会出现越界if(end != s.end()){begin = end + 1;end = begin;}else {begin = end;}}cout << s << endl;return 0;
}
// 64 位输出请用 printf("%lld")

2.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
理解题意:本题意思就是这个无序序列,在不被改动的情况下,最少可以被分为几个非递增或非递减序列,比如1,2,2,3,2,3,3,1就可以被分为1,2,2,3,和2,3与1这三个序列

#include <iostream>
#include <vector>using namespace std;int main() {int n = 0;cin >> n;vector<int> v(n, 0);for (int i = 0; i < n; i++) {cin >> v[i];}int count = 0;int j = 0;while(j < n){if(j + 1 == n){count ++;break;}if (v[j] < v[j + 1]) {while (j < n && v[j] <= v[j + 1]) {j++;}j++;count++;} else if (v[j] > v[j + 1]) {while (j < n && v[j] >= v[j + 1]) {j++;}j++;count++;} else {j++;}}cout << count << endl;return 0;}
// 64 位输出请用 printf("%lld")

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

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

相关文章

代码随想录算法训练营 | day60 单调栈 84.柱状图中最大的矩形

刷题 84.柱状图中最大的矩形 题目链接 | 文章讲解 | 视频讲解 题目&#xff1a;给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.len…

python实现元旦多种炫酷高级倒计时_附源码【第19篇—python过元旦】

文章目录 &#x1f30d;python实现元旦倒计时 — 初级(控制台)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 中级(精美动态图)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 高…

2024苹果手机iOS管理软软件iMazing2.17永久免费版下载教程

iMazing2024是一款专业的苹果IOS设备管理器&#xff0c;强悍的性能远超苹果的iTunes&#xff0c;iMazing 能让广大果粉能已自己的方式管理苹果设备&#xff0c;无需iTunes即可畅快传输或者保存苹果设备中的音乐、消息、文件以及其他数据。 iMazing2Mac-最新绿色安装包下载如下&…

Settings中电池选项-Android13

Settings中电池选项-Android13 1、设置中界面2、电池计算2.1 充电时间计算2.1.1 BatteryUsageStats获取2.1.2 BatteryStatsImpl计算 2.2 电池剩余使用时间2.2.1 Estimate获取2.2.2 BatteryStatsImpl计算 3、电池信息来源日志 [电池]Android 9.0 电池未充电与充电字符串提示信息…

指针的含义

我们还取前面图片解释的道理&#xff1a; pa表示的意思就是这个地址&#xff0c;并不会显示出10这个数字 *pa就是指针&#xff0c;最后指向了a10&#xff0c;所以他最后程序输出是10 &pa这个含义就是取pa的地址&#xff0c;那么pa是一个虚拟的地址&#xff0c;只是简单的…

BP网络识别26个英文字母matlab

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;字母识别 获取完整源码源工程文件 一、 设计思想 字符识别在现代日常生活的应用越来越广泛&#xff0c;比如车辆牌照自动识别系统&#xff0c;手写识别系统&#xff0c;办公自动化等等。本文采用BP网络对26个英文字母进行…

CAD制图

CAD制图 二维到三维 文章目录 CAD制图前言一、CAD制图二、机械设计三、二维图纸四、三维图纸总结前言 CAD制图可以提高设计效率和准确性,并方便文档的存档和交流,是现代工程设计中不可或缺的一部分。 一、CAD制图 CAD(Computer-Aided Design)是利用计算机技术辅助进行设计…

KingbaseV8R6单实例定时全量备份步骤

此场景为单机数据库节点内部备份&#xff0c;方便部署和操作&#xff0c;但备份REPO与数据库实例处于同一个物理主机&#xff0c;冗余度较低。 前期准备 配置ksql免密登录(必须) 在Kingbase数据库运行维护中&#xff0c;经常用到ksql工具登录数据库&#xff0c;本地免密登录…

关于JVM的垃圾回收GC的一些记录

目录 一、JVM内存区域划分 二、从一个基本问题开始引入垃圾回收 三、GC作用的区域 三、如何确定一个对象是否可以被当成垃圾进行回收 &#xff08;1&#xff09;引用计数法 &#xff08;2&#xff09;可达性分析算法 &#xff08;3&#xff09;引用的类型 &#xff08;3…

准确率、召回率、F1是如何确定的

准确率和召回率是评估分类模型性能的两个重要指标&#xff0c;准确率与召回率&#xff08;Precision & Recall&#xff09; 准确率P&#xff08;Accuracy&#xff09;是指分类器正确预测的样本数占全部样本数的比例&#xff0c;即&#xff1a; 准确率 预测正确的样本数 / …

福FLUKE禄克8808A数字多用表

福禄克8808A&#xff0c;用于制造、研发、维修等应用的多功能数字表&#xff0c;FLUKE 8808A 5.5位数字多用表可以完成当今众多常用的测量工作。无论是功能测 展开 福禄克8808A&#xff0c;用于制造、研发、维修等应用的多功能数字表&#xff0c;FLUKE 8808A 5.5位数字多用表可…

亚马逊推出 Graviton4:具有 536.7 GBps 内存带宽的 96 核 ARM CPU

如今&#xff0c;许多云服务提供商都设计自己的芯片&#xff0c;但亚马逊网络服务 (AWS) 开始领先于竞争对手&#xff0c;目前其子公司 Annapurna Labs 开发的处理器可以与 AMD 和英特尔的处理器竞争。本周&#xff0c;AWS 推出了 Graviton4 SoC&#xff0c;这是一款基于 ARM 的…