C++笔试强训2

文章目录

  • 一、选择题
  • 二、编程题


一、选择题

在这里插入图片描述
和笔试强训1的知识点考的一样,因为输出的是double类型所以后缀为f,m.n对其30个字符所以m是30,精度是4所以n是4,不加符号默认是右对齐,左对齐的话前面加-号,所以答案是-30.4f,答案选c

  1. %s:就是字符串的转换说明符
  2. %ms:输出字符串宽度为m,如果字符串本身实际宽度大于m,那么就用字符串的实际宽度。如果字符串的实际宽度小于m,则左补空格。可以理解成m前面有个省略了的+号,所以字符串右对齐;
  3. %-ms:规则基本上面一样,不一样的是字符串左对齐,右补空格;
  4. %m.ns;输出宽度占m,但是只取字符串中左端的n个字符。这n个字符排列在m宽度的右侧,如果n小于m则左补空格,如果n大于m,那么m失效,字符的输出宽度就是n。
  5. %-m.ns;规则和上面基本一样,不一样的地方在于,如果n小于m那么需要左对齐,右补空格。

在这里插入图片描述
本题主要考察指针常量和常量指针的概念。可以通过观察const和*的位置来区分指针常量和常量指针

如果const在的左边比如:const int p或者int const p都表示常量指针
如果const在
的右边比如:int* const p表示指针常量

对上述题目进行分析(1)是常量指针,不能修改它指向的数据,但能修改指向的地址。(2)也是常量指针,因为const在*的左边。(3)修改了p2的指向,常量指针可以修改指向。(4)是指针常量,不能修改指针的指向的地址,但可以修改指向的数据。(5)修改了指针常量p3指向的数据,没问题。(6)修改了常量指针p2指向的数据,错误。(7)修改了指针常量p3指向的地址,错误。

故(6)(7)错误,本题选C。

指针常量(Pointer to Constant)

指针常量指的是指针的值(即它所指向的地址)不能被修改,但是通过这个指针可以修改它所指向的数据。指针常量通常用const关键字来修饰指针本身,而不是指针所指向的数据类型。

int a = 10;
int *const ptr = &a; // ptr 是一个指针常量,指向整数 a// *ptr = 20; // 这是合法的,因为 ptr 指向的数据(a)是可以被修改的
// ptr = &b; // 这是非法的,因为 ptr 是一个指针常量,它的值(即它所指向的地址)不能被修改

常量指针(Constant Pointer)

常量指针指的是通过该指针不能修改它所指向的数据,但是指针的值(即它所指向的地址)是可以被修改的。常量指针通常用const关键字来修饰指针所指向的数据类型,而不是指针本身。

int a = 10;
const int *ptr = &a; // ptr 是一个常量指针,指向整数 a
//该语句等价与下面这条语句,都表示常量指针
//int const *ptr = &a;// ptr = &b; // 这是合法的,因为 ptr 的值(即它所指向的地址)是可以被修改的
// *ptr = 20; // 这是非法的,因为 ptr 是一个常量指针,不能通过它来修改它所指向的数据

两者结合

你也可以创建一个既是常量指针又是指针常量的指针,即它的值和它所指向的数据都不能被修改。这通过在指针声明中同时使用两个const关键字来实现,一个修饰指针本身,另一个修饰指针所指向的数据类型。

int a = 10;
const int *const ptr = &a; // ptr 既是一个常量指针(不能通过它修改 a),也是一个指针常量(它的值不能被修改)// ptr = &b; // 这是非法的
// *ptr = 20; // 这也是非法的

在这里插入图片描述
A选项:acX和acY是两个普通数组,数组的内容可以修改,A正确。
B选项:在C语言中,对于相同的字符串常量,编译器通常会优化内存使用,使得多个相同的字符串字面量(string literals)在程序中指向同一块内存区域。这意味着,如果代码中有两个或多个指向相同字符串字面量的指针,这些指针的值(即它们所指向的地址)是相同的。
C选项:acX是字符串,以’\0’结尾,故acX比acY多一个字符。
D选项:字面常量不可修改。

故D错误选D。


在这里插入图片描述
b=a,b指向数组首元素,b+=2,相当于把首元素加了个2变成了3,2,3,4.(b+2)=2,表示指针先向后偏移两个单位(两个int类型的字节数即8个字节)指向下标为2的内个元素(下标从0开始算),然后赋值成了2即变成了3,2,2,4.b++,即b指向下一个元素即下标为1的元素。打印b和(b+2)即打印下标为1和3的元素即2和4,故答案选C。


在这里插入图片描述
不正确的是B,说反了,要尽量使用const常量。
虽然宏定义在某些简单情况下可能看起来更直观,但const提供了更好的类型安全性、作用域控制、调试能力和内存保护。因此,在可以使用const的情况下,通常建议优先使用const。只有在需要定义非类型常量或进行复杂的文本替换时,才考虑使用宏定义。


在这里插入图片描述
类型匹配上,数组传参直接传数组名就好,答案是D。


在这里插入图片描述
A选项: 指针数组,放指针的数组,该题中A是一个放10个int类型指针的数组
B选项:数组指针,指向数组的指针,该题中B是一个指向一个存放10个int类型数组的指针
C选项:函数指针,指针a指向一个函数,这个函数接受一个int类型的参数,并返回一个 int 类型的值。
D选项:数组a包含10个元素,每个元素都是一个指向函数的指针,这些函数都接受一个 int 类型的参数,并返回一个 int 类型的值。

故选D。


在这里插入图片描述
第一个for循环里,先把字符通过字符转换成下标,然后将数组对于下标的元素++,第二个for循环输出每个字符出现的个数,选D。


在这里插入图片描述
4字节(32):19+11
4字节(32):4
4字节(32):29
1字节(8):
一共13个字节,但由于对齐得是4的整数倍所以大小为16
故选C


在这里插入图片描述
a是数组名,单纯一个a是数组首元素的地址,&a的话是数组的地址,虽然指向的位置和a指向的位置一样,但区别在进行±运算的时候移动的步长不一样。
&a+1移动的步长是一个数组大小,该数组大小为4个int即16个字节,指向数组最后一个元素的下一个元素。int*(&a+1)转换成int*类型的指针,这个时候进行±运算步长就会变成一个int即4个字节,ptr-1就是后移一个int单位指向的是最后一个元素,也就是4,所以选A。
在这里插入图片描述


二、编程题

题目链接:
排序子序列
在这里插入图片描述
提交代码:

#include<iostream>
#include<vector>
using namespace std;int main() {int n;cin >> n;// 注意这里多给了一个值,是处理越界的情况的比较,具体参考上面的解题思路vector<int> a;a.resize(n + 1);//这里有个坑,这个题越界了牛客测不出来,给n,并且不写a[n] = 0;不会报错,但是最好写上a[n] = 0;
//读入数组int i = 0;for (i = 0; i < n; ++i)cin >> a[i];i = 0;int count = 0;while (i < n) {
// 非递减子序列if (a[i] < a[i + 1]) {while (i < n && a[i] <= a[i + 1])i++;count++;i++;} else if (a[i] == a[i + 1]) {i++;} else { // 非递增子序列while (i < n && a[i] >= a[i + 1])i++;count++;i++;}}cout << count << endl;return 0;
}

运行结果:
在这里插入图片描述


题目链接:
倒置字符串

在这里插入图片描述
提交代码:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;int main() {string s;
// 注意这里要使用getline,cin>>s遇到空格就接收结束了getline(cin, s);// 翻转整个句子reverse(s.begin(), s.end());
// 翻转单词auto start = s.begin();while (start != s.end()) {auto end = start;while (end != s.end() && *end != ' ')end++;reverse(start, end);if (end != s.end())start = end + 1;elsestart = end;}cout << s << endl;return 0;
}

运行结果:
在这里插入图片描述


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

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

相关文章

推荐Bulk Image Downloader插件下载网页中图片链接很好用

推荐&#xff1a;Bulk Image Downloader chome浏览器插件下载图片链接&#xff0c;很好用。 有个网页&#xff0c;上面放了数千的gif的电路图&#xff0c;手工下载会累瘫了不可。想找一个工具分析它的静态链接并下载&#xff0c;找了很多推荐的下载工具&#xff0c;都是不能分…

vue2 data内对象引用另一个data对象无法使用this的解决办法

背景&#xff1a;data内有一复杂对象&#xff0c;并且内部一属性经常修改&#xff0c;每次修改的话属性.属性会很长&#xff0c;所以希望引用另一简单对象&#xff0c;但data内this用不了。(集合数组是地址引用&#xff0c;基本数据类型这么操作没意义) 如&#xff1a; 解决办法…

数字信号处理及MATLAB仿真(3)——采样与量化

今天写主要来编的程序就是咱们AD变换的两个步骤。一个是采样&#xff0c;还有一个是量化。大家可以先看看&#xff0c;这一过程当中的信号是如何变化的。信号的变换图如下。 先说说采样&#xff0c;采样是将连续时间信号转换为离散时间信号的过程。在采样过程中&#xff0c;连续…

进程的控制-孤儿进程和僵尸进程

孤儿进程 &#xff1a; 一个父进程退出&#xff0c;而它的一个或多个子进程还在运行&#xff0c;那么那些子进程将成为孤儿进程。孤儿进程将被 init 进程( 进程号为 1) 所收养&#xff0c;并由 init 进程对它们完成状态收集工作 为了释放子进程的占用的系统资源&#xff1a; …

解决Linux环境Qt报“cannot find -lgl“问题

今天&#xff0c;在Ubuntu 18.04.6环境下&#xff0c;安装Qt5.14.2之后&#xff0c;运行一个QWidget工程&#xff0c;发现Qt报"cannot find -lgl"错误。     出现这种现象的原因&#xff1a;Qt的Path路径没有配置&#xff0c;缺少libqt4-dev依赖包和一些必要的组件…

拉曼光谱入门:2.拉曼光谱发展史、拉曼效应与试样温度的确定方法

1.拉曼光谱技术发展史 这里用简单的箭头与关键字来概括一下拉曼光谱技术的发展史 1928年&#xff1a;拉曼效应的发现 → 拉曼光谱术的初步应用20世纪40年代&#xff1a;红外光谱术的发展 → 拉曼光谱术的限制20世纪60年代&#xff1a;激光作为光源的引入 → 拉曼光谱术的性能提…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01—短信/邮件/异常/MD5

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【17】认证服务01 环境搭建验证码倒计时短信服务邮件服务验证码短信形式&#xff1a;邮件形式&#xff1a; 异常机制MD5参考 环境搭建 C:\Windows\System32\drivers\etc\hosts 192.168.…

使用flask的web网页部署介绍

使用flask的web网页部署介绍 文章目录 前言一、网页介绍二、数据库设计介绍总结 前言 flaskbootstrapjquerymysql搭建三叶青在线识别网站&#xff0c;使用nginxgunicorn将网站部署在腾讯云上&#xff0c;配置SSL证书。网站地址&#xff1a;https://www.whtuu.cn 三叶青图像识…

2024年6月后2周重要的大语言模型论文总结:LLM进展、微调、推理和对齐

本文总结了2024年6月后两周发表的一些最重要的大语言模型论文。这些论文涵盖了塑造下一代语言模型的各种主题&#xff0c;从模型优化和缩放到推理、基准测试和增强性能。 LLM进展与基准 1、 BigCodeBench: Benchmarking Code Generation with Diverse Function Calls and Com…

【C++】模板进阶--保姆级解析(什么是非类型模板参数?什么是模板的特化?模板的特化如何应用?)

目录 一、前言 二、什么是C模板&#xff1f; &#x1f4a6;泛型编程的思想 &#x1f4a6;C模板的分类 三、非类型模板参数 ⚡问题引入⚡ ⚡非类型模板参数的使用⚡ &#x1f525;非类型模板参数的定义 &#x1f525;非类型模板参数的两种类型 &#x1f52…

linux下高级IO模型

高级IO 1.高级IO模型基本概念1.1 阻塞IO1.2 非阻塞IO1.3 信号驱动IO1.4 IO多路转接1.5 异步IO 2. 模型代码实现2.1 非阻塞IO2.2 多路转接-selectselect函数介绍什么才叫就绪呢&#xff1f;demoselect特点 2.3 多路转接-pollpoll函数介绍poll优缺点demo 2.4 多路转接-epoll&…

为什么人一旦开窍了就变的特别厉害?

点击上方△腾阳 关注 《让子弹飞》这部电影非常经典&#xff0c;其中一个名场面就是“六子吃粉”。 电影里&#xff0c;胡万对着老六就是一顿狂轰滥炸&#xff1a;“吃了两碗粉&#xff0c;就给一碗的钱&#xff0c;你当咱这是慈善堂呢&#xff1f;” 老六一听&#xff0c;那…

SpringBoot+ELK 收集日志的两种方式

方式一、FileBeatlogstash 7.5.1(docker)ES(docker)springboot 日志文件 应用方式 我们采用ELFK 架构采集日志&#xff0c;直接读取日志生成的文件&#xff0c;不对Springboot的日志任何的修改。也就是FileBeat 通过读取日志文件位置获取日志内容&#xff0c;然后发送至logsta…

移动应用开发课设——原神小助手文档(1)

2023年末&#xff0c;做的移动应用开发课设&#xff0c;分还算高&#xff0c;项目地址&#xff1a;有帮助的话&#xff0c;点个赞和星呗~ GitHub - blhqwjs/-GenShin_imp: 2023年移动应用开发课设 本文按照毕业论文要求来写&#xff0c;希望对大家有所帮助。 xxxx大学课程设计报…

C++--partition库函数

介绍 在C中&#xff0c;partition函数通常是指STL&#xff08;Standard Template Library&#xff09;中的std::partition算法&#xff0c;它用于对一个序列进行分区操作。具体来说&#xff0c;std::partition接受一个范围和一个谓词&#xff08;predicate&#xff09;作为参数…

win10使用小技巧一

1. 查看电脑IP地址 步骤&#xff1a;按WinR打开运行框 → 输入cmd点确定 → 输入ipconfig回车 → 查看IP地址。 2. 解决网页文字不能复制 步骤&#xff1a;按F12 → 调试框里点击设置 → 向下滑找到 禁用 JavaScript → 勾选 → 复制文字。 3. 解决电脑不能上网 方法一&…

im即时通讯哪家好?WorkPlus im即时通讯集成底座为企业保驾护航

在当今数字化时代&#xff0c;即时通讯是企业内部沟通和协作的重要工具&#xff0c;提高工作效率和团队协作效果。在众多IM即时通讯提供商中&#xff0c;WorkPlus作为一家具有独特优势的企业IM即时通讯集成底座&#xff0c;为企业提供了全面的功能和安全保障&#xff0c;为企业…

Linux权限概述

一、权限概述 1.权限的基本概念 2.为什么要设置权限 3.linux用户的身份类别 4.user文件的拥有者 5.group文件所属组内用户 6.other其他用户 7.特殊用户root 二、普通权限管理 1.ls -l查看文件权限 2.文件类型以及权限解析 3.文件或文件夹的权限设置 4.通过数字给文件…

吴恩达深度学习笔记:机器学习策略(2)(ML Strategy (2)) 2.3-2.4

目录 第三门课 结构化机器学习项目&#xff08;Structuring Machine Learning Projects&#xff09;第二周&#xff1a;机器学习策略&#xff08;2&#xff09;(ML Strategy (2))2.3 快速搭建你的第一个系统&#xff0c;并进行迭代&#xff08;Build your first system quickly…

Python 学习中什么是元组,如何使用元组?

什么是元组 元组&#xff08;Tuple&#xff09;是Python内置的一种数据结构&#xff0c;用于存储多个数据项。与列表类似&#xff0c;元组也可以存储不同类型的数据&#xff0c;但它们之间存在一个重要区别&#xff1a;元组是不可变的&#xff0c;也就是说&#xff0c;一旦创建…