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 ...
随机推荐
- 7.13 T2 Shit 题(shit)
[题目描述] 某一天,小
- spring boot打包以及centos下部署
spring boot打包以及部署 一.打包 springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成j ...
- lavarel数据库查找别名操作
lavarel数据库查找别名操作 一.总结 一句话总结: 当有表前缀的时候:DB::table('users as table1')->select(DB::raw('table1.id'))- ...
- mongodb 的云数据库产品 atlas 的使用
前言:最近发现 mlab 被mongodb 收购以后,不再支持新用户,推荐使用 MongoDB Atlas 第一步:注册或登陆 在MongoDB atlas首页,如果有账号,那就点击登陆.否则点击Ge ...
- python异常值检验实战2_医美手术价格
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- leetcode94 不同的二叉搜索树
solution 1:**动态规划 class Solution { public: int numTrees(int n) { vector<int> g={1,1,2}; for(in ...
- 框架-Eureka:百科
ylbtech-框架-Eureka:百科 1.返回顶部 1. Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中 ...
- h5 与原生 app 交互的原理
现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次就来捋 ...
- #dokcer部署code-server web版vscode+golang
codercom/code-server:latest不支持插件在线安装 codercom/code-server:v2目前为最新版1. #创建 docker rm -f vscode docker ...
- java数据结构之ConcurrentHashMap
大神博客:https://www.cnblogs.com/study-everyday/p/6430462.html https://baijiahao.baidu.com/s?id=16170899 ...