【C++刷题集】-- day1

news2024/11/28 14:37:23

目录

选择题

单选

编程题

组队竞赛⭐

【题目解析】

【解题思路】(排序 + 贪心)

删除公共字符⭐

【题目解析】

【解题思路】(哈希映射)


选择题

单选

1、 以下for循环的执行次数是  ( )
for(int x = 0, y = 0; (y = 123) && (x < 4); x++);
是无限循环
循环次数不定
4次
3次
正确答案:

解析:

  • 初始化:为逗号表达式式,从左到右执行。
  • 条件判断:为逻辑与需同真为真,y = 123赋值表达式,返回值为所赋的值 (y = 123) && (x < 4) -> (123恒为真) && (x < 4)。
  • 调增x:0 -> 1 -> 2 -> 3。
  • 循环语句:空语句。

----------------------------------------------

2、 以下程序的运行结果是  ( )
#include <stdio.h>
int main(void) {
	printf("%s , %5.3s\n", "computer", "computer");
	return 0;
}
computer , puter
computer ,    com
computer , computer
computer , compu.ter
正确答案:

解析:

  • %s遇见 '\0' 就停止打印。
  • %m.ns
    • m:输出字符串的宽度。
    • n:左起截取目标字符串n个字符。
      • 字符串长度 > n > m:此时m的作用失效,是只受n的控制。
      • m > n:是右对齐补空格。
      • n > 字符串长度:作用与%s一样。
----------------------------------------------

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());
	return 0;
}
-1
0
1
2
正确答案:

解析:

  • 初始化:为逗号表达式式,从左到右执行。
  • 条件判断:j = 0赋值表达式,返回值为所赋的值0恒为假。
  • 调增x:不执行。
  • 循环语句:不执行。

----------------------------------------------
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;
}
1,2,3
1,3,2
3,2,1
1,3,3
正确答案:

解析:

后置++、后置--:先使用再++ / --。如:b++ == 2,是先进行b == 2的判断,判断完再进行++。

前置++、前置--:先++ / --再使用。如:++b == 2,是先进行++,++完再进行b == 2的判断。

||逻辑判断:有真即真,所以第一个为真,第二个的状态就不重要了,于是编译器会优化,不执行第二个(短路原则)

&&逻辑判断:有假即假,所以第一个为假,第二个的状态就不重要了,于是编译器会优化,不执行第二个(短路原则)

----------------------------------------------
5、 若有定义语句:
int a=10; 
double b=3.14; 
则表达式 'A'+a+b 值的类型是  ( )
char
int
double
float
正确答案:

解析:

        不同类型的表达式进行计算的时候,会有自动提升的过程,也就是说表示范围小的类型会自动提升为表示范围大的类型。如上:char类型 + int类型 + double类型,最终经过整形提升和算数转换,最终提升类型double类型。

表达式求值( 整形提升 + 算术转换 )_川入的博客-CSDN博客

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

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

1
0
6
2
正确答案:

解析:

        二维数组:行可省略,列不可省略,未进行初始化部分默认为0。

----------------------------------------------
7、 选择表达式 11|10 的结果 ( 本题数值均为十进制 )  ( )
11
10
8
2
正确答案:

解析:

11:0000 1011

10:0000 1010

11 | 10:0000 1011 = 11

( | 按位或:有1则1;& 按位或:有0则0)

----------------------------------------------
8、
int fun(int a) {
	a ^= (1 << 5) - 1;
	return a;
}
fun(21)运行结果是  ( )
10
5
3
8
正确答案:

解析:

a ^= b:a = a ^ b。

1 << 5:0010 0000 = 32 = 0001 1111。

a = (21)^(31):(0001 0101) ^ ( 0001 1111) = 1010 = 10。

^按位异或:异为1,同为0

----------------------------------------------
9、 若有定义语句:
int year=1009,*p=&year;
以下不能使变量 year 中的值增至 1010 的语句是  ( )
*p+=1;
(*p)++;
++(*p);
*p++;
正确答案:

解析:

优先级:( ) > 后置++ > 前置++ > * > +=

操作符优先级(详细说明+表格+问题表达式)_川入的博客-CSDN博客

----------------------------------------------
10、 下面关于"指针"的描述不正确的是  ( )
当使用free释放掉一个指针内容后,指针变量的值被置为NULL。
32位系统下任何类型指针的长度都是4个字节。
指针的数据类型声明的是指针实际指向内容的数据类型。
野指针是指向未分配或者已经释放的内存地址。
正确答案:

解析:

free释放掉一个指针内容后,只是销毁了指针所指向的空间,并不会将指针置NULL,此时指针指向一个被销毁的空间 -- 野指针。

  • 常见的造成野指针的原因:
  1. 定义指针的时候为进行初始化。
  2. free释放掉指针后没有置NULL。
  3. 越界访问。

编程题

组队竞赛⭐

组队竞赛_牛客笔试题_牛客网 (nowcoder.com)


        牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i。现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人。牛牛发现队伍的水平值等于该队伍队员中第二高水平值。
例如:
        一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3
        一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3
        一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2
为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。

【题目解析】

        队伍的水平值等于该队伍队员中第二高水平值,为了所有队伍的水平值总和最大的解法,也就是说每个队伍的第二个值是尽可能大的值所以实际值把最大值放到最右边,最小是放到最左边。

【解题思路】(排序 + 贪心)

  • 排序 + 贪心算法:贪心算法就是每次选值时都选当前能看到的局部最解忧,所以这里的贪心就是保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取最大,而尽量取最大就是最大的次极大。
  • 例如:现在排序后有 1 2 5 5 8 9 ,那么分组为1 8 9 和 2 5 5。

        所以我们再排除最大的情况下取次大。

        于是中间值8最好,而左为小,越小越好。

         贪心算法:只看局部最优解。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n = 0;
    cin >> n;
    vector<int> val(3*n, 0);
    for (int i = 0; i < (3 * n); i++) cin >> val[i];

    // 排序
    sort(val.begin(), val.end());

    // 所有队伍的水平值总和最大值
    uint64_t ret = 0;

    // 贪心
    int right = 0;
    int left = val.size() - 1;
    for(;right < left; right++)
    {
        ret += val[left - 1];
        left -= 2;
    }
    
    cout << ret << endl;
    return 0;
}

删除公共字符

删除公共字符_牛客题霸_牛客网 (nowcoder.com)


输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

【题目解析】

        略

【解题思路】(哈希映射)

        如果使用传统的暴力查找方式,滚动两个字符串,效率为O(N^2)太低了,很难让人满意抛弃解法,采用哈希映射更好。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    string str;
    string sub;
    
    // 注意这里不能使用cin接收,因为cin遇到空格就结束了。
    // 使用string提供的getline
    getline(cin, str);
    getline(cin, sub);

    // 使用哈希映射思想统计str中字符的出现
    vector<int> hashtable(256,0);
    for(int i = 0; i < sub.size(); i++) hashtable[sub[i]] = 1;

    // 这里就不采取erase的方式(需要移动),采取利用空间换时间。
    string str_ret;
    for(int i = 0; i < str.size(); i++)
    {
        if(hashtable[str[i]] == 1)
            continue;
        str_ret.push_back(str[i]);
    }
    cout << str_ret << endl;
}

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

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

相关文章

Leetcode刷题之有效的括号

我们的内心和心智&#xff0c;是决定我们未来命运的最强劲的力量。 -- 奥普拉温弗瑞目录 &#x1f341;一.有效的括号 &#x1f34d;1.使用栈实现 &#x1f352;2.完整代码&#xff1a; 题目描述&#xff1a; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0…

Sonar Qube代码质量检测工具安装及基本使用

Sonar介绍 Sonar Qube是一个开源的代码分析平台&#xff0c;支持Java、Python、PHP、JavaScript、CSS等25种以上的语言&#xff0c;可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。 Sonar Qube可以与多种软件整合进行代码扫描&#xff0c;比如Maven&#xff0c;…

算法套路十七——买卖股票问题:状态机 DP

算法套路十七——买卖股票问题&#xff1a;状态机 DP 状态机DP是一种将动态规划方法应用于有限状态机&#xff08;Finite State Machine&#xff09;的问题求解方法。 状态机DP&#xff08;State Machine DP&#xff09;是一种动态规划的思想&#xff0c;它通常用于解决一些具…

行动元宣布推出面向精密制造领域的智能运动控制解决方案

近日&#xff0c;AI 工业工程化平台行动元宣布推出面向精密制造领域的智能运动控制解决方案。该方案融合大数据模型、数字孪生以及人工智能技术&#xff0c;通过数字化建模、适配、调试等过程&#xff0c;极大提升终端设备集成方案的设计、选型与测试效率&#xff0c;并通过算法…

你不学,我不学,谁来网安,谁来保卫国家!

一、为什么选择网络安全&#xff1f; 这几年随着我国**《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》**等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前…

PCL点云库(6) — Filters模块空间裁剪器类

目录 6.1 3D包围盒裁剪器Class BoxClipper3D< PointT > 6.2 平面裁剪器Class pcl::PlaneClipper3D< PointT > 6.3 立方体过滤Class pcl::CropBox< PointT > 6.4 曲面或多边形过滤 Class pcl::CropHull< PointT > 6.5 完整代码 6.1 3D包围盒裁剪器…

C语言基础:static关键字

本文结合工作经验&#xff0c;研究C语言中static关键字的用法。 文章目录 1 static关键字概念2 用法与使用场景2.1 修饰全局变量2.1.1 代码示例2.1.2 使用场景 2.2 修饰函数2.2.1 代码示例2.2.2 使用场景 2.3 修饰局部变量2.3.1 代码示例2.4.2 使用场景 3 总结 1 static关键字…

第13章:存储过程和存储函数

一、存储过程 1.1理解 含义&#xff1a; 存储过程stored procedure&#xff0c;思想是一组经过预先编译的SQL语句的封装。 存储过程预先存储在MySQL服务器上&#xff0c;需要执行的时候&#xff0c;客户端向服务器端发出调用存储过程的命令&#xff0c;服务器段把这组SQL执…

当我和ChatGPT-4聊完后,我觉得一切可能已经来不及了

飞机上有wifi&#xff0c;了然无味&#xff0c;在万米高空&#xff0c;和ChatGPT-4开始了一场坦诚的沟通&#xff0c;它全程都表现出高情商&#xff0c;以及不断尽量安抚我的情绪&#xff0c;而这&#xff0c;恰恰令我脊背发凉。 部分文字截取 ZM&#xff1a;我能不能理解每次对…

k8s学习-CKS真题-ImagePolicyWebhook容器镜像扫描

目录 题目环境搭建imagePolicyWebhook搭建 解题任务二任务三任务一检查 模拟考题参考 题目 Context cluster上设置了容器镜像扫描器&#xff0c;但尚未完全集成到 cluster 的配置中。 完成后&#xff0c;容器镜像扫描器应扫描并拒绝易受攻击的镜像的使用。 Task 注意&#xff…

5.17 ARM 作业

1. 2.用for循环实现1~100之间的和 13BA 3.xmind

可以找工作的C端的低代码产品,终于让我找到了

目录 写在前面 低代码平台 平台怎么选 各平台区别 为什么选它 写在前面 大家都知道低代码这个叫法是从B端叫起来的&#xff0c;也就是说不管是业务人员还是开发人员&#xff0c;都是企业内部使用。那么有没有C端的&#xff0c;且免费使用的低代码产品呢&#xff1f; 低代码…

一次性能优化思考过程

前言 最近业务上空闲了下来&#xff0c;也是把之前在开发时自身感受比较大的白屏时间放在了主线上去排查优化&#xff0c;这里记录一下笔者对于移动端vConsole脚本的引入问题全过程。 网络脚本与问题定位 对于白屏时间&#xff0c;与网络传输有很大关系&#xff0c;如图&…

该怎样学习网络安全知识?

首先&#xff0c;必须&#xff08;时刻&#xff09;意识到你是在学习一门可以说是最难的课程&#xff0c;是网络专业领域的顶尖课程&#xff0c;不是什么人、随随便便就能学好的。不然&#xff0c;大家都是黑客&#xff0c;也就没有黑客和网络安全的概念了。 很多朋友抱着学一…

#systemverilog# 之 event region 和 timeslot 仿真调度(五)实战

目录 一 问题代码 二 解决方法 2.1 调换代码顺序 2.2 #0 Delay 2.3 uvm class 执行移到re-avtive 2.4 搭建完备的UVM 验证平台 三 预期波形 经过之前文章的学习&#xff0c;想必大家对systemverilog 仿真调度的理解&#xff0c;应该八九不离十了。今天&#xff0c;我们…

基于STM32的NRF24L01 2.4G通讯模块的驱动实验(HAL库)

前言&#xff1a;本文为手把手教学NRF24L01 2.4G通讯模块的驱动实验&#xff0c;本教程的 MCU 采用STM32F103ZET6与STM32F103C8T6&#xff0c;彼此进行互相通讯。通过 CubeMX 软件配置 SPI 协议驱动NRF24L01 2.4G通讯模块&#xff08;HAL库&#xff09;。NRF24L01 2.4G是嵌入式…

渗透测试--5.2.hash密码的破解

目录 1.hashcat简介 2.hashcat参数 常见参数 哈希类型&#xff08;-m&#xff09; 破解模式&#xff08;-a&#xff09; 3.实例 步骤一&#xff1a;使用hash-identifier工具判断哈希值类型 步骤二&#xff1a;使用字典攻击进行破解 1.hashcat简介 hashcat号称世界上最…

js实现点击改变文字大小

目录 一、前言二、代码实现 一、前言 在编写代码之前我们先来看看通过js获取元素有几种方式&#xff1a; 1.第一种 document.querySelector() 返回文档中匹配指定的选择器组的第一个元素document.querySelectorAll(); 返回文档中匹配指定的选择器组的所有元素 <!DOCTYPE ht…

vector容器 [上]

目录 一、 对于vector的介绍 二、vector的定义 0x01 无参构造 0x02 构造并初始化n个val 0x03 使用迭代器进行初始化构造 0x04 拷贝构造 0x05 比较 三、 vector的遍历 0x01 push_back() 0x02 operator[] 和at() 0x03 遍历 四、vector 容量空间 0x01 max_size : 返回v…

【设置教程】未使用系统分配DNS地址 如何设置?答:

未使用系统分配DNS地址&#xff0c;是你的域名解析DNS地址不是当前系统的DNS地址。 设置方法&#xff1a;先关闭更新。域名控制台--域名列表--安全设置&#xff1a; 通过短信验证。 2、修改DNS地址&#xff1a;域名控制台--域名列表&#xff1a;点击域名&#xff1a; 3、点击&…