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

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

题目描述

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

输入

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

输出

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

样例输入 Copy

  1. 3 4
  2. 1 2 3 4
  3. 10 11 12 13
  4. 3 4 5 6

样例输出 Copy

  1. 0 3 4
  2. 1 3 13
  3. 2 3 6
  4. 1 3 13
  5.  
  6. (思路和下面的代码对照着看)

    我的思路是定义a[100][100]用于输入数据。
    定义b[101][2]用于记录每行最大值所在的行号和列号,比如a[1][2],行号是1,列号是2

    你可能注意到了我写的是b[101][2]而不是b[100][2],因为我把数组最大值的行号和列号放到了最后
    比如有100行数据,那么b[101][0]和b[101][1]保存的就是数组最大值的行号和列号
  7. 先用一个nxm的循环输入数据
  8. 然后for循环i0n-1,找每一行的最大值。
    先假定每行的行首是最大值max=a[i][0],那么行号是i,保存到b[i][0],列号是0,保存到b[i][1]
    嵌套一个for循环k1n-1,让maxa[i][1]……a[i][n-1]比较,如果max<a[i][k],则修改max及其行号列号
    嵌套循环结束后输出本行最大值及其行号列号
  9. 最后来一个for循环i0n-1,找数组的最大值
    这里我先把每行最大值行号和列号取了出来,如果我写在一起可能看这篇文章的人就看不懂了
    如果直接写就是这样,a[b[i][0]][b[i][1]],就是代码中的a[x][y]
    先假定数组最大值是第一行的最大值,然后让其他行最大值与之比较,如果maxmax<a[x][y],则修改maxmax及其行号列号
    程序最后输出数组最大值及其行号列号
  10. 下面是实现代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a[][],b[][];
  5. int n,m,i,k;
  6. scanf("%d%d",&n,&m);
  7. for(i=; i<n; i++)
  8. {
  9. for(k=; k<m; k++)
  10. {
  11. scanf("%d",&a[i][k]); //输入
  12. }
  13. }
  14. for(i=; i<n; i++) //找每行最大值
  15. {
  16. int max=a[i][]; //假定行首为最大值
  17. b[i][]=i; //行首行号
  18. b[i][]=; //行首列号
  19. for(k=; k<m; k++)
  20. {
  21. if(max<a[i][k])
  22. {
  23. max=a[i][k]; //修改第i行最大值
  24. b[i][]=k; //行内最大值,只有列号变化
  25. }
  26. }
  27. printf("%d %d %d\n",b[i][],b[i][],max); //输出第i行最大值及其行号列号
  28. }
  29. int maxmax; //整个数组的最大值
  30. for(i=; i<n; i++)
  31. {
  32. int x=b[i][]; //第i行最大值的行号
  33. int y=b[i][]; //第i行最大值的列号
  34. if(i==) //第0行
  35. {
  36. maxmax=a[x][y]; //假定第0行最大值为数组最大值
  37. b[n][]=; //行号
  38. b[n][]=; //列号
  39. }
  40. else //其他行
  41. {
  42. if(maxmax<a[x][y])
  43. {
  44. maxmax=a[x][y]; //修改数组最大值
  45. b[n][]=x; //行号
  46. b[n][]=y; //列号
  47. }
  48. }
  49. }
  50. printf("%d %d %d",b[n][],b[n][],maxmax); //输出数组最大值及其行号列号
  51. return ;
  52. }
  1.  

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. 数据结构实验之栈与队列一:进制转换(SDUT 2131)

    题目链接 题解: 特判一下n==0的时候. #include <bits/stdc++.h> using namespace std; int a[1000]; int main() { ...

  2. thinkphp6下载安装与配置图文详细讲解教程(composer下载安装)

    thinkphp6发布也有一段时间了,相对来说比较稳定,是时候学习一下thinkphp6框架,提前学习,到正式发布的时候,可以直接拿来做正式的项目,先人一步.thinkPHP6.0在5.1的基础上对底 ...

  3. 关于使用express作为spa应用服务的问题

    前端工程师应该知道,spa是基于前端路由的单页面应用,如果服务端不做相应的配置,会经常出现404的问题. 一般的做法是默认返回应用的首页. express // 安装相关依赖 npm install ...

  4. Leetcode题目139.单词拆分(动态规划-中等)

    题目描述: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词.你可以假设字典 ...

  5. Jinja2学习

    模板: 知名模板引擎:jinja2(flask默认的模板引擎) Mako template模板路径: 1.在渲染模板的时候,会默认从根目录下的templates目录下查找模板文件 2.也可以自定义模板 ...

  6. mapReduce的优化-combiner

    mr的合成器,本质上就是reduce,在map端执行,称之为map端reduce,或者预聚合. 例子: job.setCombinerClass(WordCountCombiner.class);

  7. linux下如何更新当前的容器镜像?

    docker commit <container_id> <container_image_name>

  8. Kotlin中单例Singleton模式

    package loaderman.bar class Singlenton private constructor(){ public var value:Singlenton?=null priv ...

  9. 处理输入为非对角阵的Clustering by fast search and find of density peak代码

    Clustering by fast search and find of density peak. Alex Rodriguez, Alessandro Laio 是发表在Science上的一篇很 ...

  10. 机器学习之DBSCAN聚类算法

    可以看该博客:https://www.cnblogs.com/aijianiula/p/4339960.html 1.知识点 """ 基本概念: 1.核心对象:某个点的密 ...