【C/PTA】数组进阶练习(一)

本文结合PTA专项练习带领读者掌握数组,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。

目录

    • 7-1 矩阵运算
    • 7-2 方阵循环右移
    • 7-3 螺旋方阵
    • 7-4 数组-杨辉三角
    • 7-5 数组-对角线求和
    • 7-6 数组-矩阵最小值

7-1 矩阵运算

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入格式:

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
输入样例:

4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1

输出样例:

35

#include <stdio.h>
int main()
{int n;scanf("%d",&n);int a[n][n];for(int i=0;i<n;i++){for(int j=0;j<n;j++){scanf("%d",&a[i][j]);}}int sum=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){sum+=a[i][j];if(i+j==n-1||i==n-1||j==n-1){sum-=a[i][j];}}}printf("%d",sum);
}

7-2 方阵循环右移

本题要求编写程序,将给定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

#include <stdio.h>
int main()
{int m,n;scanf("%d %d",&m,&n);int a[n][n],b[n][n];for(int i=0;i<n;i++){for(int j=0;j<n;j++){scanf("%d",&a[i][j]);b[i][j]=a[i][j];}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){//使用两个数组,因为单个数组实现不了元素的循环b[i][(j+m)%n]=a[i][j];			}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){printf("%d ",b[i][j]);}printf("\n");}
}

7-3 螺旋方阵

所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
输入格式:

输入在一行中给出一个正整数N(<10)。
输出格式:

输出N×N的螺旋方阵。每行N个数字,每个数字占3位。
输入样例:

5

输出样例:

1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

#include <stdio.h>
int main()
{int n;scanf("%d",&n);int a[n][n];int t=1;//最开始填入的数字位1 此后自增int startrow=0,endrow=n-1,startcol=0,endcol=n-1;//表示行列while(t<=n*n){//第一行从左至右for(int j=startcol;j<=endcol;j++){a[startrow][j]=t++;}startrow++;//最后一列从上到下for(int i=startrow;i<=endrow;i++){a[i][endcol]=t++;}endcol--;//最后一行从右到左for(int j=endcol;j>=startcol;j--){a[endrow][j]=t++;}endrow--;//第一列从下到上for(int i=endrow;i>=startrow;i--){a[i][startcol]=t++;}startcol++;//由此开始新的螺旋方阵}for(int i=0;i<n;i++){for(int j=0;j<n;j++){printf("%3d",a[i][j]);}printf("\n");}
}

7-4 数组-杨辉三角

输入一个正整数N,输出杨辉三角的前N行。
输入格式:

输入一个正整数N(N<=20)。
输出格式:

输出杨辉三角的前N行,每个数的宽度为7,如果数据的位数小于7,则左端补以空格,行末没有空格。
输入样例:

4

输出样例:

  11      11      2      11      3      3      1
#include <stdio.h>
int main()
{int n;scanf("%d",&n);int a[n][n];for(int i=0;i<n;i++){for(int j=0;j<=i;j++){if(j==0||j==i){a[i][j]=1;}elsea[i][j]=a[i-1][j]+a[i-1][j-1];}}for(int i=0;i<n;i++){for(int j=0;j<=i;j++){printf("%7d",a[i][j]);}printf("\n");		}}

7-5 数组-对角线求和

求一个N*N的整型矩阵的正对角线和反对角线元素之和。
输入格式:

第一行输入一个正整数N(N<=100);

接下来输入N行,每行N个整数(均满足int范围)。
输出格式:

输出仅一行,包括两个以空格分隔的正整数,分别表示矩阵的正对角线元素之和,反对角线元素之和。
输入样例:

3
2 4 3
1 3 5
4 1 3

输出样例:

8 10

#include <stdio.h>
int main()
{int n;scanf("%d",&n);int a[n][n];int all=0,sum=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){scanf("%d",&a[i][j]);if(i+j==n-1)all+=a[i][j];if(i==j)sum+=a[i][j];}}printf("%d %d",sum,all);
}

7-6 数组-矩阵最小值

给定一个大小为M*N的矩阵,请你求出该矩阵的最小值及其坐标。
输入格式:

第一行输入两个整数M,N(3 <= M,N <= 20);

接下来M行,每行N个整数,即该矩阵的元素。每行两个整数间以空格分隔。
输出格式:

输出仅一行,包含三个整数。第一个整数表示矩阵的最小元素的值,第二个和第三个整数分别表示该元素所在的行号和列号。

数据保证最小值存在且唯一。行号列号分别从1开始计数。

两个数之间用一个空格符隔开,行末没有多余的空格。
输入样例:

3 3
1 2 3
1 -2 4
1 2 3

输出样例:

-2 2 2

#include <stdio.h>
int main()
{int m,n;scanf("%d%d",&m,&n);int a[m][n];int min,b,c;for(int i=0;i<m;i++){for(int j=0;j<n;j++){scanf("%d",&a[i][j]);}}min=a[0][0];for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(a[i][j]<min){min=a[i][j];b=i,c=j;}}}printf("%d %d %d",min,b+1,c+1);
}

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

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

相关文章

大一,小小练习题--含答案

测试题 1.(1). 对于int类型的变量&#xff0c;Java编译器和大多数C编译器都是分配4个字节的内存&#xff0c;4个字节有32个二进制位即总共可以拥有多少种状态&#xff0c;其中一半的状态用来存储负数&#xff0c;一半的状态用来存储0和正数。因此&#xff0c;int类型的变量可以…

不标年份的葡萄酒质量好吗?

我们在葡萄酒标上经常看到生产年份&#xff0c;也就是指全部葡萄采摘的年份。旧世界葡萄酒产国认为葡萄酒年份对他们的影响较大&#xff0c;而新世界葡萄酒&#xff0c;年份的意义就稍微小些。甚至有一部分葡萄酒酒标上没有年份。在酒标上没有标注年份的葡萄酒&#xff0c;被称…

WSL2安装ubuntu及修改安装位置,设置Ubuntu开机启动链接ssh服务

1. WSL2安装ubuntu及修改安装位置 2. 设置Ubuntu开机启动链接ssh服务

学习无人机代码框架【第一天】---VMware 安装Ubuntu16.04时显示不全的解决方法

ros环境配置篇 环境配置在vmware上安装ubantu16.04操作系统安装完成后显示界面太小解决办法其他遇到的一些ubantu问题最后一步是在ubantu16上安装ros-kinetic其他很重要的一个工具是安装vmware-tool&#xff0c;可以支持把外部的文件或文字传入到虚拟机中管理不同的终端的软件代…

[C/C++] 数据结构 LeetCode:用队列实现栈

题目描述: 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元…

基于Springboot+Vue家电维修预约系统

需求&#xff1a; 登录后用户选择所在地区 1.日常事务工作人员预约&#xff08;进行分类筛选 如清洁、烹饪等&#xff0c;至少6个&#xff09;每天晚上22:00前预约 第二天起可上门 需要有时段的选择。 2.家电维修预约&#xff08;分类筛选 如&#xff1a;冰箱、空调、网络、电饭…

为什么 Intent 不能传递大数据

Intent 传递不同大小数据时的问题&#xff1a; 传 512k 以下的数据是可以正常传递的&#xff1b;传 512k&#xff5e;1024k 的数据会出错&#xff0c;闪退&#xff1b;传 1024k 以上的数据会报错&#xff1a;TransactionTooLargeException&#xff1b;考虑到 Intent 还包括要启…

kubernetes集群编排——etcd

备份 从镜像中拷贝etcdctl二进制命令 [rootk8s1 ~]# docker run -it --rm reg.westos.org/k8s/etcd:3.5.6-0 sh 输入ctrlpq快捷键&#xff0c;把容器打入后台 获取容器id [rootk8s1 ~]# docker ps 从容器拷贝命令到本机 docker container cp c7e28b381f07:/usr/local/bin/etcdc…

使用人工智能自动测试 Flutter 应用程序

移动应用程序开发的增长速度比以往任何时候都快。几乎每个企业都需要移动应用程序来保持市场竞争力。由于像 React Native 这样的跨平台移动应用程序开发框架允许公司使用单一源代码和单一编程语言构建 iOS 和 Android 应用程序&#xff0c; Flutter是 Google 支持的另一个热门…

【前端知识】Node——使用fs模块对文件、文件夹的操作

一、fs的三种读取文件内容的方式 const fs require(fs);// 1.同步读取 const res1 fs.readFileSync(../test.txt, {encoding: utf-8 }); console.log(res1);// 2.异步读取&#xff1a;回调函数 fs.readFile(../test.txt, {encoding: utf-8 }, (err, data) > {if(err){con…

二十三种设计模式全面解析-深入解析模板方法模式的奇妙世界

在软件设计的奇妙宇宙中&#xff0c;有一种设计模式如一颗流星般划过&#xff0c;留下绚丽的光芒&#xff0c;它就是——模板方法模式&#xff08;Template Method Pattern&#xff09;。这个模式不仅令代码更加灵活&#xff0c;而且蕴含了一种设计哲学&#xff0c;本文将深入研…

最大子段和(分治法+动态规划法)

求最大子段和 此类问题通常是求数列中连续子段和的最大值&#xff0c;经典的股票问题就是考察的这个思想及拓展。 例题&#xff1a; AcWing:1054. 股票买卖 Leetcode:53. 最大子数组和 分治法O(nlogn) 此类问题时分适合采用分治思想&#xff0c;因为所有子区间 [ s t a r t …

要事第一:如何通过6个步骤确定项目的优先级

当收到很多项目请求并且每个请求都是重中之重时&#xff0c;该怎么办&#xff1f;从最易完成的开始&#xff1f;还是先解决最大的问题&#xff1f; 实际上两种做法都不对。确定项目优先级的更好方法是评估以下内容&#xff0c;而不是关注项目规模或完成时长&#xff1a; ● 每…

【计算机网络】P2 性能指标

性能指标 性能指标1 - 速率性能指标2 - 带宽性能指标3 - 吞吐量性能指标4 - 时延性能指标5 - 时延带宽积性能指标6 - 往返时延 RTT性能指标7 - 利用率 性能指标1 - 速率 速率&#xff0c;即数据率&#xff0c;或称数据传输率或比特率&#xff0c;指连接在计算机网络上的主机在…

DBeaver连接本地MySQL

原文&#xff1a; DBeaver21.3.0安装与连接本地MySQL_dbeaver创建本地数据库_傅大胖的博客-CSDN博客 其他&#xff1a; mysql 的驱动下载地址&#xff1a; Central Repository: mysql/mysql-connector-java ​​​​​​​

二十三种设计模式全面解析-职责链模式的高级应用-日志记录系统

在软件开发领域&#xff0c;职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种强大而灵活的设计模式&#xff0c;它能够将请求的发送者和接收者解耦&#xff0c;提高代码的灵活性和可维护性。本文将深入探讨职责链模式的优点和缺点&#xff0c;并提供更…

学习Opencv(蝴蝶书/C++)代码——2.OpenCV初探

文章目录 0. 图像读取与显示1. 视频文件读取与操作1.1 示例代码1.1 OpenCV支持的视频格式2. 加入滑动条2.1 示例代码2.2 报错/Warning2.3 关于toolbar3. 简易视频播放器3.1 OpenCV检测方向键被按下3.1.1 Windows下3.1.2 linux下3.1 方向键控制视频变化4. 简单的变换5. 写视频5.…

三相异步电机动态数学模型及矢量控制仿真

文章目录 三相异步电机动态数学模型及矢量控制仿真1、异步电机三相方程2、坐标变换3、磁链3/2变换推导4、两相静止坐标系下的方程5、两相旋转坐标系下的方程6、以 ω-is-Ψr 为状态变量的状态方程7、矢量控制及 matlab 仿真 原文链接需要仿真的同学请关注【Qin的学习营地】 三相…

JMeter基础

JMeter工具基础使用 JMeter的三个重要组件线程组HTTP请求查看结果树 JMeter参数化用户定义的变量用户参数CSV数据文件设置函数四种参数化方式的不同 JMeter断言JMeter关联正则表达式XPath提取器JSON提取器 JMeter属性JMeter录制脚本JMeter直连数据库JMeter逻辑控制器JMeter定时…

百云齐鲁 | 云轴科技ZStack成功实践精选(山东)

山东省作为我国重要的工业基地和北方地区经济发展的战略支点&#xff0c;在“十四五”规划中将数字强省建设分为数字基础设施、数字科技、数字经济、数字政府、数字社会、数字生态六大部分&#xff0c;涵盖政治、经济、民生等多个方面&#xff0c;并将大数据、云计算、人工智能…