【基础训练 || Test-1】

news2024/9/24 0:24:56

在这里插入图片描述

总言

  主要内容:一些习题。
  
  

文章目录

  • 总言
  • 一、选择
    • 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);
		else
			printf("%d,%d,%d\n", a, b, c);
	else
		printf("%d,%d,%d\n", a, b, c);
	return 0;
}

A 123
B 132
C 321
D 133

  考察:
  ①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 911 8 9 -->8;22 6 7 -->6;33 4 5 -->4;
中位数和:864.(当前最大)

下标关系: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(MN2) [ 遍历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、共勉。

在这里插入图片描述

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

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

相关文章

如何根据PalWorldSettings.ini重新生成定制的WorldOption.sav文件?

这个过程涉及到将PalWorldSettings.ini 文件中的设置与WorldOption.sav 文件进行匹配和替换。具体的操作步骤可能包括检查PalWorldSettings.ini 文件中的设置是否与WorldOption.sav 文件中的设置相匹配&#xff0c;然后根据这些设置重新生成或修改WorldOption.sav 文件&#xf…

腾讯云学生云服务器_学生云主机_学生云数据库_云+校园特惠套餐

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…

论文里点击如图?-?如何跳转到图片的题注

写论文&#xff0c;如何点击如图?-?然后光标自己能跳转到指定图片的题注之前呢&#xff1f; 首先&#xff0c;你要确定自己已经列好了标题&#xff0c;如几点几&#xff0c;几点几&#xff0c;比如我写到第三个章节的标题为 3.2 XXXXXXXXX 那么接下来后面的操作会出现图3-&…

Python中学习调试requests模块时出现的大坑(1)

为防止迷路: 学习机械相关,请关注公众号:南大盛联 学习软件,硬件,请关注公众号号:一训微课 cmd模式下 不知道上面这行的话,需要补课。 pip install requests 这个不知道的话,也要补课 pip是python的安装工具。 install是安装的意思 requests是我们需要安装的模…

腾讯云优惠券领取入口_先领取再下单_2024腾讯云优惠攻略

腾讯云优惠代金券领取入口共三个渠道&#xff0c;腾讯云新用户和老用户均可领取8888元代金券&#xff0c;可用于云服务器等产品购买、续费和升级使用&#xff0c;阿腾云atengyun.com整理腾讯云优惠券&#xff08;代金券&#xff09;领取入口、代金券查询、优惠券兑换码使用方法…

【C++庖丁解牛】类与对象

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.面向过程和面向对象…

AJAX 学习笔记(Day1)

「写在前面」 本文为黑马程序员 AJAX 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。 目录 0 课程介绍 1 AJAX 入门 1.1 AJAX 概念和 axios 使用 1.2 认识 URL 1.3 URL 查询参数 1.4 常用请求方法和数据提交 1.5 HT…

arduino uno R3驱动直流减速电机(蓝牙控制)

此篇博客用于记录使用arduino驱动直流减速电机的过程&#xff0c;仅实现简单的功能&#xff1a;PID调速、蓝牙控制 1、直流减速电机简介2、DRV8833电机驱动模块简介3、HC-05蓝牙模块简介电机转动测试4、PID控制5、蓝牙控制电机 1、直流减速电机简介 我在淘宝购买的电机&#x…

VMware安装Centos7详细过程

1.硬件软件准备 软件&#xff1a;VMware16 硬件&#xff1a;因为是在宿主机上运行虚拟化软件安装centos&#xff0c;所以对宿主机的配置有一定的要求。最起码I5CPU双核、硬盘500G、内存4G以上。 镜像&#xff1a;centos7,镜像下载地址centos安装包下载_开源镜像站-阿里云 2…

华为数通方向HCIP-DataCom H12-821题库(多选题:21-40)

第21题 管理员在配置 VRRP 时,下面哪些不是必须配置的? A.抢占模式 B.抢占延时 C.虚拟IP 地址 D.虚拟路由器的优先级 【参考答案】ABD 【答案解析】 VRRP的作用之一是提供一个虚拟的IP地址,用作默认网关,用来实现冗余和故障转移。因此,配置虚拟IP地址是必须的。华为设备vr…

力扣1892 页面推荐Ⅱ

力扣1892&#xff0c;页面推荐Ⅱ&#xff0c;为一个社交媒体网站实施一个页面推荐系统。如果页面被user_id的 至少一个朋友喜欢 &#xff0c;而 不被user_id喜欢 &#xff0c;你的系统将 推荐 一个页面到user_id。 目录 题目描述 解题思路 完整代码 优化 题目描述 表&…

hcip交换

交换机功能 无限的传输距离——识别&#xff0c;重写电信号&#xff08;帧&#xff09;保证信息完整彻底解决了冲突二层单播——MAC地址表提高端口密度 单播地址&#xff1a;MAC地址第一个字节第8位为0 组播地址&#xff1a;MAC地址第一个字节第8位为1 广播地址&#xff1a;全1…

什么是BGP网络 (边界网关协议)

BGP&#xff08;边界网关协议&#xff09;是一种用于在互联网中交换路由信息的协议。作为网关或路由器之间的协议&#xff0c;BGP主要用于帮助确定数据包在网络中的路径。它通过在不同自治系统&#xff08;AS&#xff09;之间交换路径信息&#xff0c;实现了全球互联网网络的连…

pyorbbecsdk奥比中光python版本SDK在Windows下环境配置笔记

1、概述 Orbbec SDK Python Wrapper基于Orbbec SDK进行设计封装&#xff0c;主要实现数据流接收&#xff0c;设备指令控制。 2、系统要求 2.1、操作系统 Windows&#xff1a;Windows 10 (x64)&#xff08;本文 针对windows&#xff09;Linux: 18.04/20.04/22.04 (x64)Arm32:…

P10166 [DTCPC 2024] 环

解题思路 满足的序列即为环若图上有环&#xff0c;则代价为0若无环&#xff0c;则在图上已有的边在添加一条回边可形成环对所有的点由小到大排序由于环的大小可以为2初值设为&#xff0c;先不管最小点之间是否有边&#xff0c;反正不会更劣通过拓扑排序找环&#xff0c;在找环…

Vue3+vite打包后页面空白问题

vite.config.js vite.config.js 增加 base: ./ import { fileURLToPath, URL } from node:url import { defineConfig } from vite import vue from vitejs/plugin-vue// https://vitejs.dev/config/ export default defineConfig({base: ./,resolve: {alias: {: fileURLToPath…

Mysql学习之各种锁

锁 事务的隔离性由锁来实现 MySQL并发事务访问相同记录 并发事务访问相同记录的情况大致可以分为3种&#xff1a; 读-读的情况 读-读情况&#xff0c;即并发事务相继读取相同的记录。读取操作本身不会对记录由有任何的影响&#xff0c;并不会引起什么问题&#xff0c;所以允许…

git代码上库流程(一篇就够了)

文章目录 一、前言二、创建新分支三、修改代码四、合并分支 一、前言 多人协同开发一个项目&#xff0c;为了方便管理代码&#xff0c;每个人代码提交不冲突。git代码仓库管理是不可或缺的。对于新手来说&#xff0c;既不懂git原理又不懂底层逻辑&#xff0c;还经常错误提交代码…

10s用递归实现反转链表(JAVA)

目录 1. 原理 1.1 问题 1.2 解决 1.3 终点 2.代码操作及讲解 2.1 演示代码 2.2 讲解 1. 原理 反转 A->B->C 1.1 问题 当反转A->B的链接时&#xff0c;当B改成指向A&#xff08;B->A&#xff09;, 就找不到C了&#xff1b; 1.2 解决 所以需要一个变量临时…

uniapp_小程序选项卡(直接下载安装即可)

选项卡 - DCloud 插件市场 也可加一行变成三栏