48天C++笔试强训 001

作者:@小萌新
专栏:@笔试强训
作者简介:大二学生 希望能和大家一起进步!
本篇博客简介:讲解48天笔试强训第一天的题目

笔试强训 day1

  • 选择题
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 编程题
    • 1
    • 2

选择题

1

以下for循环的执行次数是()

for(int x = 0, y = 0; (y = 123) && (x < 4); x++);

A. 是无限循环
B. 循环次数不定
C. 4次
D. 3次

答案: C

知识点:本题考查的知识点主要有两个 1. c语言中for循环的概念 2. 逻辑操作符

关于for循环的考点主要是第一个分号前表示初始条件

第二个分号前表示终止条件

第三个分号前表示增量表达式

具体的知识点可以参考我这篇博客中关于for循环的知识

for循环相关知识

关于逻辑操作符的考点主要是与操作符

与操作符必须全部为真才为真 只要有假就为假

所以说如果我们表达式前面部分为真后面的判断条件就必须要执行

当然如果前面表达式部分为假后面的判断条件就不需要执行了

具体的知识点可以参考我这篇博客中关于操作符的讲解

c语言操作符详解

解析:本题中初始条件为 x=0 y=0 终止条件为 (y =123)&& (x < 4)为假 增量表达式为x++

首先我们的(y = 123)是一个赋值语句 最后我们其实判断的是y是否为真 y被赋值123之后是非0 所以为真 继续判断&&后面的条件判断语句

x = 0 1 2 3 时为真 x = 4时为假 所以说最终for循环的执行次数为4次

2

以下程序的运行结果是()

#include <stdio.h>
int main(void) 
{
   printf("%s , %5.3s\n", "computer", "computer");
   return 0;
}

A. computer , puter
B. computer , com
C. computer , computer
D. computer , compu.ter

答案:B

知识点:本题考查的知识点主要是printf函数相关知识

具体内容可以参考我的这篇博客

printf输出格式

解析:本题中输出字符串格式有一个 %5.3s\n

其中5表示输出的宽度为5

.3s则表示输出字符串的前三个字符所以说输出后的结果应该是这样子 两个空格+字符串前三个字符

所以说本题答案选择B (由于markdown格式的自动对齐功能 可能看上去B选项前面没有两个空格 不是答案错了 这一点需要大家注意一下

3

下列main()函数执行后的结果为()

int func()
{
  int i, j, k = 0;
  for(i = 0, j = -1;j = 0;i++, j++)
  {
   k++;
  }
   return k;
}

int main()
{
  cout << (func(21));
  return 0;
}

A. -1
B. 0
C. 1
D. 2

答案: B

知识点:本题考查的主要知识点有1.c语言中for循环的概念 2. 函数调用操作符

关于for循环的相关知识大家参考第一题即可 博客链接也在第一题中给出了

关于函数调用操作符的知识大家可以参考我的这篇博客

函数调用操作符

解析:由于它的判断条件是 j = 0 这是一个赋值操作 判断的是j j为0 恒为假

所以说根本不会进行for循环

最终输出的结果是 (0)

这里不管有没有进行bool类型转换最终的结果都是0

4

下面的程序输出的是什么?

#include <stdio.h>
int main()
{
   int a=1,b=2,c=3,d=0;
   if(a == 1 && b++==2)
   if(b!=2||c--!=3)
   printf("%d,%d,%d\n" ,a,b,c);
   else
   printf("%d,%d,%d\n" ,a,b,c);
   else
   printf("%d,%d,%d\n" ,a,b,c);
   return 0;
}

A. 1,2,3
B. 1,3,2
C. 3,2,1
D. 1,3,3

答案: D

知识点: 本题主要考查的知识点有1. 代码的规范性 2. 逻辑操作符

关于代码的规范性 我们写出的else语句会往上找出一个离他最近且没有被匹配的if进行匹配

一些刚刚接触代码的同学可能会不注重代码的规范性 从而写出像题目这种可读性很差的代码

对于题目代码的正确规范书写如下

#include <stdio.h>
int main()
{
   int a = 1 ,b = 2, c = 3, d = 0;
   if (a == 1 && b++==2)
   {
      if (b != 2 || c--!=3)
      {
        printf("%d,%d,%d\n" , a ,b , c);
      }
      else
      {
        printf("%d,%d,%d\n" , a ,b , c)
      }
   }
   else
   {
      printf("%d,%d,%d\n" , a ,b ,c);
   }
}

关于逻辑操作符 我们在第一题中讲解了与操作符 这里出现了一个新的或操作符

它的意思是只要有真就为真

如果前面的逻辑判断有假的就一直往后判断下去

如果前面的逻辑判断有真的就停止判断

解析:首先 a b c的值分别为 1 2 3

由于b++是后置++ 所以说b++ == 2 为真

经过第一个if判断之后 a b c的值变为 1 3 3

在进入if判断里面后我们继续执行语句 b != 2为真 所以说后面的语句不用执行了

输出结果为 1 3 3

5

若有定义语句: int a=10 ; double b=3.14 ; 则表达式 ‘A’+a+b 值的类型是()

A. char
B. int
C. double
D. float

答案:C

知识点:本题考查的知识点主要是整型提升

关于整型提升大家可以参考我的这篇博客

整型提升

解析:一般来说整型提升会提升至占用空间更多那种数据类型 而本题中double占用的空间最多

6

p[1][2]的值是()

int p[][4] = {{1}, {3, 2}, {4, 5, 6}, {0}};

A. 1
B. 0
C. 6
D. 2

答案:B

知识点:本题的知识点主要是二维数组的初始化

具体内容可以参考我的这篇博客

二维数组的初始化

解析:

二维数组存储时候行可以省略 列不可以省略

其中每个大括号表示的是每行的数据 如果不足则以0补充

所以说它在内存中的分布应该是这样子的

1 0 0 0
3 2 0 0
4 5 6 0
0 0 0 0

第二行第三个数字是0

7

选择表达式 11|10 的结果(本题数值均为十进制)()

A 11
B 10
C 8
D 2

答案:A

知识点:本题考查的知识点是二进制和位操作符的使用

具体的位操作符相关知识可以参考我的这篇博客

位操作符相关

解析:11 的二进制可以表示为 1 0 1 1

10的二进制可以表示为 1 0 1 0

位操作如下图
在这里插入图片描述
所以说我们最终得到的结果是11

8

func(21)的运行结果是

int fun(int a){
	a^=(1<<5)-1;
	return a;
}

A 10
B 5
C 3
D 8

答案:A

知识点: 本题考查的知识点主要是位置操作

具体的知识可以参考第七题的博客

解析:我们首先计算括号内的内容 1 << n 的意思就是原来的数字向左移动n位

同样的-1操作也可以在二进制中使用 具体使用效果如下图所示

在这里插入图片描述
而21的二进制是 0 0 0 1 0 1 0 1

之后我们只需要异或一下就能得出答案

在这里插入图片描述
转化为十进制之后 答案很显然为10

9

若有定义语句:int year=1009,*p=&year;以下不能使变量 year 中的值增至 1010 的语句是()

A *p+=1;
B (*p)++;
C ++(*p)
D *p++

答案: D

知识点: 单目运算符的运算顺序和优先级

知识点很简单 单目操作符是从右往左进行计算的

解析: D选项中根据弹幕操作符的运算顺序 先对于p地址++ 然后解引用 并不能造成任何数值上的改变 还有可能造成野指针问题

10

下面关于"指针"的描述不正确的是()

A 当使用free释放掉一个指针内容后,指针变量的值被置为NULL
B 32位系统下任何类型指针的长度都是4个字节
C 指针的数据类型声明的是指针实际指向内容的数据类型
D 野指针是指向未分配或者已经释放的内存地址

答案:A

知识点:主要知识点是关于指针的相关概念

具体知识可以参考我的下面几篇博客

熟悉指针

指针进阶

解析:

A选项明显错误 当我们free释放掉一个指针内容之后 指针的地址仍未改变

所以说我们要手动置空来防止野指针问题

B选项正确 因为指针实际上就是地址 32位系统下的指针有32个bit位 所以大小是4个字节

C选项正确 这是指针的基本概念

D选项正确 这是野指针的基本概念

编程题

1

组队竞赛

下面我们都将会有题目的截图来代替文字描述 如果大家想要查看题目的文字描述的话可以点击题目超链接进入

在这里插入图片描述

知识点:优先级队列的使用

具体的知识点可以参考我的这篇博客

优先级队列

我们使用优先级队列可以很轻松的解决topk问题

解析:本题其实并没有涉及什么算法 更多的难点是思维上的

题目要求我们要将每个队伍中的第二水平高的人相加起来最大

所以说数值最大的人是永远不可能被选上的 因为他肯定不是水平第二高的(第一第二水平相同例外)

那么我们要发挥他的最大用处 就可以让他带一个水平第二高的和一个水平最低的人参赛

那么这就是第一个队伍

第二个队伍以此类推

那么我们很简单就能推出第二个队员的最大水平值 就是水平第二高的

第二个队员的第二大水平值就是水平第四高的

… …以此类推

反应到我们的优先级队列上就是先pop一个最大的 接下来的值就是我们想要的

代码解决方案如下

#include <iostream>
using namespace std;
#include <queue>
int main() 
{
    int k = 0;
    cin >> k;
    priority_queue<int> pq1;

    int m = 0;
    while(cin >> m)
    {
        pq1.push(m);
    }

    long long sum = 0;
    vector<int> v;
    while(k--)
    {
        pq1.pop();
        v.push_back(pq1.top());
        pq1.pop();
    }

    for (auto x : v)
    {
        sum += x;
    }

    cout << sum;
    return 0;
    
}

2

删除公共字符串

在这里插入图片描述
知识点:哈希表的使用

具体的知识点可以参考我的这篇博客

unorder_map/set的使用

其实一般遇到这种删除的题目我们第一时间就应该想到使用哈希表来简化查找(因为哈希表的查找效率是O(1))

解析:这个题目中我们只需要知道key值存不存在就好了 并不需要知道其他信息所以说使用set就好了

之后我们只需要遍历需要删除的字符串 查找该字符是否要删除 如果不要就加入到新字符串中

思路很简单

代码中还有一个需要注意的点 我们如果使用cin接受字符串的话 遇到空格就会终止

所以说这里我们不能使用cin 必须要使用getline函数接受一句话

参考博客如下

getline

代码表示如下

#include <iostream>
#include <unordered_map>
using namespace std;
#include <string>
#include <unordered_set>


int main() 
{
    string s1;
    string tok;
    getline(cin,s1); // 因为有空格 所以说必须要用getline
    cin >> tok ;


    unordered_set<char> set;
    for (auto x : tok)
    {
        set.insert(x);
    }


    string ans;
    for (auto x : s1)
    {
        if (set.find(x) == set.end())
        {
            ans += x;
        }
    }

    cout << ans;
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你基于HTML、CSS搭建我的相册(上)

The sand accumulates to form a pagoda写在前面HTML是什么&#xff1f;CSS是什么&#xff1f;demo搭建写在最后写在前面 其实有过一些粉丝咨询前端该从什么开始学&#xff0c;那当然是我们的前端基础三件套开始学起&#xff0c;HTML、CSS、javaScript&#xff0c;前端的大部分…

字符函数和字符串函数【下篇】

文章目录&#x1f396;️1.函数介绍&#x1f4ec;1.8. strstr&#x1f4ec;1.9. strtok&#x1f4ec;1.10. strerror&#x1f4ec;1.11. memcpy&#x1f4ec;1.12. memmove&#x1f4ec;1.13. memcmp&#x1f4ec;1.14. memset&#x1f396;️1.函数介绍 &#x1f4ec;1.8. st…

Linux - 进程控制(进程等待)

进程等待必要性之前讲过&#xff0c;子进程退出&#xff0c;父进程如果不管不顾&#xff0c;就可能造成‘僵尸进程’的问题&#xff0c;进而造成内存泄漏。另外&#xff0c;进程一旦变成僵尸状态&#xff0c;那就刀枪不入&#xff0c;“杀人不眨眼”的kill -9 也无能为力&#…

基于java下Springboot框架实现旅游管理平台系统

基于java下Springboot框架实现旅游管理平台系统开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven…

自动驾驶自主避障概况

文章目录前言1. 自主避障在自动驾驶系统架构中的位置2. 自主避障算法分类2.1 人工势场法&#xff08;APF&#xff09;2.1.1引力势场的构建2.1.2斥力势场的构建2.1.3人工势场法的改进2.2 TEB&#xff08;Timed-Eastic-Band, 定时弹性带&#xff09;2.3 栅格法2.4 向量场直方图(V…

基于鲸鱼算法的极限学习机(ELM)分类算法-附代码

基于鲸鱼算法的极限学习机(ELM)分类算法 文章目录基于鲸鱼算法的极限学习机(ELM)分类算法1.极限学习机原理概述2.ELM学习算法3.分类问题4.基于鲸鱼算法优化的ELM5.测试结果6.参考文献7.Matlab代码摘要&#xff1a;本文利用鲸鱼算法对极限学习机进行优化&#xff0c;并用于分类问…

C++继承

文章目录继承的概念和定义继承的概念继承定义继承定义格式继承基类成员访问方式的变化基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员复杂的菱形继承及菱形虚拟继承菱形虚拟继承菱形虚拟继承原理菱形虚拟继承中虚指针应用继承的总结和反…

【C语言】字符串函数和内存函数

前言&#x1f338;在我们编写C程序时&#xff0c;除了使用自定义函数&#xff0c;往往还会使用一些库函数&#xff0c;例如标准输入输出函数printf&#xff0c;scanf&#xff0c;字符串函数strlen&#xff0c;内存函数memset等等&#xff0c;使用这些系统自带的库函数可以轻松地…

MongoDB【部署 01】mongodb最新版本6.0.5安装部署配置使用及mongodb-shell1.8.0安装使用(云盘分享安装文件)

云盘分享文件&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/11sbj1QgogYHPM4udwoB1rA 提取码&#xff1a;l2wz 1.mongodb简单介绍 MongoDB的 官网 内容还是挺丰富的。 是由 C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。在高负载的情况下&…

【JavaEE初阶】第八节.网络原理网络层和数据链路层,应用层

文章目录 前言 一、网络层协议 1.1 IP协议 1.2 IP地址&#xff1b; 1.3 路由选择&#xff1b; 二、数据链路层 2.1 以太网协议&#xff1b; 三、应用层&#xff1b; 3.1 应用层协议DNS&#xff1b; 3.2 DNS是如何完成转换的&#xff1b; 3.3 如何解决DNS访问量太高的…

c语言的基础知识之结构体

目录前言结构体结构的自引用typedef函数结构体内存对齐修改默认对齐数位段什么是位段位段的内存分配位段的跨平台问题位段的意义以及应用枚举枚举常量的赋值枚举的优点总结前言 欢迎来到戴佳伟的小课堂&#xff0c;那今天我们讲啥呢&#xff1f; 问得好&#xff0c;我们今天要讲…

数据库面试题——锁

了解数据库的锁吗&#xff1f; 锁是数据库系统区别于文件系统的一个关键特性&#xff0c;锁机制用于管理对共享资源的并发访问。 InnoDB下两种标准行级锁&#xff1a; 共享锁&#xff08;S Lock&#xff09;&#xff0c;允许事务读一行数据。 排他锁&#xff08;X Lock&…

图解如何一步步连接远程服务器——基于VScode

基于VScode连接远程服务器 安装Remote-SSH等插件 想要在vscode上连接远程服务器需要下载Remote-SSH系列插件&#xff1a; 直接在插件中搜索remote&#xff0c;即可找到&#xff0c;选择图片中的3个插件&#xff0c;点击install安装。 配置Remote-SSH 在这个步骤有多种操作…

和ChatGPT对比,文心一言的表现已经是中国之光了

网络上各种测评满天飞&#xff0c;这里就不展开说了&#xff0c;针对“chatgpt”这项技术的难点&#xff0c;是十分巨大的。当你对文心一言以及其他国产AI软件存在不满的时候&#xff0c;你可以简单对着chatgpt或者文心一言搜索&#xff01;ChatGPT技术难点通俗来讲难度&#x…

节流还在用JS吗?CSS也可以实现哦

函数节流是一个我们在项目开发中常用的优化手段&#xff0c;可以有效避免函数过于频繁的执行。一般函数节流用在scroll页面滚动&#xff0c;鼠标移动等。 为什么需要节流呢&#xff0c;因为触发一次事件就会执行一次事件&#xff0c;这样就形成了大量操作dom,会出现卡顿的情况…

LeetCode:35. 搜索插入位置

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340;算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 一、&#x1f331;35. 搜索插入位置 题目描述&#xff1a;给定一个排序数组和一个目标值&…

CentOS8服务篇10:FTP服务器配置与管理

一、安装与启动FTP服务器 1、安装VSFTP服务器所需要的安装包 #yum -y install vsftpd 2、查看配置文件参数 Vim /etc/vsftpd/vsftpd.conf &#xff08;1&#xff09;是否允许匿名登录 anonymous_enableYES 该行用于控制是否允许匿名用户登录。 &#xff08;2&…

年报前瞻:文化产业高质量发展确定性,关注腾讯音乐三大关键能力

港股进入年报季&#xff0c;今年的披露期拥有比往年更多的看点。 一方面&#xff0c;经济复苏态势明显&#xff0c;线上线下消费均有回暖&#xff0c;市场已经对去年的整体表现有更多预期&#xff0c;正关注企业对后续发展的思考&#xff1b;另一方面&#xff0c;两会结束&…

2023美赛C题【分析思路+代码】

以下内容为我个人的想法与实现&#xff0c;不代表任何其他人。 文章目录问题一数据预处理时间序列模型创建预测区间单词的任何属性是否影响报告的百分比&#xff1f;如果是&#xff0c;如何影响&#xff1f;如果不是&#xff0c;为什么不是&#xff1f;问题二问题三难度评估模型…

【Vue3】利用vite创建vue3项目

&#x1f3c6;今日学习目标&#xff1a;利用vite创建vue3项目 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人格言&#xff1a;生如芥子&#xff0c;心藏须弥 ⏰本期期数&#xff1a;第二期 &#x1f389;专栏系列&#xff1a;Vue3 文章目录前言vite简介利用vite创建vue3项目…
最新文章