【C++笔试强训】第二十八天

news2024/10/7 20:33:16

🎇C++笔试强训


  • 博客主页:一起去看日落吗
  • 分享博主的C++刷题日常,大家一起学习
  • 博主的能力有限,出现错误希望大家不吝赐教
  • 分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。

在这里插入图片描述

💦🔥


选择题

💦 第一题

下面的程序执行输出几个hello?

#include<stdio.h>
#include <unistd.h>
int main( ) {
	fork( );
	fork( );
	fork( );
	printf(“hello\n”);
	return 0;
}

A 3
B 4
C 6
D 8

在这里插入图片描述

这道题的答案是D


💦 第二题

有一个程序中有A,B,C三个线程同时对一个文件进行读写操作,其中的A,B是写进程只负责往里面写数据,C是读线程,同时把读取的数据从文件中删除,A线程单独写满文件需要10个小时,B单独写程序需要6小时,C线程需要15小时才能读取完整个文件,不考虑三个线程之间的相互影响的情况下现在____小时才能写满文件

A 5
B 6
C 5.5
D 4.5
E 4.8
F 5.3

在这里插入图片描述

这道题的答案是A


💦 第三题

系统中内存不足程序所需大小,程序就无法执行。

A 错
B 对

操作系统存在虚拟内存,能够把一部分优先级较低的程序保存到系统硬盘

这道题的答案是A


💦 第四题

通常所说的"存储保护"的基本含义是()

A 防止存储器硬件受损
B 防止程序在内存丢失
C 防止程序间相互越界访问
D 防止程序被人偷看

在这里插入图片描述

这道题的答案是C


💦 第五题

下列进程调度算法中,()可能会出现进程长期得不到调度的情况。

A 非强占式静态优先权法
B 强占式静态优先权法
C 时间片轮转调度算法
D 非强占式动态优先权法

在这里插入图片描述

这道题的答案是B


💦 第六题

如果信号量的当前值为-4,则表示系统中在该信号量上有()个进程等待。

A 4
B 3
C 5
D 0

在这里插入图片描述

这道题的答案是A


💦 第七题

设两个进程共用一个临界资源的互斥信号量mutex=1,当mutex=-1时表示()

A 一个进程进入了临界区,另一个进程等待
B 没有一个进程进入临界区
C 两个进程都进入临界区
D 两个进程都在等待

在这里插入图片描述

这道题的答案是A


💦 第八题

若系统中只有用户级线程,则处理机调度单位是()

A 线程
B 进程
C 程序
D 作业

在这里插入图片描述

这道题的答案是B


💦 第九题

一个在线服务器通常需要读取存储着海量数据的数据库。为了提高服务器处理速度,通常需要加cache(缓存),以下场景中不适合使用cache的是()

A 数据库中每条数据被访问的概率近似相等,且独立
B 使用了多线程机制的服务
C 单条线程尺寸太小的数据
D 有着大量访问的服务

在这里插入图片描述

这道题的答案是A


💦 第十题

计算机操作系统的主要功能是( )

A 管理计算机系统的软硬件资源,以充分发挥计算机资源的效率,并为其它软件提供良好的运行环境

B 把高级程序设计语言和汇编语言编写的程序翻译到计算机硬件可以直接执行的目标程序,为用户提供良好的软件开发环境

C 对各类计算机文件进行有效的管理,并提交计算机硬件高效处理

D 为用户提供方便地操作和使用计算机

在这里插入图片描述

这道题的答案是A


编程题

🔥 第一题

链接:反转部分单链表

在这里插入图片描述

  • 解题思路一

找到需要反转部分链表的起始位置,断链反转之后,再进行恢复链表输出.

  • 图解

在这里插入图片描述

双指针反转链表过程:

在这里插入图片描述

  • 代码演示
# include <bits/stdc++.h>
using namespace std;

struct list_node{
    int val;
    struct list_node * next;
};

list_node * input_list(void)
{
    int n, val;
    list_node * phead = new list_node();
    list_node * cur_pnode = phead;
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i) {
        scanf("%d", &val);
        if (i == 1) {
            cur_pnode->val = val;
            cur_pnode->next = NULL;
        }
        else {
            list_node * new_pnode = new list_node();
            new_pnode->val = val;
            new_pnode->next = NULL;
            cur_pnode->next = new_pnode;
            cur_pnode = new_pnode;
        }
    }
    return phead;
}

list_node* ReveserList(list_node* RHead)
{
    list_node* prev = nullptr;
    list_node* cur = RHead;
    while(cur)
    {
        list_node* next = cur->next;
        //反转
        cur->next = prev;
        //更新prev和cur,继续向后迭代反转
        prev = cur;
        cur = next;
    }
    return prev;
}


list_node * reverse_list(list_node * head, int L, int R)
{
    //先创建一个虚拟头节点
    list_node* pHead = new list_node;
    pHead->next = head;
    list_node* prevNode = pHead;
    list_node* RHead = nullptr;
    list_node* RTail = nullptr;
    list_node* nextNode = nullptr;
    
    //找到反转部分链表的前一个节点
    for(int i = 0;i < L-1;i++)
    {
        prevNode = prevNode->next;
    }
    RHead = prevNode->next;
    //找到反转链表的尾节点
    RTail = RHead;
    for(int i = 0;i < R-L;i++)
    {
        RTail = RTail->next;
    }
    nextNode = RTail->next;
    
    //需要将RTail->next = nullptr;
    RTail->next = nullptr;
    list_node* newHead = ReveserList(RHead);
    //恢复链接
    prevNode->next = newHead;
    RHead->next = nextNode;
    list_node* list = pHead->next;
    delete pHead;
    return list;

}

void print_list(list_node * head)
{
    while (head != NULL) {
        printf("%d ", head->val);
        head = head->next;
    }
    puts("");
}


int main ()
{
    int L, R;
    list_node * head = input_list();
    scanf("%d%d", &L, &R);
    list_node * new_head = reverse_list(head, L, R);
    print_list(new_head);
    return 0;
}

  • 解题思路二

思路一的弊端:假设需要反转的链表部分,占比比较大,则需要两次遍历链表来实现. (1.遍历确定反转链表的起始
位置 2.遍历链表进行反转). 那是不是可以考虑一次遍历链表就解决该问题呢?

这里的思路是:采用头插的方式一次遍历解决问题

  • 图解

在这里插入图片描述

  • 代码演示
# include <bits/stdc++.h>
using namespace std;

struct list_node{
    int val;
    struct list_node * next;
};

list_node * input_list(void)
{
    int n, val;
    list_node * phead = new list_node();
    list_node * cur_pnode = phead;
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i) {
        scanf("%d", &val);
        if (i == 1) {
            cur_pnode->val = val;
            cur_pnode->next = NULL;
        }
        else {
            list_node * new_pnode = new list_node();
            new_pnode->val = val;
            new_pnode->next = NULL;
            cur_pnode->next = new_pnode;
            cur_pnode = new_pnode;
        }
    }
    return phead;
}


list_node * reverse_list(list_node * head, int L, int R)
{
    //创建虚拟头节点
    list_node* pHead = new list_node;
    pHead->next = head;
    list_node* prevNode = pHead;
    for(int i = 0;i < L-1;i++)
    {
        prevNode = prevNode->next;
    }
    list_node* cur = prevNode->next;
    for(int i = 0;i < R-L;i++)
    {
        list_node* curNextNode = cur->next;
        cur->next = curNextNode->next;//先进行链接,防止后面的断链
        //头插
        curNextNode->next = prevNode->next;
        prevNode->next = curNextNode;
    }
    list_node* list = pHead->next;
    delete pHead;
    return list;
    


}

void print_list(list_node * head)
{
    while (head != NULL) {
        printf("%d ", head->val);
        head = head->next;
    }
    puts("");
}


int main ()
{
    int L, R;
    list_node * head = input_list();
    scanf("%d%d", &L, &R);
    list_node * new_head = reverse_list(head, L, R);
    print_list(new_head);
    return 0;
} 

🔥 第二题

链接:猴子分桃

在这里插入图片描述

  • 解题思路

因为每次分5堆都会多出来1个,所以我们借给猴子们4个,以致每次都可以刚好分成5堆 并且,每次给老猴子的桃
子都不在我们借出的那4个中,这样最后减掉4就可以得到结果。 假设最初由x个桃子,我们借给猴子4个,则此时
有x+4个, 第一个猴子得到(x+4)/5,剩余(x+4)(4/5)个 第二个猴子分完后剩余(x+4) (4/5)^2个 第三个
猴子分完后剩余(x+4) (4/5)^3个 依次类推,第n个猴子分完后剩余(x+4)(4/5)^n 要满足最后剩余的为整
数,并且x最小,则当 x+4=5n时,满足要求;此时,x=5n - 4; 老猴子得到的数量为:x+4)*(4/5)^n + n - 4
= 4^n + n - 4 最后的 +n是因为每个小猴子都会多出一个给老猴子,-4是还了借的4个

  • 代码演示
// write your code here cpp
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int n;
    while(cin >> n)
    {
        if(n == 0)
            break;
        long total = pow(5,n) - 4;
        long left = pow(4,n) + n - 4;
        cout << total << " " << left << endl;
    }
    return 0;
}

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

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

相关文章

微信小程序自定义tabBar(实操)

文章目录一、前言二、固定效果图实现步骤实现步骤完整代码-矢量图images图片app.json代码三、自定义效果图实现步骤实现步骤完整代码-矢量图images图片app.json代码custom-tab-bar下的代码使用自定义TaBar一、前言 一般使用tabBar的样式&#xff0c;固定不能改变。如下固定效果…

java计算机毕业设计springboot+vue村委会管理系统

项目介绍 本村委会管理系统是针对目前村委会管理的实际需求,从实际工作出发,对过去的村委会管理系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结构、概…

DPDK-A3: KVM使用SRIOV和虚机使用DPDK

虚拟机基本管理 如下命令可以修改默认网段 sudo virsh net-edit --network default<network><name>default</name><uuid>45ed012c-3933-4f3e-9575-b37bffa21b83</uuid><forward modenat/><bridge namevirbr0 stpon delay0/><ma…

解决javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V异常

文章目录异常&#xff1a;不同jar包的多xml解析器冲突解决其他异常&#xff1a; java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)可能原因&#xff1a; 在本地WINDOWS编译测试没问题&#xff0c;只在LINUX服务器上面…

通讯录的实现【涉及动态内存管理和文件操作】【从易到难】【详解】

本期介绍&#x1f356; 主要介绍&#xff1a;如何实现一个通讯录&#xff0c;从静态版通讯录&#xff0c;到动态内存版通讯录&#xff0c;再到文件存储版通讯录&#xff0c;详细讲述了每一个通讯录的实现步骤以及思维逻辑&#xff0c;以及通讯录的完整代码&#x1f440;。 文章…

基于Springboot+mybatis+mysql+html图书管理系统

基于Springbootmybatismysqlhtml图书管理系统一、系统介绍二、功能展示1.用户登陆2.图书管理3.读者管理4.借还管理5.密码修改6.图书查询&#xff08;读者&#xff09;7.个人信息&#xff08;读者&#xff09;8.我的借还&#xff08;读者&#xff09;一、系统介绍 系统主要功能…

深究为啥Vue管理的函数不能是箭头函数

首先明确一点&#xff0c;箭头函数的this指向是根据上下文作用域确定的 Vue框架中&#xff0c;容易搞错的一点就是认为对象也有作用域 了解作用域与作用域链这个问题就迎刃而解了 假设Vue管理的函数是箭头函数时&#xff1a; 此时this是windows&#xff0c;Vue中data与metho…

生物识别技术在汽车领域带来了巨大变革

智能汽车时代 2022年10月28日&#xff0c;工信部发布《道路机动车辆生产准入许可管理条例&#xff08;征求意见稿&#xff09;》&#xff08;“《准入管理条例草案》”&#xff09;。包含了更全面的汽车准入管理规定&#xff0c;同时较为系统地增加了针对智能汽车的准入管理规定…

更简单的读取和存储对象

在上一篇文章中我们已经介绍在XML文件注册Bean的具体步骤,这一篇文章将会介绍使用更加简洁的方式(使用注解)来存储和读取Bean.这也是最常用的方法. 1. 创建并配置好Spring项目 和上一篇的步骤相同,下面就相当于复习如何创建Spring项目吧 创建一个 Maven 项目为 Spring 项目…

微信小程序 | 酷炫时钟样式整理【附源码】

&#x1f4cc;个人主页&#xff1a;个人主页 ​&#x1f9c0; 推荐专栏&#xff1a;小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏&#xff01;从个人到商业的全套开发教程&#xff0c;实打实的干货分享&#xff0c;确定不来看看&#xff1f; …

对给定的数组进行重新排列numpy.random.shuffle()和numpy.random.permutation()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 对给定的数组进行重新排列 numpy.random.shuffle()和 numpy.random.permutation() [太阳]选择题 请问对以下Python代码说法错误的是&#xff1f; import numpy as np anp.arange(6) print(【…

零基础带你基于vue2架构搭建qiankun父子项目微前端架构

这里建议大家用 14版本左右的node版本 我们先创建一个目录 就叫qiankun 然后在终端打开 qiankun 目录 在终端输入指令 vue create vue-qiankun-base创建一个叫 vue-qiankun-base的vue项目 版本大家先选择vue2 vue-qiankun-base项目将作为我们的基座 然后在终端输入 vue …

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.3 手机验证码案例 - 生成验证码

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.3 手机验证码案例 - 生成验证码5.3.1 SpringBoot …

众焱公司网络平台建设-传输网的规划与设计

目 录 摘 要 I Abstract II 第一章 项目概述 1 1.1 项目目标 1 1.1.1 总体目标 1 1.1.2 阶段目标 1 1.2 设计原则 2 1.3总体拓扑图设计 3 第二章 应用分析 4 2.1 应用分类 4 2.1.1 应用系统总体框架 4 2.1.2 业务系统应用分类 5 2.1.3 信息管理系统应用分类 6 2.2 数据中心及分…

数据结构:栈和队列

栈是一种特殊的线性结构&#xff0c;只允许在栈顶进行进行插入和删除操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出&#xff08;先进后出&#xff09;LIFO&#xff08;Last In First Out&#xff09;的原则。 类比成将子…

小学生python游戏编程arcade----爆炸粒子类

小学生python游戏编程arcade----爆炸粒子类前言1.1 参数设置粒子加速下降的速度。如果不需要&#xff0c;则为0粒子退出的速度粒子移动的速度。范围为2.5<-->5&#xff0c;设置为2.5和2.5。每次爆炸有多少粒子粒子直径多大粒子颜色列表我们有可能将纹理翻转为白色&#x…

芒果改进YOLOv7系列:首发改进特征融合网络BiFPN结构,融合更多有效特征

💡统一使用 YOLOv7 代码框架,结合不同模块来构建不同的YOLO目标检测模型。文章目录 一、BiFPN论文理论部分代码部分YOLOv7+BiFPN在这篇文章中,将BiFPN结构加入到 YOLOv7 结构中 一、BiFPN论文理论部分 EfficientDet: Scalable and Efficient Object Detection BiFPN与P…

芯天下在创业板过会:预计全年收入将达到10亿元,净利润约2亿元

11月18日&#xff0c;深圳证券交易所创业板披露的信息显示&#xff0c;芯天下技术股份有限公司&#xff08;下称“芯天下”&#xff09;获得上市委会议通过&#xff0c;即IPO过会。据贝多财经了解&#xff0c;芯天下于2022年4月28日在创业板递交上市申请材料。 本次冲刺创业板上…

vins-mono初始化代码分析

大体流程 初始化主要分成2部分&#xff0c;第一部分是纯视觉SfM优化滑窗内的位姿&#xff0c;然后在融合IMU信息。 这部分代码在estimator::processImage()最后面。 主函数入口&#xff1a; void Estimator::processImage(const map<int, vector<pair<int, Eigen:…

maven大全(概述、maven安装配置、IDEA配置maven、IDEA创建maven项目并如何使用)

目录 一、概述 1.什么是maven&#xff1f; 2.maven有什么作用&#xff1f; &#xff08;1&#xff09;提供了一套标准化的项目结构 &#xff08;2&#xff09;提供了标准化的构建流程&#xff08;编译、测试、打包、发布&#xff09; &#xff08;3&#xff09;提供了一套…