C语言基础练习——最大值及其位置(二维数组)

时间限制: 1 Sec  内存限制: 10 MB

题目描述

有一个n×m的矩阵,要求编程序求出: 
每行元素的最大值,以及其所在的行号和列号。求出所有元素的最大值,以及其所在的行号和列号。

输入

先输入n,m (2<=n<=100,2<=m<=100) 
在输入矩阵中各元素的值。(假设为整型数)

输出

先输出每行元素的最大值的下标及其值,每个占一行; 
再输出所有元素的最大值的下标及其值。

样例输入 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语言基础练习——最大值及其位置(二维数组)的更多相关文章

  1. Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  2. c语言题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点

    //题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小.也可能没有鞍点. // #include "stdio.h" #include <stdli ...

  3. 【C语言入门教程】4.2 二维数组

    C 语言允许使用多维数组,即使用多组小标的数组,二维数组是最常用的多维数组.多维数组在内存中存放数据的顺序与一维数组相同,使用连续的存储单元. 4.2.1 二维数组的一般形式 二维数组的一般声明形式为 ...

  4. C语言程序,找出一个二维数组的鞍点。

    什么是鞍点????? 鞍点就是在一个二维数组中,某一个数在该行中最大,然而其在该列中又是最小的数,这样的数称为鞍点. 昨天突然在书上看到这样的一道题,就自己尝试着写了一个找出一个二维数组中的鞍点. 好 ...

  5. 【C语言】构造长度可变的二维数组

    #include <stdio.h> #include <malloc.h> #include <memory.h> int getArray(int ***p,i ...

  6. 《Java基础知识》一维,二维数组的申明和使用

    为什么要使用数组: 因为不使用数组计算多个变量的时候太繁琐,不利于数据的处理. --------   数组也是一个变量,是存储一组相同类型的变量 声明一个变量就是在内存中划出一块合适的空间 声明一个数 ...

  7. Java基础系列(39)- 二维数组

    多维数组 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组. 二维数组 int a[][]=new int[2][5]; 解析:以上二维数组a可以看成一个 ...

  8. C语言:通过指针函数输出二维数组中每个学生的成绩

    // //  main.c //  Pointer_function // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年 bjsxt. ...

  9. C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

    1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...

随机推荐

  1. poj1737

    Connected Graph POJ - 1737 An undirected graph is a set V of vertices and a set of E∈{V*V} edges.An ...

  2. nginx变量与实列

    nginx内置变量 内置变量存放在  ngx_http_core_module 模块中,变量的命名方式和apache 服务器变量是一致的.总而言之,这些变量代表着客户端请求头的内容,例如$http_u ...

  3. Codeforces 1238E. Keyboard Purchase

    传送门 注意到 $m$ 只有 $20$ ,考虑一下状压 $dp$ 设 $f[S]$ 表示当前确定的字符集合为 $S$ ,那么转移就考虑从最右边加入的下一个字符 $c$ 那么问题来了,代价如何计算 考虑 ...

  4. 关于centos6版本执行程序报错:libc.so.6: version GLIBC_2.14 not found的解决

    执行后程序报错: libc.so.6: version GLIBC_2.14 not found 这种情况是因为当前服务器glibc的版本比较低造成的(不出意外是glibc_2.12是最高版本): 1 ...

  5. Java核心复习 —— ArrayList源码阅读

    一.ArrayList 介绍 ArrayList是List接口可变数组的实现. 特点 非线程安全 查找和修改效率高 二.ArrayList 使用方法 remove元素 @Test public voi ...

  6. 数据结构-用C++实现一个二叉树,递归方法中序遍历

    1:二叉排序树,又称二叉树.其定义为:二叉排序树或者空树,或者是满足如下性质的二叉树. (1)若它的左子树非空,则左子树上所有节点的值均小于根节点的值. (2)若它的右子树非空,则右子树上所有节点的值 ...

  7. Ubuntu桌面版与服务器版的区别(转)

    Ubuntu桌面版vs服务器版 提到安装Linux,Ubuntu可谓是最受欢迎的.为了满足每个人的需求,出现了不少版本或风格的Ubuntu:其中两项便是桌面版与服务器版.只要发布版本号一致,这两者从核 ...

  8. docker crontab踩坑记录

    环境,docker centos7.4 容器启动时注意两点 入口要设置/usr/sbin/init,并且配置主机完全访问权限(--privileged) (否则执行service的时候会出现Faile ...

  9. gitolite 代码访问控制

    gitolite可用于代码访问控制,这里汇总一下git相关的内容. git quick start:创建git仓库 TortoiseGit:可视化git操作 egit eclipse插件:新版的IDE ...

  10. Linux dd烧写系统

    虽然用dd指令烧写系统很简单,但是久而久之忘得也太快了,赶紧整理一下. .img 系统镜像 .iso U盘启动引导文件 1. 先来查看本机磁盘情况,打开Linux终端界面(快捷键Ctrl + Alt ...