C++笔试训练day_2

news2024/11/26 15:27:08

文章目录

  • 选择题
    • 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.coloradmin.cn/o/1332371.html

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

相关文章

spring boot集成mybatis和springsecurity实现权限控制功能

上一篇已经实现了登录认证功能&#xff0c;这一篇继续实现权限控制功能&#xff0c;文中代码只贴出来和上一篇不一样的修改的地方&#xff0c;完整代码可结合上一篇一起整理spring boot集成mybatis和springsecurity实现登录认证功能-CSDN博客 数据库建表 权限控制的意思就是根…

前端常用的工具网站

前端常用的工具网站&#x1f516; 文章目录 前端常用的工具网站&#x1f516;1. 图片在线压缩2. iconfont--矢量图标3. JSON在线格式化4. EMOJIALL--表情符号5. removebg--去除图片背景6. FREE API--免费API接口7. Lorem picsum --随机图片8.UU在线工具 -- 聚合工具 1. 图片在线…

Windows系统安装 ffmpeg

下载及解压 ffmpeg官方下载地址&#xff1a;https://ffmpeg.org/download.html 下载好后将其解压至你想保存的位置中。 环境变量设置 打开Windows设置&#xff0c;在搜索框输入&#xff1a;系统高级设置。 新建环境变量&#xff0c;并输入bin目录具体位置。 安装检查 按住 w…

图形处理工具:Photoshop Elements 2020 mac介绍说明

Photoshop Elements 2020 mac简称ps elements 2020&#xff0c;是一款图形处理工具。ps elements 2020 mac可以帮助您自动生成照片和视频作品的功能&#xff0c;采用Sensei AI技术可进行图像组织、编辑和创建等。Photoshop Elements 2020 可以帮助您轻松整理照片和视频&#xf…

【Linux】定时任务

定时任务常用crontab来定期执行程序。 crontab 基本语法 crontab [-u user] -l # 列出用户cron任务 crontab [-u user] -e # 编辑用户cron任务 crontab [-u user] -r # 移除用户cron任务cron 表达式 # 分 时 日 月 周 执行命令 minute hour day month week command # 示例…

Simulink元件

constant 输出常数/标量 这样我们就只输出了一个常数 输出一维数组/矢量 这样我们就输出了1-5一共5个数字 输出二维数组 这样我们就输出了4个数字 选择框Interpret vector parameters as 1-D 如果标量或者矩阵&#xff0c;勾与不勾都一样。 如果是向量&#xff0c;勾选则表…

Keil中文报错提示为: [-Winvalid-source-encoding]问题解决

错误提示&#xff1a; ../User/main.c(67): warning: illegal character encoding in string literal [-Winvalid-source-encoding]67 | printf("全<B2><BF><B4><AB><CA><E4><CD><EA><B3><C9…

java旅游攻略管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web旅游攻略管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

2023 第六届安洵杯 writeup

CRYPTO 010101 漏洞点在 p1[random.choice([i for i, c in enumerate(p1) if c 1])] 0p2[random.choice([i for i, c in enumerate(p1) if c 0])] 1 p1只是随机的把1的位置转一个变成0&#xff0c;p2把0的位置随机转一个到1&#xff0c;直接逆回去即可 charonroot:~/D…

Unity使用Rider作为默认编辑器

01.Edit -> Preferences 02.Externel Tools -> Open by file extension 如果界面选项有Rider直接选择&#xff0c;如果没有选择Browse) 03.选择rider64.exe 04.成功关联

Qt的简单游戏实现提供完整代码

文章目录 1 项目简介2 项目基本配置2.1 创建项目2.2 添加资源 3 主场景3.1 设置游戏主场景配置3.2 设置背景图片3.3 创建开始按钮3.4 开始按钮跳跃特效实现3.5 创建选择关卡场景3.6 点击开始按钮进入选择关卡场景 4 选择关卡场景4.1场景基本设置4.2 背景设置4.3 创建返回按钮4.…

C++设计模式 #6 桥模式(Bridge)

动机 由于某些类型的固有的实现逻辑&#xff0c;使得它们具有两个变化的维度&#xff0c;乃至多个变化的维度。 如何应对这种“多维度的变化”&#xff1f;如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化&#xff0c;而不引入额外的复杂度 举个栗子 我们…

JavaOOP篇----第十五篇

系列文章目录 文章目录 系列文章目录前言一、有没有可能两个不相等的对象有相同的hashcode二、拷贝和浅拷贝的区别是什么?三、static都有哪些用法?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通…

基于SSM的双减后初小教育课外学习生活活动平台的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

【零基础入门Docker】如何构建Web服务Dockerfile?

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门Docker专栏https://blog.csdn.net/arthas777/category_12455882.html 目录 步骤1&#xff1a;第一步是构建我们的Docker文件&#xff0c;您可以使用vim编辑器。 步骤2&#xff1a;下一步是使用docker build命令…

学习stm32 模电数电需要学哪些?

学习stm32 模电数电需要学哪些&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「 stm32的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&…

帧内预测器的设计:提升视频编码效率的关键技术

随着互联网的迅猛发展&#xff0c;视频应用成为人们日常生活中不可或缺的一部分。然而&#xff0c;视频文件的传输和存储所需要的带宽和空间成本巨大。为了解决这个问题&#xff0c;视频编码技术应运而生。在视频编码中&#xff0c;帧内预测器是一项关键技术&#xff0c;通过利…

Linux-Keepalived(VRRP协议)高可用集群搭建

Linux-Keepalived&#xff08;VRRP协议&#xff09;高可用集群搭建 一、VRRP简介1.1 什么是VRRP&#xff1f;1.2 keepalived是什么&#xff1f;1.3 keepalived工作原理 二、实操配置过程2.1 试验模型2.2. Keepalived监控和维护VRRP集群的步骤2.2.1 安装keepalived2.2.2 配置kee…

力扣算法-Day1

160. 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 示例 1&#xff1a; 输入&#xff1a;intersectVal 8, listA [4,1,8,4,5], listB [5,6,1,8,4,5], skipA 2, s…

嵌入式开发必须学习qt吗?

嵌入式开发必须学习qt吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「 嵌入式的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#…