C语言基础练习——最大值及其位置(二维数组)
C语言基础练习——最大值及其位置(二维数组)
时间限制: 1 Sec 内存限制: 10 MB
题目描述
每行元素的最大值,以及其所在的行号和列号。求出所有元素的最大值,以及其所在的行号和列号。
输入
在输入矩阵中各元素的值。(假设为整型数)
输出
再输出所有元素的最大值的下标及其值。
样例输入 Copy
3 4
1 2 3 4
10 11 12 13
3 4 5 6
样例输出 Copy
0 3 4
1 3 13
2 3 6
1 3 13 (思路和下面的代码对照着看)
我的思路是定义a[100][100]用于输入数据。
定义b[101][2]用于记录每行最大值所在的行号和列号,比如a[1][2],行号是1,列号是2
你可能注意到了我写的是b[101][2]而不是b[100][2],因为我把数组最大值的行号和列号放到了最后
比如有100行数据,那么b[101][0]和b[101][1]保存的就是数组最大值的行号和列号 先用一个nxm的循环输入数据 然后for循环i从0到n-1,找每一行的最大值。
先假定每行的行首是最大值max=a[i][0],那么行号是i,保存到b[i][0],列号是0,保存到b[i][1]
嵌套一个for循环k从1到n-1,让max和a[i][1]……a[i][n-1]比较,如果max<a[i][k],则修改max及其行号列号
嵌套循环结束后输出本行最大值及其行号列号 最后来一个for循环i从0到n-1,找数组的最大值
这里我先把每行最大值行号和列号取了出来,如果我写在一起可能看这篇文章的人就看不懂了
如果直接写就是这样,a[b[i][0]][b[i][1]],就是代码中的a[x][y]
先假定数组最大值是第一行的最大值,然后让其他行最大值与之比较,如果maxmax<a[x][y],则修改maxmax及其行号列号
程序最后输出数组最大值及其行号列号 下面是实现代码:
#include <stdio.h>
int main()
{
int a[][],b[][];
int n,m,i,k;
scanf("%d%d",&n,&m);
for(i=; i<n; i++)
{
for(k=; k<m; k++)
{
scanf("%d",&a[i][k]); //输入
}
}
for(i=; i<n; i++) //找每行最大值
{
int max=a[i][]; //假定行首为最大值
b[i][]=i; //行首行号
b[i][]=; //行首列号
for(k=; k<m; k++)
{
if(max<a[i][k])
{
max=a[i][k]; //修改第i行最大值
b[i][]=k; //行内最大值,只有列号变化
}
}
printf("%d %d %d\n",b[i][],b[i][],max); //输出第i行最大值及其行号列号
}
int maxmax; //整个数组的最大值
for(i=; i<n; i++)
{
int x=b[i][]; //第i行最大值的行号
int y=b[i][]; //第i行最大值的列号
if(i==) //第0行
{
maxmax=a[x][y]; //假定第0行最大值为数组最大值
b[n][]=; //行号
b[n][]=; //列号
}
else //其他行
{
if(maxmax<a[x][y])
{
maxmax=a[x][y]; //修改数组最大值
b[n][]=x; //行号
b[n][]=y; //列号
}
}
}
printf("%d %d %d",b[n][],b[n][],maxmax); //输出数组最大值及其行号列号
return ;
}
C语言基础练习——最大值及其位置(二维数组)的更多相关文章
- Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...
- c语言题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点
//题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小.也可能没有鞍点. // #include "stdio.h" #include <stdli ...
- 【C语言入门教程】4.2 二维数组
C 语言允许使用多维数组,即使用多组小标的数组,二维数组是最常用的多维数组.多维数组在内存中存放数据的顺序与一维数组相同,使用连续的存储单元. 4.2.1 二维数组的一般形式 二维数组的一般声明形式为 ...
- C语言程序,找出一个二维数组的鞍点。
什么是鞍点????? 鞍点就是在一个二维数组中,某一个数在该行中最大,然而其在该列中又是最小的数,这样的数称为鞍点. 昨天突然在书上看到这样的一道题,就自己尝试着写了一个找出一个二维数组中的鞍点. 好 ...
- 【C语言】构造长度可变的二维数组
#include <stdio.h> #include <malloc.h> #include <memory.h> int getArray(int ***p,i ...
- 《Java基础知识》一维,二维数组的申明和使用
为什么要使用数组: 因为不使用数组计算多个变量的时候太繁琐,不利于数据的处理. -------- 数组也是一个变量,是存储一组相同类型的变量 声明一个变量就是在内存中划出一块合适的空间 声明一个数 ...
- Java基础系列(39)- 二维数组
多维数组 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组. 二维数组 int a[][]=new int[2][5]; 解析:以上二维数组a可以看成一个 ...
- C语言:通过指针函数输出二维数组中每个学生的成绩
// // main.c // Pointer_function // // Created by ma c on 15/8/2. // Copyright (c) 2015年 bjsxt. ...
- C语言数组:C语言数组定义、二维数组、动态数组、字符串数组
1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...
随机推荐
- Java中局部变量、实例变量和静态变量在方法区、栈内存、堆内存中的分配
转自:https://blog.csdn.net/leunging/article/details/80599282 感谢CSDN博主「leunging」的总结分享 ———————————————— ...
- Linux文件的加压缩解压缩tar命令
linux下使用tar命令 解压 语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用.主选项:c 创建新的档案 ...
- fastadmin编辑内容,有下拉选择关联的内容,自定义的参数去获取相应的下拉内容
1.可以到你的编辑页面中添加自定义条件 data-params='{"custom[shop_id]":"2"}'
- antd源码分析之——标签页(tabs 2.Tabs关键组件功能实现)
由于ant Tabs组件结构较复杂,共分三部分叙述,本文为目录中第二部分(高亮) 目录 一.组件结构 antd代码结构 rc-ant代码结构 1.组件树状结构 2.Context使用说明 3.rc-t ...
- C# Read/Write another Process' Memory
https://codingvision.net/security/c-read-write-another-process-memory Today’s tutorial is about…proc ...
- DataFactory生产手机号码
表中的数据类型是CHAR()类型的,才会出现,如右图的“Build a composite field”的这个功能: 固定部分设置 剩余变化部分设置 操作成功 数据库查询的结果
- vscode通过服务器打开html文件
之前讲到,安装open in brower插件之后可以直接右键选择使用浏览器渲染html文件,但是,这种打开方式是“本地打开方式” 那么我们怎么以服务的方式运行html呢: 1.下载插件:Live S ...
- Pattern Evaluation
对相关性patten质量的常用分析指标有以下这些 其中,X^2 跟 lift不是null-invariant的,也就是说当~A~B项较多时,这两个指标不是很可靠. 据Jiawei Han所言,Kulc ...
- selenium webdriver常用函数
from selenium import webdriver driver = webdriver.Ie(executable_path = "e:\\IEDriverServer" ...
- Python-sympy科学计算与数据处理(求极限及其它功能)
极限 其它功能