C语言实验 二维数组

news2025/1/11 10:17:19

时间:2024.12.6

一、实验

7-1 矩阵运算

代码 

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

代码的思路

• 定义了一个20×20的整型数组a,用于存储矩阵的元素,并且初始化所有元素为0。

• 定义了三个整型变量n、i、j,分别用于存储矩阵的大小、行索引和列索引。

• 定义了一个整型变量sum,用于存储特定位置元素的和,初始值为0。

• 使用scanf函数从标准输入读取一个整数n,这个整数表示接下来要输入的矩阵的大小。

• 使用两层嵌套的for循环遍历矩阵的每一行和每一列。外层循环变量i代表行索引,内层循环变量j代表列索引。

• 在内层循环中,使用scanf函数读取矩阵的元素,并将其存储在数组a[i][j]中。

• 在读取每个元素的同时,代码检查当前元素是否满足以下条件之一:

• i不等于矩阵的倒数第二行(i!=n-1)

• j不等于矩阵的倒数第二列(j!=n-1)

• i+j不等于矩阵的对角线((i+j)!=n-1)

如果当前元素不满足上述任何一个条件,那么将该元素加到sum变量中。

• 循环结束后,使用printf函数输出sum的值,即矩阵中特定位置元素的和。

• 程序返回0,表示正常结束。

这段代码的逻辑是计算矩阵中除了最后一行、最后一列以及对角线上的元素之外的所有元素的和。

7-2 求矩阵的局部极大值

代码一

#include<stdio.h>
int main(){
    int a[30][30]={0};
    int m,n,i,j;
    int count=0;
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            scanf("%d",&a[i][j]);
            }
        }
for(i=1;i<m-1;i++){
        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])){
               count++;
               printf("%d %d %d\n",a[i][j],i+1,j+1);
           }
            }
        }
    if(count==0){
           printf("None %d %d\n",m,n);
    }
    return 0;
}

代码的思路

• 定义了一个30×30的整型数组a,用于存储矩阵的元素,并且初始化所有元素为0。

• 定义了四个整型变量m、n、i、j,分别用于存储矩阵的行数、列数、行索引和列索引。

• 定义了一个整型变量count,用于记录局部最大值的数量,初始值为0。

• 使用scanf函数从标准输入读取两个整数m和n,这两个整数分别表示矩阵的行数和列数。

• 使用两层嵌套的for循环遍历矩阵的每一行和每一列。外层循环变量i代表行索引,内层循环变量j代表列索引。

• 在内层循环中,使用scanf函数读取矩阵的元素,并将其存储在数组a[i][j]中。

• 再次使用两层嵌套的for循环遍历矩阵,但这次从第二行第二列开始,到倒数第二行倒数第二列结束,即跳过矩阵的边界。外层循环变量i代表行索引,内层循环变量j代表列索引。

• 在内层循环中,检查当前元素a[i][j]是否大于其上a[i-1][j]、下a[i+1][j]、左a[i][j-1]、右a[i][j+1]四个相邻元素。如果满足这个条件,说明a[i][j]是一个局部最大值。

• 如果找到局部最大值,count变量的值加1,并使用printf函数打印该局部最大值及其位置(位置从1开始计数,因此需要对行列索引加1)。

• 遍历结束后,检查count的值。如果count为0,说明矩阵中没有局部最大值,此时使用printf函数打印“None”以及矩阵的行数和列数。

• 程序返回0,表示正常结束。

这段代码的逻辑是找出并打印一个矩阵中的所有局部最大值及其位置。

 代码二

#include <stdio.h>
int main() {
    int M, N;
    scanf("%d %d", &M, &N);
    int matrix[20][20];
    // 读取矩阵
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++) {
            scanf("%d", &matrix[i][j]);
        }
    }
    int found = 0;
    // 遍历矩阵中的非边界元素
    for (int i = 1; i < M - 1; i++) {
        for (int j = 1; j < N - 1; j++) {
            int current = matrix[i][j];
            int left = matrix[i][j - 1];
            int right = matrix[i][j + 1];
            int up = matrix[i - 1][j];
            int down = matrix[i + 1][j];
            // 检查是否为局部极大值
            if (current > left && current > right &&
                current > up && current > down) {
                printf("%d %d %d\n", current, i + 1, j + 1);
                found = 1;
            }
        }
    }
    if (!found) {
        printf("None %d %d\n", M, N);
    }
    return 0;
}

 优化

  • 在内部循环中,提前将当前元素的上下左右四个相邻元素的值存储到临时变量中(leftrightupdown),这样在比较时就不需要多次访问矩阵元素,减少了矩阵元素的访问次数,提高了效率。
  • 整体逻辑不变,仍然是遍历矩阵中的非边界元素并检查是否为局部极大值。如果找到局部极大值则输出,否则输出 “None 总行数 总列数”。

7-3 组个最小数

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

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

相关文章

物通博联,smart200配置

设备&#xff1a;物通博联smart200plc交换机 网线直连&#xff0c;并网&#xff0c;本地链接&#xff0c;电脑直连 配置电脑ip&#xff0c;以太网修改ip网段为2段&#xff0c;ping通192.168.2.1 浏览器访问192.18.2.1&#xff0c;输入账号密码进入后台配置页面 &#xff0c;…

租赁小程序的优势与应用场景解析

内容概要 租赁小程序&#xff0c;听起来是不是很酷&#xff1f;其实&#xff0c;它就是一个让你可以方便地租借各种高成本但用得不频繁的商品的平台。想象一下&#xff0c;当你需要租一件派对用的华丽小礼服&#xff0c;或是想体验一下超酷的运动器材&#xff0c;租赁小程序就…

最简单的线性回归神经网络

数据&#xff1a; # 线性回归 import torch import numpy as np import matplotlib.pyplot as plt# 随机种子&#xff0c;确保每次运行结果一致 torch.manual_seed(42)# 生成训练数据 X torch.randn(100, 3) # 100 个样本&#xff0c;每个样本 3 个特征 true_w torch.tenso…

第九篇:k8s 通过helm发布应用

什么是helm&#xff1f; Helm 是 Kubernetes 的包管理器。Helm 是查找、分享和使用软件构建 Kubernetes 的最优方式。 在红帽系的Linux中我们使用yum来管理RPM包&#xff0c;类似的&#xff0c;在K8s中我们可以使用helm来管理资源对象&#xff08;Deployment、Service、Ingress…

FastAPI解决跨域报错net::ERR_FAILED 200 (OK)

目录 一、跨域问题的本质 二、FastAPI中的CORS处理 1. 安装FastAPI和CORS中间件 2. 配置CORS中间件 3. 运行FastAPI应用 三、解决跨域报错的步骤 四、案例&#xff1a;解决Vue.js与FastAPI的跨域问题 1. Vue.js前端应用 2. FastAPI后端API 3. 配置CORS中间件 4. 运行…

ThinkPHP+Layui开发的ERP管理系统

ERP采购生产销售系统&#xff0c;一款基于ThinkPHPLayui开发的ERP管理系统&#xff0c;帮助中小企业实现ERP管理规范化&#xff0c;此系统能为你解决五大方面的经营问题&#xff1a;1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理&#xff0c;适用于&#xff1a;服装…

数字化转型中的架构整合:业务、数据、应用与技术架构的协同发展

一、引言 在当今快速发展的数字经济时代&#xff0c;企业面临着前所未有的挑战与机遇。数字化转型已成为企业提升竞争力和适应市场变化的关键策略。然而&#xff0c;成功的数字化转型不仅仅依赖于技术的引入&#xff0c;更需要对企业内部架构的深刻理解与整合。本文将探讨业务架…

C语言实例_26之根据输入计算星期几

1. 问题 请输入星期几的第一个字母来判断一下是星期几&#xff0c;如果第一个字母一样&#xff0c;则继续判断第二个字母。 2. 实现思路 思路一&#xff1a;嵌套if-else语句实现 首先接收用户输入的第一个字母&#xff0c;使用if-else语句进行判断。如果输入的是M&#xff0…

ceph安装P版本

文章目录 1、搭建的要求1、OSD约束2、ceph部署方式1、cephadm的部署原理红帽版本搭建(RHCS5.0部署) 2、cephadm安装P版本1、环境要求2、配置主机名&#xff0c;关闭防火墙&#xff0c;时间同步3、检查python环境和容器运行时环境4、部署引导节点(下载cephadm脚本)1、获取脚本2、…

git 使用配置

新拿到机器想配置git 获取代码权限&#xff0c;需要的配置方法 1. git 配置用户名和邮箱 git config --global user.name xxxgit config --global user.email xxemail.com 2. 生成ssh key ssh-keygen -t rsa -C "xxemail.com" 3. 获取ssh key cat ~/.ssh/id_rsa.…

Python使用Selenium自动实现表单填写之蛇年纪念币蛇钞预约(附源码,源码有注释解析,已测试可用

Python实现纪念币预约自动填写表单 声明:本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站…

Hyper-V创建虚拟机配置IP等网络配置原理(Linux、Windows为例)

Hyper-V创建虚拟机配置IP等网络配置原理&#xff08;Linux、Windows为例&#xff09; 大家知道Windows系统里面内置了Hyper-V管理器&#xff0c;用来创建和管理本地虚拟机环境。今天我创建了两台虚拟机&#xff0c;一台是CentOS7.9&#xff08;Linux&#xff09;&#xff0c;另…

Angular由一个bug说起之十一:排序之后无法展开 Row

问题现象 在使用 Material Table 时&#xff0c;排序功能触发了一个奇怪的 Bug&#xff1a;表格的 Row 无法展开。最终排查发现&#xff0c;问题的根源在于 trackBy 的错误使用。trackBy 方法接受两个参数&#xff1a;index&#xff08;数据索引&#xff09;和 row&#xff08;…

Miller-Rabin 米勒拉宾素性检测

1、什么是Miller-Rabin Miller - Rabin 算法是一种用于判断一个数是否为素数的概率性算法。在密码学等领域&#xff0c;经常需要快速判断一个大整数是否为素数。传统的试除法对于大整数效率极低&#xff0c;而 Miller - Rabin 算法能够在较短时间内以较高的概率判断一个数是否…

【MySQL系列】MySQL 中的 SQL_MODE 设置:ANSI_QUOTES 选项解析与应用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

HarmonyOS 5.0应用开发——Ability与Page数据传递

【高心星出品】 文章目录 Ability与Page数据传递Page向Ability传递数据Ability向Page传递数据 Ability与Page数据传递 基于当前的应用模型&#xff0c;可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 使用EventHub进行数据通信&#xff1a;在基类Context中提供…

MFC扩展库BCGControlBar Pro v36.0新版亮点:黑色主题中的自动反转图标

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v36.0已全新发布了&#xff0c;这个版本在黑暗主题中添加自动图标反转、新增一个全新的S…

查找 排序算法(系列)

复习一下排序算法吧&#xff0c;数据结构有点难&#xff0c;虽然我已经看过一遍了&#xff0c;重温一遍还是很有收获&#xff01; 本文会出一系列&#xff08;主讲算法排序&#xff09;&#xff0c;欢迎订阅&#xff01;&#xff01;&#xff01; Python中常用的排序算法有以…

Y20030053 JSP+SSM+MYSQL+LW+旅游系统的设计与实现 源码 配置 文档 全套资料

旅游系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 摘 要 随着旅游业的蓬勃发展和人们对休闲度假需求的不断增加&#xff0c;旅游业管理面临着越来越多的挑战。为了提高管理效率、优化客户体验并增强市场竞争力&#xff0c;本文介绍…

3D 生成重建016-SA3D从nerf中分割一切

3D 生成重建016-SA3D从nerf中分割一切 文章目录 0 论文工作1 方法介绍2 实验结果 0 论文工作 1 SAM的背景和目标&#xff1a; SAM 是一种强大的二维视觉基础模型&#xff0c;能够在 2D 图像中进行任意物体的分割。传统上&#xff0c;SAM 在二维空间表现出色&#xff0c;但其无…