【PTA|期末复习|编程题】数组相关编程题(二)

目录

7-1 数组元素循环右移问题(20分)

输入格式:

输出格式:

输入样例:

输出样例:

代码

7-2 找出不是两个数组共有的元素(20分)

输入格式:

输出格式:

输入样例:

输出样例:

代码

7-3 方阵循环右移(20分)

输入格式:

输出格式:

输入样例:

输出样例:

代码

7-4 求一批整数中出现最多的个位数字(20分)

输入格式:

输出格式:

输入样例:

输出样例:

7-5 判断上三角矩阵(15分)

输入格式:

输出格式:

输入样例:

输出样例:

代码

7-6 数字加密(15分)

输入格式:

输出格式:

输入样例:

输出样例:

代码

7-7 求矩阵的局部极大值(15分)

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

代码

7-8 组个最小数(20分)

输入格式:

输出格式:

输入样例:

输出样例:

代码


7-1 数组元素循环右移问题(20分)

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0​A1​⋯AN−1​)变换为(AN−M​⋯AN−1​A0​A1​⋯AN−M−1​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。

输出格式:

在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

6 2
1 2 3 4 5 6

输出样例:

5 6 1 2 3 4

编译器:GCC

代码

#include <stdio.h>
int main()
{int n = 0;//存储待接收的整数序列的元素个数int m = 0;//存储右移的步数int arr[100] = { 0 };//存储待接收的整数序列int i = 0;//循环变量int j = 0;//循环变量,表示循环中已经右移的步数int temp = 0;//临时变量,用于帮助各元素数据的移动scanf("%d %d", &n,&m);for (i=0;i<n;i++){scanf("%d",&arr[i]);}for (j = 0; j < m; j++)  //每一轮循环实现右移一个位置,总共进行m轮循环,即右移m个位置{//实现右移一个位置temp = arr[n - 1];for (i = n - 2; i >= 0; i--){arr[i + 1] = arr[i];}arr[0] = temp;}for (i = 0; i < n; i++)//设置循环打印数组前n个元素{					   //并设置判断语句进行判断,除了最后一个元素后面没空格,前面每个元素后面都有空格printf("%d", arr[i]);if (i<n-1){printf(" ");}}return 0;                      
}

7-2 找出不是两个数组共有的元素(20分)

给定两个整型数组,本题要求找出不是两者共有的元素。

输入格式:

输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。

输出格式:

在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。

输入样例:

10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1

输出样例:

3 5 -15 6 4 1

编译器:GCC

代码

#include <stdio.h>int main()
{// 目标数组 int a1[20] = { 0 };// 目标数组int a2[20] = { 0 };// 临时数组int a3[20] = { 0 };// 分别表示两个数组的长度(元素个数)int n, m;// 先输入的表示 a1 的长度,然后输入目标数组 a1 的每个元素scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%d", &a1[i]);}// 先输入的表示 a2 的长度,然后输入目标数组 a2 的每个元素scanf("%d", &m);for (int i = 0; i < m; i++){scanf("%d", &a2[i]);}// k 为临时数组的索引int k = 0;for (int i = 0; i < n; i++){// flag表示假设当前元素在另一个数组中不出现int flag = 1;for (int j = 0; j < m; j++){// 如果找到相同的元素,就将 flag 置为 0 ,假设不成立if (a1[i] == a2[j]){flag = 0;}}// 如果假设成功,就将当前元素放入临时数组if (flag) a3[k ++] = a1[i];}for (int i = 0; i < m; i++){int flag = 1;for (int j = 0; j < n; j++){if (a2[i] == a1[j]){flag = 0;}}if (flag) a3[k++] = a2[i];}// 打印临时数组的数据,重复的只打印一次for (int i = 0; i < k; i++){int flag = 1;// 向前寻找看有没有相同元素for (int j = 0; j < i; j++){// 有就将 flag 置为 0 ,后面的 if 就不进去 if (a3[i] == a3[j]){flag = 0;}}// 如果 flag 为 1 ,说明当前的元素没有重复,进入 ifif (flag){// 控制输入格式,题目会检查if (!i){// 如果是第一个元素就不打印空格printf("%d", a3[i]);}else{// 将空格往前打印,因为最后不能有空格printf(" %d", a3[i]);}}}return 0;
}

7-3 方阵循环右移(20分)

本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。

输入格式:

输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。

输出格式:

按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。

输入样例:

2 3
1 2 3
4 5 6
7 8 9

输出样例:

2 3 1 
5 6 4 
8 9 7 

编译器:GCC

代码

#include <stdio.h>int main()
{int m, n, i, j, k, l;int det[6][6] = { 0 }, temp[6][6] = { 0 };scanf("%d %d", &m, &n);for (i = 0; i < n; i++)for (j = 0; j < n; j++)scanf("%d", &det[i][j]);//存入数据for (i = 0; i < m; i++)//右移m次{for (j = 0; j < n; j++)for (k = 0; k < n; k++)//三重循环,一次判断处理数据{if (k != n - 1)temp[j][k + 1] = det[j][k];elsetemp[j][0] = det[j][k];//数据从最后一列换到第一列}//将数据右移后存入temp数组中for (l = 0; l < n; l++)for (j = 0; j < n; j++)det[l][j] = temp[l][j];//逐个将temp中的数据复制到det中,为下次循环准备}for (i = 0; i < n; i++){for (j = 0; j < n; j++)printf("%d ", det[i][j]);printf("\n");//行循环结束换行}return 0;
}

7-4 求一批整数中出现最多的个位数字(20分)

给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

输入格式:

输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。

输出格式:

在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

输入样例:

3
1234 2345 3456

输出样例:

3: 3 4

编译器:GCC

#include<stdio.h>
int main()
{int n,i,max;int a[10]={0};scanf("%d",&n);for(i=1;i<=n;i++)//计算各个各位数字出现的次数{int c;scanf("%d",&c);int number=10;int b;do{b=c%number;c=c/number;a[b]++;}while(c>0);}i=1;max=a[0];while(i<10)//求最大次数{   max=max>a[i]?max:a[i];i++;}printf("%d:",max);for(i=0;i<10;i++)if(max==a[i])printf(" %d",i);return 0;
}

7-5 判断上三角矩阵(15分)

上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

输入格式:

输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。

输入样例:

3
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2
3
1 2 3
1 4 5
0 -1 6

输出样例:

YES
NO
NO

编译器:GCC

代码

 
#include<stdio.h>
int main()
{int T;   // 待测矩阵的个数int matrix[10][10];   // 方阵scanf("%d", &T);for (int n = 1; n <= T; n++)   // 依次判断T个方阵是否是上三角矩阵{int m;   // m阶方阵scanf("%d", &m);for (int i = 0; i < m; i++)   //输入数据{for (int j = 0; j < m; j++){scanf("%d", &matrix[i][j]);}}int flag = 1;   // 标志性变量,为1表示该方阵为上三角矩阵// 判断其是否是上三角矩阵// 上三角矩阵的特点:主对角线下方全为0// 主对角线下方元素特点:行号大于列号for (int i = 0; i < m; i++){for (int j = 0; j < m; j++){if (j >= i)   // 列号大于等于行号,继续{continue;}if (matrix[i][j] != 0)   // 主对角线下方但凡有一个元素不为0,则其不是上三角矩阵{flag = 0;}}}if (flag == 1)   // 本次判断的矩阵为上三角矩阵{printf("YES\n");}else{printf("NO\n");   // 非上三角矩阵}}return 0;
}

7-6 数字加密(15分)

输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。

输入格式:

输入在一行中给出一个四位的整数x,即要求被加密的数。

输出格式:

在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。

输入样例:

1257

输出样例:

The encrypted number is 4601

编译器:GCC

代码

 
#include <stdio.h>
int main(void)
{int n,i,num[4]={},nums=1;scanf("%d", &n);for (i=1;i<4;i++){nums=nums*10;num[i]=(n/nums)%10;}num[0]=n%10;int j,k;for(j=0;j<4;j++){num[j]+=9;num[j]=num[j]%10;}k=num[3];num[3]=num[1];num[1]=k;		//实现交换 k=num[2];num[2]=num[0];num[0]=k;printf("The encrypted number is %d%d%d%d", num[3], num[2], num[1], num[0]);return 0;
}

7-7 求矩阵的局部极大值(15分)

给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

输入格式:

输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式:

每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。

输入样例1:

4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1

输出样例1:

9 2 3
5 3 2
5 3 4

输入样例2:

3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1

输出样例2:

None 3 5

编译器:GCC

代码

#include<stdio.h>
int main()
{int m,n;scanf("%d %d",&m,&n);int i,j;int a[m][n];for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);}}int flag;for(i=1;i<m-1;i++)    //注意本体边界,由于局部最大值首先需要有上线左右四个值包围,因此在设置范围的时候需要将上下左右去掉一行一列{flag=1;for(j=1;j<n-1;j++){if((a[i][j]>a[i-1][j])&&(a[i][j]>a[i+1][j])&&(a[i][j]>a[i][j-1])&&(a[i][j]>a[i][j+1])){printf("%d %d %d\n",a[i][j],i+1,j+1);flag=0;    //本题通过flag == 0进行判断是否出现局部最大值 }}}if(flag==1){printf("None %d %d",m,n);}return 0;}

7-8 组个最小数(20分)

给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

现给定数字,请编写程序输出能够组成的最小的数。

输入格式:

输入在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。

输出格式:

在一行中输出能够组成的最小的数。

输入样例:

2 2 0 0 0 3 0 0 1 0

输出样例:

10015558

编译器:GCC

代码

#include<stdio.h>int main() {// 存储数字 0~9 对应的个数int numberCounts[10];for (int i = 0; i < 10; i++) {scanf("%d", &numberCounts[i]);}// 根据 numberCounts 中存储的各位数字个数初始化 digits 数组int digits[50];int index = 0;for (int i = 0; i < 10; i++) {for (int j = 1; j <= numberCounts[i]; j++, index++) {digits[index] = i;}}// 如果第一个数字为 0,则将其与第一个非 0 数字交换位置if (digits[0] == 0) {// 从剩下的数字中找到第一个非 0 数字并与 digits[0] 交换for (int i = 1; i < index; i++) {if (digits[i] != 0) {int temp = digits[0];digits[0] = digits[i];digits[i] = temp;break;}}}for (int k = 0; k < index; k++) {printf("%d", digits[k]);}return 0;
}

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

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

相关文章

在vscode 中配置 pyside6 环境

在vscode中编写pyside环境配置 start 记录一下在 vscode 中编写 pyside6 程序&#xff0c;环境如何配置。 前提 请自行安装好 python。请自行安装好 vscode。安装 vscode 插件 Python&#xff0c;PYQT Integration。 配置环境 1.借助 pip 安装我们的pyside6 pip install…

Python@setter用法介绍

Pythonsetter是Python编程语言中的一个关键属性&#xff0c;它简化了Python开发者的编程过程&#xff0c;提高了编程效率。 一、Pythonsetter是什么 Pythonsetter是Python语言中的一个属性&#xff0c;它允许程序员设置Python中的类成员变量。在Python中&#xff0c;属性&…

【PowerShell】修改Windows网络配置的常用命令

PowerShell&#xff08;PS&#xff09;是一种强大的任务自动化和管理框架&#xff0c;具有丰富的命令和语法&#xff0c;可以用于编写脚本来管理Windows操作系统和其他应用程序。它的开放式架构和跨平台支持使得它成为一个灵活和可扩展的工具。 在网络配置方面&#xff0c;Powe…

python - 模块使用详解

前言 Python有非常强大的第三方库&#xff0c;也有非常多的内置模块帮助开发人员实现某些功能&#xff0c;无需开发人员自己造轮子。本文介绍Python的模块。 什么是模块 模块简单来说就是一系列功能的集合体&#xff0c;如果将程序的开发比喻成拼图&#xff0c;模块就是各种…

PHP特性知识点总结

如果想观感更好看到图片,可以去我的gitbook或者github去看 github:https://github.com/kakaandhanhan/cybersecurity_knowledge_book-gitbook.22kaka.fun gitbook:http://22kaka.fun description: 专门出的关于php的特性比较,后面好像也有java的特性。 🏀 PHP特性知识点…

【开源】JAVA+Vue.js实现森林火灾预警系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 系统基础模块2.3 烟雾传感器模块2.4 温度传感器模块2.5 历史记录模块2.6 园区数据模块 三、系统设计3.1 用例设计3.1.1 森林园区基础系统用例设计3.1.2 森林预警数据用例设计 3.2 数据库设计3.2.1 烟雾…

如果把vue组件动态添加到body上?

tools.js: import Vue from vue/*** param Component 组件实例的选项对象* param props 组件实例中的prop*/ export function create(Component, props) {const comp new (Vue.extend(Component))({ propsData: props }).$mount()document.body.appendChild(comp.$el)comp.re…

中国电子学会2019年12月份青少年软件编程Scratch图形化等级考试试卷三级真题(选择题、判断题)

一、单选题(共 25 题&#xff0c;每题 2 分&#xff0c;共 50 分) 1.怎样修改图章的颜色&#xff1f;&#xff08; &#xff09; A. 只需要一个数字来设置颜色 B. 设置 RGB 的值 C. 在画笔中设置颜色、饱和度、亮度 D. 在外观中设置或修改角色颜色特效 2.以下程序的执…

用code去探索理解Llama架构的简单又实用的方法

除了白月光我们也需要朱砂痣 我最近也在反思&#xff0c;可能有时候算法和论文也不是每个读者都爱看&#xff0c;我也会在今后的文章中加点code或者debug模型的内容&#xff0c;也许还有一些好玩的应用demo&#xff0c;会提升这部分在文章类型中的比例 今天带着大家通过代码角度…

数据库管理-第149期 Oracle Vector DB AI-01(20240210)

数据库管理149期 2024-02-10 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xff09;1 机器学习2 向量3 向量嵌入4 向量检索5 向量数据库5 专用向量数据库的问题总结 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xf…

每日五道java面试题之java基础篇(六)

第一题&#xff1a;Java 创建对象有哪⼏种⽅式&#xff1f; Java 中有以下四种创建对象的⽅式: new 创建新对象通过反射机制采⽤ clone 机制通过序列化机制 前两者都需要显式地调⽤构造⽅法。对于 clone 机制,需要注意浅拷⻉和深拷⻉的区别&#xff0c;对于序列化机制需要明…

2.3 Binance_interface APP 现货行情-实时行情

Binance_interface APP 现货行情-实时行情 Github地址PyTed量化交易研究院 目录 Binance_interface APP 现货行情-实时行情1. APP 现货行情-实时行情函数总览2. 模型实例化3. 获取一个产品的最优挂单 get_bookTicker4. 获取全部产品的最优挂单&#xff08;列表格式&#xff09…

《AI绘画从入门到精通》专栏总目录

❤️ 专栏名称&#xff1a;《AI绘画从入门到精通》 &#x1f338; 内容介绍&#xff1a;Stable Diffusion WebUI 基础教程、ControlNet 控制网络、Stable Diffusion 综合案例、Stable Diffusion 模型下载、模型训练、Stable Diffusion 解决方案等&#xff0c;适合零基础和进阶的…

书生·浦语大模型第五课作业

基础作业&#xff1a; 使用 LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署 InternLM-Chat-7B 模型&#xff0c;生成 300 字的小故事&#xff08;需截图&#xff09; 这里 /share/conda_envs 目录下的环境是官方未大家准备好的基础环境&#xff0c;因为该目录是共…

leetcode 算法 69.x的平方根(python版)

需求 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&#…

基于Java (spring-boot)的宿舍管理系统

一、项目介绍 基于Java (spring-boot)的宿舍管理系统功能&#xff1a;登录界面、宿舍管理、学生管理、班级管理、宿舍楼管理、维修记录、晚归记录、请假记录、用户管理、角色管理、菜单管理、日志管理、我收到的、退宿审核&#xff0c;等等等 二、作品包含 三、项目技术 后端语…

六轴机器人奇异点

1 奇异点说明 有着6个自由度的KUKA机器人具有3个不同的奇点位置。即便在给定状态和步骤顺序的情况下,也无法通过逆向变换(将笛卡尔坐标转换成极坐标值)得出唯一数值时,即可认为是一个奇点位置。这种情况下,或者当最小的笛卡尔变化也能导致非常大的轴角度变化时,即为奇点位置…

fast.ai 机器学习笔记(三)

机器学习 1&#xff1a;第 8 课 原文&#xff1a;medium.com/hiromi_suenaga/machine-learning-1-lesson-8-fa1a87064a53 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 来自机器学习课程的个人笔记。随着我继续复习课程以“真正”理解它&#xff0c;这些笔记将继续更…

【初中生讲机器学习】8. KNN 算法原理 实践一篇讲清!

创建时间&#xff1a;2024-02-11 最后编辑时间&#xff1a;2024-02-12 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名初三学生&#xff0c;热爱计算机和数学&#xff0c;我们一起加…

Nature Machine Intelligence 使用机器学习驱动的可拉伸智能纺织手套捕捉复杂的手部动作和物体交互

研究背景 对灵巧手运动的精确实时跟踪在人机交互、元宇宙、机器人和远程医疗等领域有着广泛的应用。当前的可穿戴设备中的大多数仅用于检测精度有限的特定手势&#xff0c;并且没有解决与设备的可靠性、准确性和可清洗相关的挑战。对传感器直接放置在用户的手上有严格的要求&am…