【基础训练 || Test-1】

总言
主要内容:一些习题。
文章目录
- 总言
- 一、选择
- 1、for循环、操作符(逗号表达式)
- 2、格式化输出(转换说明符)
- 3、for循环、操作符(逗号表达式、赋值和判等)
- 4、if语句、操作符(自增自减、判等)
- 5、表达式求值(类型转换)
- 6、二维数组(数组初始化)
- 7、位操作符(按位或与非)
- 8、位移操作符、位操作符
- 9、运算符优先级
- 10、 指针概念理解
- 二、编程
- 2.1、组队竞赛
- 2.1.1、题目
- 2.1.2、题解:贪心
- 2.2、删除公共字符
- 2.2.1、题目
- 2.2.2、题解一:直接遍历查找删除
- 2.2.3、题解二:借助哈希
- Fin、共勉。
一、选择
1、for循环、操作符(逗号表达式)
以下for循环的执行次数是()
for (int x = 0, y = 0; (y = 123) && (x < 4); x++);A 是无限循环
B 循环次数不定
C 4次
D 3次
相关知识链接:操作符详解
回答: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
回答:computer , com
相关说明:


3、for循环、操作符(逗号表达式、赋值和判等)
下列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;
}A -1
B 0
C 1
D 2
相关链接:for循环表达式
回答:i=j=k=0;

4、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);elseprintf("%d,%d,%d\n", a, b, c);elseprintf("%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
考察:
①if语句中,else匹配原则:相关链接。
②逻辑运算符中的短路现象:相关链接。
回答:a=1 b=3 c=3(短路) d=0

5、表达式求值(类型转换)
若有定义语句: int a=10 ; double b=3.14 ; 则表达式 'A'+a+b 值的类型是()
A char
B int
C double
D float
考察了隐式类型转换(整型提升、算术转换):相关链接
回答:C以下为寻常算术转换:(自下向上转换)
long double
double
float
unsigned long int
long int
unsigned int
int
6、二维数组(数组初始化)
下述p[1][2]的值是()
int p[][4] = {{1}, {3, 2}, {4, 5, 6}, {0}};A 1
B 0
C 6
D 2
考察了二维数组的创建与初始化:相关链接。
回答:0。四行四列,行可以省略时花括号区分,值不够时默认为0。

7、位操作符(按位或与非)
选择表达式 11|10 的结果(本题数值均为十进制)()
A 11
B 10
C 8
D 2
相关链接。
回答:11。
8、位移操作符、位操作符
fun(21)运行结果是()
int fun(int a) {a ^= (1 << 5) - 1;return a;
}A 10
B 5
C 3
D 8
相关链接。
回答:10。
9、运算符优先级
如下述定义语句,不能使变量 year 中的值增至 1010 的语句是()
int year=1009,*p=&year;A *p+=1;
B (*p)++;
C ++(*p);
D *p++;
主要考察前置自增、后置自增、解引用操作符优先级相关链接。
回答:D。

10、 指针概念理解
下面关于"指针"的描述不正确的是()
A 当使用free释放掉一个指针内容后,指针变量的值被置为NULL
B 32位系统下任何类型指针的长度都是4个字节
C 指针的数据类型声明的是指针实际指向内容的数据类型
D 野指针是指向未分配或者已经释放的内存地址
A
解释:实际上,使用 free() 函数释放一个指针所指向的内存时,指针本身的值并不会被自动置为 NULL。free() 只负责释放内存,而不会修改指针的值。 因此,指针仍然会指向之前分配的内存地址,但这个地址现在可能已经被操作系统用于其他目的,所以访问这个地址可能会导致未定义行为,比如程序崩溃。为了避免这种情况,一种常见的做法是在调用 free() 之后手动将指针设置为 NULL。
二、编程
2.1、组队竞赛
2.1.1、题目
题源:链接
牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i。现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人。牛牛发现队伍的水平值等于该队伍队员中第二高水平值。
例如:
一个队伍三个队员的水平值分别是3,3,3。那么队伍的水平值是3。
一个队伍三个队员的水平值分别是3,2,3。那么队伍的水平值是3。
一个队伍三个队员的水平值分别是1,5,2。那么队伍的水平值是2。
为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。如样例所示:
如果牛牛把6个队员划分到两个队伍
如果方案为:team1:{1,2,5}、team2:{5,5,8},这时候水平值总和为7。
而如果方案为:team1:{2,5,8}, team2:{1,5,5}, 这时候水平值总和为10。
没有比总和为10更大的方案,所以输出10。
2.1.2、题解:贪心
说明: ①既然涉及到取较大值,先将输入的数据排序处理;②其次,让每次选值尽量取当前最大两值(由于最大的数不可能是中位数,所以退而求其次,取每组中第二大的);③这样,最终获取到的所有组中的水平值总和最大。
举例:
1 2 3 4 5 6 7 8 9组1: 1 8 9 -->8;
组2: 2 6 7 -->6;
组3: 3 4 5 -->4;
中位数和:8、6、4.(当前最大)下标关系:arr[arr.length-2*(i+1)]
arr.length=9;
i=0时,arr[7]=8;
i=1时,arr[5]=6;
i=2时,arr[3]=4;
i根据n值而定。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {//1、输入数据long long n;//n个队伍while (cin >> n) //OJ题,可能存在多组测试用例{ vector<int> arr(3 * n);//3*n个选手for (int i = 0; i < 3 * n; ++i){cin >> arr[i];}//2、排序std::sort(arr.begin(), arr.end());//3、找每组水平值long long sum = 0;//用于统计最后水平值总和。for (int i = 0; i < n; ++i) {sum += arr[arr.size() - (2 * (i + 1))];}cout << sum << endl;}return 0;
}
2.2、删除公共字符
2.2.1、题目
题源:链接

2.2.2、题解一:直接遍历查找删除
说明: 如下,根据s2中给定查找的字符串,遍历一遍s1,将满足s2中的字符删除。时间复杂度为 O ( M ∗ N 2 ) O(M*N^2) O(M∗N2) [ 遍历s1(n),erase挪位删除(n),遍历s2(m)。]
其它: 熟悉string类接口的使用。
#include <iostream>
#include <string>
using namespace std;int main()
{string s1, s2;getline(cin, s1);getline(cin, s2);int pos = 0;for (size_t i = 0; i < s2.size(); ++i){while ((pos = s1.find(s2[i])) != string::npos){s1.erase(pos, 1);}}cout << s1 << endl;return 0;
}
2.2.3、题解二:借助哈希
说明:字符串一共256个,可以建立一个char类型的长度固定的数组来做哈希映射,该数组用来统计s2字符串中出现的字母的个数。遍历s1与该哈希数组比较,该数组中存在的值说明在s2中出现过。
#include <iostream>
#include <string>
using namespace std;int main()
{string s1,s2;getline(cin,s1);getline(cin,s2);string ret;int hash[256] = {0};//使用哈希映射思想先统计s2中各字符出现的次数for(size_t i = 0; i < s2.size(); ++i){hash[s2[i]]++;}for(size_t i = 0; i < s1.size(); ++i){if(hash[s1[i]] == 0)ret += s1[i];}cout << ret << endl;return 0;
}
Fin、共勉。

相关文章:
【基础训练 || Test-1】
总言 主要内容:一些习题。 文章目录 总言一、选择1、for循环、操作符(逗号表达式)2、格式化输出(转换说明符)3、for循环、操作符(逗号表达式、赋值和判等)4、if语句、操作符ÿ…...
Python读取hbase数据库
1. hbase连接 首先用hbase shell 命令来进入到hbase数据库,然后用list命令来查看hbase下所有表,以其中表“DB_level0”为例,可以看到库名“baotouyiqi”是拼接的,python代码访问时先连接: def hbase_connection(hbase…...
LeetCode41题:缺失的第一个正数(python3)
这道题写的时候完全没有思路,看了很久的题解,才总结出来。 class Solution:def firstMissingPositive(self, nums: List[int]) -> int:nums_set set(nums)n len(nums)for i in range(1, n 1):if i not in nums_set:return ireturn n 1...
C# DataTable 对象操作
实现DataTable按字段进行分类、按列数据汇总、序列化对象数组、所有字段转小写、动态对象数组、数据分页 分类DataTableClassfiy实体: /// <summary>/// 单个分类表/// </summary>public class DataTableClassfiy{/// <summary>/// 分类名称/// &…...
web运行时安全
1.输入验证 对传递的数据的格式、长度、类型(前端和后端都要)进行校验。 对黑白名单校验:比如前端传递了一个用户名,可以搜索该用户是否在白名单或者黑名单列表。 针对黑名单校验,比如: // 手机号验证…...
FPGA 与 数字电路的关系 - 这篇文章 将 持续 更新 :)
先说几个逻辑:(强调一下在这篇文章 输入路数 只有 1个或2个,输出只有1个,N个输入M个输出以后再说) 看下面的几个图: 图一( 忘了 这是 啥门,不是门吧 :)也就…...
18 SpringMVC实战
18 SpringMVC实战 1. 课程介绍2. Spring Task定时任务1. 课程介绍 2. Spring Task定时任务 package com.imooc.reader.task...
Rocky Linux 运维工具 dnf
一、dnf的简介 dnf是用于在基于RPM包管理系统的包管理工具。用户可以通过 yum来搜索、安装、更新和删除软件包,自动处理依赖关系,它是yum的继任者,旨在提供更快速、更现代化的软件包管理体验。。 二、dnf 的参数说明 序号参数描述1in…...
浅谈 Linux fork 函数
文章目录 前言fork 基本概念代码演示示例1:体会 fork 函数返回值的作用示例2:创建多进程,加深对 fork 函数的理解 前言 本篇介绍 fork 函数。 fork 基本概念 pid_t fork(void) fork 的英文含义是"分叉",在这里就是 …...
golang 装饰器模式详解
前言 我一直以来对golang的装饰器模式情有独衷,不是因为它酷,而是它带给我了太多的好处。首先我不想说太多的概念,熟记这些概念对我的编程来说一点用处没有。我只知道它给我带来了好处,下面谈谈我的理解。 这种模式可以很轻松地…...
刷题笔记day27-回溯算法2
216. 组合总和 III 这个思路还是,三部曲: 终止条件处理单层节点回溯节点 题中说的是,1到9的数,不能有重复。 k个数,和为n。 那么只要 len(path) k 的时候,判断 n 为0,就可以入切片了。 fun…...
前端架构: 脚手架命令行交互核心实现之inquirer和readline的应用教程
命令行交互核心实现 核心目标:实现命令行行交互,如List命令行的交互呢比命令行的渲难度要更大,因为它涉及的技术点会会更多它涉及以下技术点 键盘输入的一个监听 (这里通过 readline来实现)计算命令行窗口的尺寸清屏光标的移动输出流的静默 …...
【C++初阶】内存管理
目录 一.C语言中的动态内存管理方式 二.C中的内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 3.浅识抛异常 (内存申请失败) 4.new和delete操作自定义类型 三.new和delete的实现原理 1.内置类型 2.自定义类型 一.C语…...
《PyTorch深度学习实践》第十二讲循环神经网络基础
一、RNN简介 1、RNN网络最大的特点就是可以处理序列特征,就是我们的一组动态特征。比如,我们可以通过将前三天每天的特征(是否下雨,是否有太阳等)输入到网络,从而来预测第四天的天气。 我们可以看RN…...
蓝桥杯算法题汇总
一.线性表:链式 例题:旋转链表 二.栈: 例题:行星碰撞问题 三.队列 三.数组和矩阵 例题: 四.哈希表 五.二叉树 主要方法是递归 主要考察点是遍历:前序,中序,后序遍历,层…...
【MySQL】学习多表查询和笛卡尔积 - 副本
](https://img-blog.csdnimg.cn/21dd41dce63a4f2da07b9d879ad0120b.png#pic_center) ??个人主页: ??热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ??个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-N8PeTKG6uLu4bJuM {font-family:“trebuchet ms”,…...
C++设计模式_创建型模式_工厂方法模式
目录 C设计模式_创建型模式_工厂方法模式 一、简单工厂模式 1.1 简单工厂模式引入 1.2 简单工厂模式 1.3 简单工厂模式利弊分析 1.4 简单工厂模式的UML图 二、工厂方法模式 2.1 工厂模式和简单工厂模式比较 2.2 工厂模式代码实现 2.3 工厂模式UML 三、抽象工厂模式 3.1 战斗场景…...
matlab批量替换txt文本文件的特定行的内容
1.下图所示,我想要替换第14行。 2.运行代码后,第14行已经更改为需要的内容。 clc,clear; %%----------------------需要更改的地方------------------------------------ % 设置要操作的文本文件路径,替换为你自己的文件路径 path D:\paper_…...
Qt Creator配置MSVC编译环境、调试环境
在windows上开发,一般使用Qt Creator自带mingw编译器,编译和调试都很方便,安装Qt时勾选后,自动配置完毕。 但是有时候我们需要使用MSVC的编译器,这个时候我们没法直接使用,需要配置环境才能使用࿰…...
Linux系统运维命令:终止监听在 TCP端口80上的所有进程(使用lsof,grep,awk组合命令, 终止监听在 TCP某个端口上的所有进程)
目 录 一、需求 二、解决方法 1、解决思路 2、命令 三、实例演示和命令解释 1、实例演示 (1)查看目前有哪些在TCP端口80监听的进程 (2)、使用命令 (3)、查看效果 2、命令解…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
