MT1401-MT1410 码题集 (c 语言详解)
目录
MT1401·归并排序
MT1402·堆排序
MT1403·后3位排序
MT1404·小大大小排序
MT1405·小大大小排序II
MT1406·数字重排
MT1407·插入
MT1408·插入
MT1409·旋转数组
MT1410·逆时针旋转数组
MT1401·归并排序

c 语言实现代码
#include <stdio.h>// merge two subarrays
void merge(int arr[], int left, int mid, int right) {int i, j, k;int n1 = mid - left + 1; // left sonArrayint n2 = right - mid; // right sonArray// create new arrayint L[n1], R[n2];for (i = 0; i < n1; i++) {L[i] = arr[left + i];}for (j = 0; j < n2; j++) {R[j] = arr[mid + 1 + j];}i = 0;j = 0;k = left;while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k] = L[i];i++;} else {arr[k] = R[j];j++;}k++;}while (i < n1) {arr[k] = L[i];i++;k++;}while (j < n2) {arr[k] = R[j];j++;k++;}
}void mergeSort(int arr[], int left, int right) {if (left < right) {int mid = left + (right - left) / 2;mergeSort(arr, left, mid);mergeSort(arr, mid + 1, right);merge(arr, left, mid, right);}
}int main() {int arr[10];for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}mergeSort(arr, 0, 10 - 1);for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;
}
MT1402·堆排序
c 语言实现代码
#include <stdio.h>// swap two element vlaue
void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}void heapify(int arr[], int n, int i) {int largest = i; // root 节点int left = 2 * i + 1; // 左子节点int right = 2 * i + 2; // 右子节点if (left < n && arr[left] > arr[largest]) {largest = left;}if (right < n && arr[right] > arr[largest]) {largest = right;}if (largest != i) {swap(&arr[i], &arr[largest]);heapify(arr, n, largest);}
}void heapSort(int arr[], int n) {for (int i = n / 2 - 1; i >= 0; i--) {heapify(arr, n, i);}for (int i = n - 1; i >= 0; i--) {swap(&arr[0], &arr[i]);heapify(arr, i, 0);}
}int main() {int arr[10];for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}heapSort(arr, 10);for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;
}
MT1403·后3位排序
c 语言代码实现
#include <stdio.h>
#include <stdlib.h>
#define N 10int compare(const void *a, const void *b) {int num1 = *(int *)a;int num2 = *(int *)b;int last_1 = num1 % 1000;int last_2 = num2 % 1000;if (last_1 != last_2) {return last_1 - last_2;} else {return num2 - num1;}
}int main() {int numbers[N];for (int i = 0; i < N; i++) {scanf("%d", &numbers[i]);}qsort(numbers, N, sizeof(10), compare);for (int i = 0; i < N; i++) {printf("%d ", numbers[i]);}return 0;
}
MT1404·小大大小排序

c 语言代码实现
#include <stdio.h>
#include <stdlib.h>#define SIZE 10// 升序排序的比较函数
int ascending(const void *a, const void *b) { return (*(int *)a - *(int *)b); }// 反转函数 用于将下标N到M的元素反转
void reverse(int arr[], int start, int end) {while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}
}int main() {int arr[SIZE];int N, M;for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}scanf("%d %d", &N, &M);// 对整个数组进行升序排序qsort(arr, SIZE, sizeof(int), ascending);// 反转下标 N 到 M 的部分reverse(arr, N, M);for (int i = 0; i < SIZE; i++) {printf("%d ", arr[i]);}return 0;
}
MT1405·小大大小排序II

c 语言代码实现
#include <stdio.h>
#include <stdlib.h>#define SIZE 10// 升序排序的比较函数
int ascending(const void *a, const void *b) { return (*(int *)a - *(int *)b); }// 反转函数 用于将下标N到M的元素反转
void reverse(int arr[], int start, int end) {while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}
}int main() {int arr[SIZE];int N;for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}scanf("%d", &N);// 对整个数组进行升序排序qsort(arr, SIZE, sizeof(int), ascending);// 反转下标 N 到 M 的部分reverse(arr, N, SIZE - 1);for (int i = 0; i < SIZE; i++) {printf("%d ", arr[i]);}return 0;
}
MT1406·数字重排

这道题 c 案例一直出问题 有解决的可以在评论区d我
c 语言实现
#include <stdio.h>
#include <stdbool.h>// 去重函数:从数组a中去重,结果存入数组b,返回去重后的长度
int del(int a[], int b[], int n) {int c = 0;for (int i = 0; i < n; i++) {bool flag = true;for (int j = 0; j < c; j++) {if (a[i] == b[j]) { // 如果a[i]已在b中,设置标志为falseflag = false;break;}}if (flag) { // 如果a[i]不在b中,加入bb[c++] = a[i];}}return c;
}// 排序函数
void sort(int arr[], int len) {for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int main() {int a, b, c, len = 0;// 输入三个数字scanf("%d %d %d", &a, &b, &c);int A[6], B[6];A[len++] = a * 100 + b * 10 + c;A[len++] = a * 100 + c * 10 + b;A[len++] = b * 100 + a * 10 + c;A[len++] = b * 100 + c * 10 + a;A[len++] = c * 100 + a * 10 + b;A[len++] = c * 100 + b * 10 + a;// 去重int newLen = del(A, B, len);// 排序sort(B, newLen);// 输出结果for (int i = 0; i < newLen; i++) {printf("%d\n", B[i]);}return 0;
}
MT1407·插入

c 语言实现代码
#include <stdio.h>
#define SIZE 10void sort(int arr[], int len) {for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}int insertPoistion(int arr[], int len, int n) {int left = 0;int right = len - 1;while (left <= right) {int mid = (left + right) / 2;if (arr[mid] < n) {left = mid + 1;} else {right = mid - 1;}}return left;
}int main() {int arr[SIZE + 1], n;for (int i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}scanf("%d", &n);sort(arr, SIZE);int pos = insertPoistion(arr, SIZE, n);for (int i = SIZE; i > pos; i--) {arr[i] = arr[i - 1];}arr[pos] = n;for (int i = 0; i <= SIZE; i++) {printf("%d ", arr[i]);}return 0;
}
MT1408·插入

c 语言代码实现
#include <stdio.h>int insertPosition(int arr[], int len, int n) {int left = 0;int right = len - 1;while (left <= right) {int mid = (left + right) / 2;if (arr[mid] < n) {left = mid + 1;} else {right = mid - 1;}}return left;
}int main() {int N;int array[N + 1];int insertNumber;scanf("%d", &N);for (int i = 0; i < N; i++) {scanf("%d", &array[i]);}scanf("%d", &insertNumber);int pos = insertPosition(array, N, insertNumber);for (int i = N; i > pos; i--) {array[i] = array[i - 1];}array[pos] = insertNumber;for (int i = 0; i < N + 1; i++) {printf("%d ", array[i]);}return 0;
}
MT1409·旋转数组
c 语言代码实现
#include <stdio.h>void rotate_array(int arr[], int length, int n) {// 处理 N 的值,确保在有效范围内n = n % length; // 处理 N 大于数组长度的情况if (n < 0) {n += length; // 将负数旋转转换为正数旋转}// 创建一个临时数组来存储旋转后的结果int temp[length];// 进行旋转for (int i = 0; i < length; i++) {temp[(i + n) % length] = arr[i];}// 将结果复制回原数组for (int i = 0; i < length; i++) {arr[i] = temp[i];}
}int main() {int arr[10];int n;// 输入整型元素for (int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}// 输入旋转次数 Nscanf("%d", &n);// 旋转数组rotate_array(arr, 10, n);// 输出结果for (int i = 0; i < 10; i++) {printf("%d", arr[i]);if (i < 9) {printf(" "); // 输出空格分隔}}printf("\n");return 0;
}
MT1410·逆时针旋转数组

c 语言实现代码
#include <stdio.h>void rotateArrayCounterClockwise(int array[], int N, int M) {M = M % N; // 计算有效的旋转次数int result[N];// 将前 M 个元素放在新数组的末尾for (int i = 0; i < N - M; i++) {result[i] = array[M + i];}// 将前 M 个元素移动到新数组的开头for (int i = 0; i < M; i++) {result[N - M + i] = array[i];}// 将新数组的内容复制到原数组for (int i = 0; i < N; i++) {array[i] = result[i];}
}int main() {int N, M;scanf("%d %d", &N, &M);int array[N];for (int i = 0; i < N; i++) {scanf("%d", &array[i]);}rotateArrayCounterClockwise(array, N, M);for (int i = 0; i < N; i++) {printf("%d ",array[i]);}return 0;
}相关文章:
MT1401-MT1410 码题集 (c 语言详解)
目录 MT1401归并排序 MT1402堆排序 MT1403后3位排序 MT1404小大大小排序 MT1405小大大小排序II MT1406数字重排 MT1407插入 MT1408插入 MT1409旋转数组 MT1410逆时针旋转数组 MT1401归并排序 c 语言实现代码 #include <stdio.h>// merge two subarrays void merge(int a…...
React基础语法
1.React介绍 React由Meta公司开发,是一个用于构建Web和原生交互界面的库 1.1 React优势 相较于传统基于DOM开发的优势 1.组件化的开发方式 2.不错的性能 相较于其他前端框架的优势 1.丰富的生态 2.跨平台支持 1.2React的时长情况 全球最流行,大厂…...
《Kadane‘s Algorithm专题:最大和连续子数组》
🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷…...
Vue基础(5)
ref属性 在 Vue2 中,ref是一个特殊的属性,用于在模板中获取对某个 DOM 元素或子组件的引用。通过 ref,我们可以在 JavaScript 代码中直接访问该 DOM 元素或组件实例。 示例: <template><div><input ref"inputField&quo…...
面对复杂的软件需求:5大关键策略!
面对软件需求来源和场景的复杂性,有效地管理和处理需求资料是确保项目成功的关键,能够提高需求理解的准确性,增强团队协作和沟通,降低项目风险,提高开发效率。反之,项目可能面临需求理解不准确、团队沟通不…...
使用Git进行版本控制的最佳实践
文章目录 Git简介基本概念仓库(Repository)提交(Commit)分支(Branching) 常用命令初始化仓库添加文件提交修改查看状态克隆仓库分支操作合并分支推送更改 最佳实践使用有意义的提交信息定期推送至远程仓库使…...
【入门1】顺序结构 - B2025 输出字符菱形
题目描述 用 * 构造一个对角线长 55 个字符,倾斜放置的菱形。 输入格式 没有输入要求。 输出格式 如样例所示。用 * 构成的菱形。 输入输出样例 输入 #1 输出 #1**** ********* <C> : #include<stdio.h>int main() {printf(" *\n ***\n**…...
C#DLL热加载|动态替换
我有一个项目 开始取数据和结束数据部分是一样的,但中间处理数据是根据客户需求来转换的 又要求增加一个客户数据转换 主程序是不能停下来的 所以这个项目转数据转换部分做成插件式 每个客户的数据转换都是一个项目 都是一个DLL 主程序里面定义好接口类或者抽象…...
数据库三大范式
目录 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) Oracle三大范式是数据库设计中的规范化过程,旨在减少数据冗余、提高数据一致性和数据库性能。这三大范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 第一范式(1NF) 数据库表的每一列都是不可分割…...
【linux】fdisk磁盘分区管理
介绍 fdisk是一个磁盘分区管理工具,可以用来创建、删除、修改和查看磁盘分区。 fdisk一般都是交互式使用,基础语法: fdisk /dev/sdd。进入交互窗口后,有一些选项,需要了解下: 选项含义n创建新分区p查看磁盘的分区情…...
asp.net core 入口 验证token,但有的接口要跳过验证
asp.net core 入口 验证token,但有的接口要跳过验证 在ASP.NET Core中,你可以使用中间件来验证token,并为特定的接口创建一个属性来标记是否跳过验证。以下是一个简化的例子: 创建一个自定义属性来标记是否跳过验证: public clas…...
[mysql]聚合函数GROUP BY和HAVING的使用和sql查询语句的底层执行逻辑
#GROUP BY的使用 还是先从需求出发,我们现在想求员工表里各个部门的平均工资,最高工资 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id 我们就会知道它会把一样的id分组,没有部门的就会分为一组,我们也可以用其他字段来分组,我们想查询不同jb_id…...
从数据中台到数据飞轮:实现数据驱动的升级之路
从数据中台到数据飞轮:实现数据驱动的升级之路 随着数字化转型的推进,数据已经成为企业最重要的资产之一,企业普遍搭建了数据中台,用于整合、管理和共享数据;然而,近年来,数据中台的风潮逐渐减退…...
小记:SpringBoot中,@Alisa和@ApiModelProperty的区别
在 Spring Boot 中,Alias和ApiModelProperty 这两个注解用于不同的目的。 Alias Alias是一个用于定义别名的注解,通常用于 Bean 属性的别名功能,这样在使用某些框架(如 JPA 或 Jackson)时,可以将一个属性名…...
信捷 PLC C语言 定时器在FC中的使用
传统梯形图的定时器程序写起来简单,本文用C语言写定时器的使用。 定时器在c语言中使用,和普通梯形图中使用的区别之一是既有外部条件,也有内部条件。 1.建全局变量 2.建立FC POU 这个是功能POU程序。 这里的Enable是内部条件 3.调用包含定…...
k8s常用对象简介
Pod Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod 是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度&…...
【Kaggle | Pandas】练习2:索引,选择和分配
文章目录 数据总表1、读取列2、读取某列的第几行的值3、第一行数据4、读取列中前10个值5、读取索引标签为1 、 2 、 3 、 5和8的记录6、包含索引标签为0 、1 、10和100的记录的country 、province 、 region_1和region_2列7、 前 100 条记录的country和variety列8、包含Italy葡…...
【flask】 flask redis的使用
目的:如何使用在flask web项目中连接redis,并简单的使用 使用的库包:flask-redis pip install falsk-redis下面的写法是对项目代码进行模块化拆分的写法,在app.py中只进行对象的初始化等操作;exts.py中创建对象&…...
【Unity基础】Unity中的特殊文件夹详解
在Unity项目中,通常可以根据需要创建任意名称的文件夹来组织项目内容,但有一些特定的文件夹名称会触发Unity对其中资源和脚本的特殊处理。这篇文章将详细介绍这些特殊文件夹,帮助开发者在项目中合理地使用它们。 1. Assets 文件夹 Assets文…...
矩阵蠕虫,陈欣出品
第一章 陈欣是一名资深的软件工程师,专门从事分布式系统和人工智能的研究。她的最新项目叫做“MatrixWorm”,目标是创建一个简单而强大的远程控制系统。在这个系统中,控制端可以通过文字命令,让被控制端利用大语言模型的能力来理…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
