【23级红细胞招新模拟训练(部分题解 不包含最后三题】

news2024/11/17 17:50:06

前言

提前说明 : 本人是蒟蒻 题解基本没考虑过优化 只求通过
写这篇题解仅仅是分享一下我的做法
使用的语言:cpp

6-1

题目

请编写函数,对三个整数按升序排序。

函数原型 void IntSortAsc3(int *x, int *y, int *z); 

说明:参数 x、y 和 z
为指示三个整型变量的指针,函数值对这三个整型变量进行排序,使 x、y 和 z 所指变量的值按由小到大的顺序排列。

裁判程序
#include <stdio.h>

void IntSwap(int *x, int *y); void IntSortAsc3(int *x, int *y, int
*z);

int main() {
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    IntSortAsc3(&a, &b, &c);
    printf("%d %d %d\n", a, b, c);
    return 0; }

void IntSwap(int *x, int *y) {
    ...()... }

/* 你提交的代码将被嵌在这里 */

输入样例
15 -27 36

输出样例
-27 15 36

要求:调用前面作业中的 IntSwap 函数交换两个整数的值。

知识点

基础语法:指针的使用
使用语言:C语言

参考代码

void IntSortAsc3(int* x, int* y, int* z) 
{
	if (*x > *y)
	{
		IntSwap(x, y);
	}
	if (*y > *z)
	{
		IntSwap(y, z);
	}
	if (*x > *y)
	{
		IntSwap(x, y);
	}
}

代码解析

通过三个if语句判断一下大小关系

通过画图我们可以理解
前两个if语句已经比较了(x, y)(y, z)这两组
最后直接比较x和y即可

下面给出一个例子
在这里插入图片描述

个人做题过程

一开始第三个if语句我写的是

if (*x > *z)

发现不对 画个图就理解了

以及 完全没看到题目中的要求 写半天发现没分

7-1在这里插入图片描述

不想写了 直接上代码

#include<iostream>

using namespace std;

int main()
{
	cout << "                ********" << endl;
	cout << "               ************" << endl;
	cout << "               ####....#." << endl;
	cout << "             #..###.....##...." << endl;
	cout << "             ###.......######              ###            ###" << endl;
	cout << "                ...........               #...#          #...#" << endl;
	cout << "               ##*#######                 #.#.#          #.#.#" << endl;
	cout << "            ####*******######             #.#.#          #.#.#" << endl;
	cout << "           ...#***.****.*###....          #...#          #...#" << endl;
	cout << "           ....**********##.....           ###            ###" << endl;
	cout << "           ....****    *****...." << endl;
	cout << "             ####        ####" << endl;
	cout << "           ######        ######";

	return 0;
}

7-2

题目

请输出一个三角形,每行由字符串“tnzenb”循环组成

输入格式:
一个整数N

输出格式:
N行字符,即一个三角形,注意不要输出多余的空格和换行。

输入样例:
在这里给出一组输入。 例如:

3
输出样例:
在这里给出相应的输出。例如:

t tnz tnzen

知识点

字符串 + 循环

参考代码


#include<iostream>

using namespace std;

int main()
{
	int n;
	cin >> n;
	string arr = "tnzenb";
	for (int i = 1; i <= n; i++)
		//行数
	{
		for (int j = 1; j <= n - i; j++)
			//打印空格
		{
			cout << " ";
		}

		for (int k = 0; k < 2 * i - 1; k++)
		{
			cout << arr[k % 6];
		}
		cout << endl;
	}

	return 0;
}

代码解析

这题打印出金字塔型很容易也就是打印出字母前面的空格 通过i和j之间的关系就可以做到

每行字母的个数是等差数列

需要注意的是字母的循环打印
我们注意到:字符串的内容是固定的 且每行都是从t(即第一个字符)开始打印
那么, 我们就可以通过对k的判断 直接输出字母

个人做题过程

复盘的时候 我看自己的代码怎么看怎么觉得不对劲

下面也让大家难受一下

			if (k % 6 != 0)
			{
				cout << arr[k % 6];
			}
			else
			{
				cout << "t";
			}

7-3

知识点

循环 + 判断语句

参考代码

 #include<iostream>

using namespace std;

int main()
{
	int t, num = 0;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		int m;
		cin >> m;
		num = 0;
		for (int x = 0; x < m; x++)
		{
			int a, b;
			cin >> a >> b;
			if (a > b)
			{
				num += 3;
			}
			else
			{
				num += 1;
			}
		}
		cout << num << endl;
	}
	return 0;
}

代码解析

因为两人的成绩作比较只可能有两种情况
所以 通过if else语句可做出这道题

个人做题过程

没卡 所以没得写

7-4

题目

知识点

循环 + 判断语句 + 控制输出

setw fixed 和setprecision语句

同学们或多或少的接触过fixed和setprecision语句
fixed语句是按照小数的形式输出变量
setprecision语句是用于控制输出的位数(精度)
setw语句用于控制输出的长度(宽度)

下面给出两个例子

#include <iostream>  
#include <iomanip>  
  
int main() {  
    double pi = 3.141592653589793;  
    std::cout << std::setprecision(3) << pi << std::endl;  // 输出 3.142  
    return 0;  
}
#include <iostream>  
#include <iomanip>  
  
int main() {  
    int x = 123;  
    std::cout << std::setw(10) << x << std::endl;  
    return 0;  
}

//使用setw语句 也就是我们常说的右对齐

参考代码

#include <iostream>
#include <iomanip> 

using namespace std;

int main() {
	int a, b;
	cin >> a >> b;

	int sum = 0;
	int cnt = 0;

	for (int num = a; num <= b; num++) 
	{
		cout << setw(5) << num; 
		sum += num;
		cnt++;

		if (cnt % 5 == 0) 
		{
			cout << endl;
		}
	}

	if (cnt % 5 != 0) 
	{
		cout << endl;
	}

	cout << "Sum = " << sum << endl;

	return 0;
}

代码解析

个人做题过程

我一开始用空格做题 发现判断起来比较麻烦
就用了setw语句
(还挺好用的

7-5

知识点

循环语句

参考代码

 #include<iostream>

using namespace std;

int main()
{
	int n;
	cin >> n;
	for (int i = 1; i < n; i++)
	{
		for (int j = 1; j < n; j++)
		{
			for (int k = 1; k <= n; k++)
			{
				if (i * i + j * j == k * k)
				{
					cout << "(" << i << ", " << j << ", " << k << ")" << endl;
				}
			}
		}
	}

	return 0;
}

代码解析

这道题根据题目提示 并且通过测试用例可以看出是升序输出
所以 直接用三个for循环遍历一下就行了

个人做题过程

我一开始比较叛逆 不想按照题目提示来做 然后没想出来其他的方法
就莽了一下

7-6

知识点

结构体 + 循环语句 + 输出语句 + 判断语句

参考代码

#include <iostream>
#include <iomanip>

using namespace std;

struct CAT 
{
    string name;
    double lw, hw, cw, ck;
    //分别对应着 最低体重 最高体重 
    //         推荐体重 推荐摄入的卡路里
} cat[9010];

int main() 
{
    int n, k;
    cin >> n >> k;
    string nname;
    double w;

    for (int i = 0; i < k; i++)
    {
        cin >> cat[i].name >> cat[i].lw >> cat[i].hw >> cat[i].cw;
        cat[i].ck = cat[i].cw * 13.6 + 70;
    }

    cout << fixed << setprecision(1);

    for (int i = 0; i < n; i++) 
    {
        cin >> nname >> w;

        for (int j = 0; j < k; j++) 
        {
            if (cat[j].name == nname) 
            {

                if (w > cat[j].hw) 
                {
                    cout << "overweight " << cat[j].ck << endl;
                } 
                else if (w < cat[j].lw) 
                {
                    cout << "underweight " << cat[j].ck << endl;
                } 
                else 
                {
                    cout << "OK " << cat[j].ck << endl;
                }

                break;
            }
        }

    }

    return 0;
}

代码解析

创建结构体数组存储每种类型的猫

一只一只的输入 边输入边判断 然后遍历结构体数组 找到对应的品种

然后用if else语句判断一下就行了 判断完跳出循环

个人做题过程

这题 也还好吧 没啥卡人的地方 一步一步做就行了

7-7

知识点

数组 + 数学 + 循环

参考代码

#include <iostream>
#include <iomanip> 

using namespace std;

int main() {
    int n;
    cin >> n;

    int arr[100][100]; // 定义一个二维数组用于存储结果

    int num = 1; // 初始化数字
    int a = 0; // 行的起始位置
    int b = 0; // 列的起始位置
    int a1 = n - 1; // 行的结束位置
    int b1 = n - 1; // 列的结束位置

    while (num <= n * n) 
    {
        // 从左到右填充数字
        for (int i = b; i <= b1; i++) 
        {
            arr[a][i] = num++;
        }
        a++;

        // 从上到下填充数字
        for (int i = a; i <= a1; i++) 
        {
            arr[i][b1] = num++;
        }
        b1--;

        // 从右到左填充数字
        for (int i = b1; i >= b; i--) 
        {
            arr[a1][i] = num++;
        }
        a1--;

        // 从下到上填充数字
        for (int i = a1; i >= a; i--) 
        {
            arr[i][b] = num++;
        }
        b++;
    }

    // 输出结果
    for (int i = 0; i < n; i++) 
    {
        for (int j = 0; j < n; j++) 
        {
            cout << setw(3) << arr[i][j]; // 使用 setw() 函数设置输出宽度为 3
        }
        cout << endl;
    }

    return 0;
}

代码解析

我们通过分析测试用例很容易发现这道题的数字排列方式类似一个回型
就可以通过四个边界值 (a 、 b 、a1、 b1)来分别控制每行和每列的输入
这样就不用考虑数字(即num)之间的关系 直接让他一直自增即可

可以看给出的注释
打印完第一行 打印最后一列
打印最后一行 打印第一列
然后这个范围逐渐缩小 直到num达到n * n
赋值完成

个人做题过程

这题很有意思啊 又是我最喜欢(头痛)的数学问题
刚开始看到的时候 我想找一下数学规律 想了几分钟 找不出来 就摁做 一圈一圈的赋值 最后再一行一行的输出
(不喜欢找规律的题

个人感想(前八道题)

不难啊 我只能说 前八道都是通过莽(跟着题目一步一步走)就能做出来的 并且花费的时间也不会很长

至于最后三道题 没做 不做评价(呜呜呜呜呜呜 我是蒟蒻

当然 有其他的思路或者做法大家可以发在评论区或者写一篇博客 多多交流 一起进步

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

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

相关文章

【鸿蒙软件开发】文本输入(TextInput/TextArea)

文章目录 前言一、输入框1.1 创建输入框单行输入框多行输入框单行和多行输入框的区别 1.2 设置输入框的类型有哪些类型基本输入模式&#xff08;默认类型&#xff09;密码输入模式 1.3 自定义样式设置无输入时的提示文本设置输入框当前的文本内容。添加backgroundColor改变输入…

基于减法平均优化的BP神经网络(分类应用) - 附代码

基于减法平均优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于减法平均优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.减法平均优化BP神经网络3.1 BP神经网络参数设置3.2 减法平均算法应用 4.测试结果…

二叉树的各类实现判断

如何判断一颗二叉树是否是搜索二叉树&#xff1f; 搜索二叉树 每个子树头节点的左孩子比它小&#xff0c;右孩子比它大 经典的搜索二叉树没有重复的数 判断 将二叉树按照中序遍历&#xff0c;判断是否为升序 1、先将整棵树中序遍历再判断是否升序 //中序遍历public stat…

【STL】priority_queue(优先级队列)详解及仿函数使用(附完整源码)

目录 1. priority_queue介绍和使用1.1 priority_queue介绍1.2 priority_queue使用 2. 仿函数介绍3. priority_queue模拟实现 1. priority_queue介绍和使用 1.1 priority_queue介绍 优先级队列也是在<queue>里&#xff1a; 因此和queue一样&#xff0c;priority_queue也…

java头歌-java中的异常

文章目录 第一关第二关第三关第四关 第一关 第二关 题目要求&#xff1a; public static void main(String[] args) {Scanner sc new Scanner(System.in);try {int num1 sc.nextInt();int num2 sc.nextInt();/********* Begin *********/System.out.println(num1/num2);}…

基于stm32控制的4G模块在设备模式下通讯

这里的32控制其实和51的控制思路都是一样的&#xff0c;都是先利用一个网络助手将家里的无线网生成局域网&#xff0c;接着通过花生壳软件将局域网变成公共网&#xff0c;最后是利用串口助手&#xff0c;在4G模块的AT指令模式写入命令ATSOCKTCPC,公共网IP地址,公共网端口号&…

对话销售易CEO史彦泽:中国SaaS企业,利润和现金流从何而来?

导读&#xff1a;SaaS企业如何快速转身&#xff0c;活下来 “华为应改变思路和经营方针&#xff0c;从追求规模转向追求利润和现金流&#xff0c;保证渡过未来三年的危机。把活下来作为最主要纲领&#xff0c;边缘业务全线收缩和关闭&#xff0c;把寒气传递给每个人。” 2022年…

Pinia入门

1. 什么是Pinia Pinia 是 Vue 的专属的最新状态管理库 &#xff0c;是 Vuex 状态管理工具的替代品 2. 手动添加Pinia到Vue项目 后面在实际开发Vue医疗项目的时候&#xff0c;Pinia可以在项目创建时自动添加&#xff0c;现在我们初次学习&#xff0c;从零开始&#xff1a; …

Object.getPrototypeOf()

1、作用 获取指定对象的原型&#xff08;内部​​[[Prototype]]​​属性的值&#xff09;&#xff0c;如果没有继承属性&#xff0c;则返回 null function Animal() {}var ani new Animal();console.log(ani);console.log(Object.getPrototypeOf(ani));2、注意 在 ES5 中&a…

Http长连接同一个socket多个请求和响应如何保证一一对应?

HTTP/2引入二进制数据帧和流的概念&#xff0c;其中帧对数据进行顺序标识&#xff0c;如下图所示&#xff0c;这样浏览器收到数据之后&#xff0c;就可以按照序列对数据进行合并&#xff0c;而不会出现合并后数据错乱的情况。同样是因为有了序列&#xff0c;服务器就可以并行的…

视频去噪网络BSVD的实现

前些天写了视频去噪网络BSVD论文的理解&#xff0c;详情请点击这里&#xff0c;这两个星期动手实践了一下&#xff0c;本篇就来记录一下这个模型的实现。 这个网络的独特之处在于&#xff0c;它的训练和推理在实现上有所差别。在训练阶段&#xff0c;其使用了TSM&#xff08;T…

中国象棋棋盘识别

当象棋爱好者在挑战中国象棋残局或者在阅读象棋杀法书籍的时候遇到问题&#xff0c;往往需要通过象棋软件来辅助提示&#xff0c;此时要将该棋局在象棋软件中摆好&#xff0c;软件才能进行分析&#xff0c;为实现自动识别棋局图片&#xff0c;并导出为标准化FEN象棋文件格式&am…

Lec08 Page faults笔记总结

当一个用户应用程序触发了page fault&#xff0c;page fault会使用与Robert教授上节课介绍的相同的trap机制&#xff0c;将程序运行切换到内核&#xff0c;同时也会将出错的地址存放在STVAL寄存器中。 在SCAUSE&#xff08;注&#xff0c;Supervisor cause寄存器&#xff0c;保…

MyBatis-Plus实现逻辑删除[MyBatis-Plus系列] - 492篇

历史文章&#xff08;文章累计490&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 M…

[Spring] SpringBoot2 简介(二)—— 高级配置

目录 一、Conditional 注解 1、SpringBoot 如何获取 Bean 对象 2、SpringBoot 创建 Condition 类 3、切换内置 web 服务器 二、EnableXXX 注解 1、SpringBoot 不能直接获取其他 jar 包/工程中的 Bean 2、原因分析 3、封装 Import 4、Import 注解 5、SpringBoot 自动配…

前端领域的插件式设计

插件&#xff0c;是一个常见的概念。 例如&#xff0c;当我们需要把我们前端代码中的 css 样式提取打包&#xff0c;我们可以用 webpack 的 mini-css-extract-plugin&#xff0c;或者你如果用 rollup 的话&#xff0c;可以选择 rollup-plugin-postcss。 再比如我们可以给 bab…

Python 数组和列表:创建、访问、添加和删除数组元素

Python 没有内置支持数组&#xff0c;但可以使用 Python 列表来代替。 数组 本页将向您展示如何使用列表作为数组&#xff0c;但要在 Python 中使用数组&#xff0c;您需要导入一个库&#xff0c;比如 NumPy 库。数组用于在一个变量中存储多个值&#xff1a; 示例&#xff0…

VSCode 开发 Vue 语法提示

一. 打开应用商店&#xff0c;搜索 vetur &#xff0c;选择第一个&#xff0c;点击安装。 二. 安装完成后&#xff0c;还可以下载 Vue Language Features 解决代码警告的问题。 最后重启 VSCode 就可以使用啦。另外输入 按回车键还可以自动生成 vue 代码格式哦。 原创作者&…

GPT-3 内幕机制可视化解析

GPT-3 内幕机制可视化解析 GPT-3是一个基于Transformer的语言模型,通过不同的层次提取语言不同层面的特性,构建整个语言的语义信息,它学习的过程跟人类正常学习的过程是类似的,开始的时候是一个无监督预训练,如图5-5所示,GPT-3模型可以将网络上的所有文档下载下来,包含 …