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 2120)

    #include <bits/stdc++.h> using namespace std; struct node { int data; struct node *next; }; st ...

  2. 7.12T1序列

    1.序列 [问题描述] Hzy 得到了一个字符串,这个字符串只有’A’,’G’,’C’,’T’这四种字符,她发现这个 序列中连续 k 个字符可以形成一种新的字符序列,她称这种序列为 Hzy 序列,她现 ...

  3. Django基础之JsonResponse对象

    JsonResponse是HttpResponse的子类, 专门用来生成JSON编码的响应. from django.http import JsonResponse response = JsonR ...

  4. Cannot find ./catalina.sh The file is absent or does not have execute permission This file is nee Linux上tomcat无法正常启动

    上传了个tomcat7的压缩包上linux服务器,解压后,想直接启动,发现报错: Cannot find ./catalina.sh The file is absent or does not ha ...

  5. moveDown()

    这里在判断边界时,判断的是 y == HEIGHT - 1. void moveDown(){ //定义变量存放人物下方的坐标 int dx, dy; //当下方没有元素时,直接return if(y ...

  6. bypass disable_function总结学习

    通常bypass的思路如下 1. 攻击后端组件,寻找存在命令注入的.web 应用常用的后端组件,如,ImageMagick 的魔图漏洞.bash 的破壳漏洞 2. 寻找未禁用的漏网函数,常见的执行命令 ...

  7. 什么叫Closed-form闭式解

    转自百度知道 与数值解对应的是解析解 闭式解closed form solution)也叫解析解(analytical solution),就是一些严格的公式,给出任意的自变量就可以求出其因变量,也就 ...

  8. 黑马lavarel教程---9、缓存操作

    黑马lavarel教程---9.缓存操作 一.总结 一句话总结: legend2项目中自己写的哪些文件操作都可以通过这里的缓存实现,简单方便 1.lavarel中如何使用后端主流的缓存如 Memcac ...

  9. shell 基数数值方法

    shell 下获取数值的结果 1. # expr 1 "+" 2 2. # echo "1+2" |bc 3. # echo $(( 1+3))

  10. git 命令简洁手册

    1.从当前目录初始化 git init 2.对文件进行跟踪 或  将已跟踪的文件放到暂缓区 或 把有冲突的文件标记为已解决状态 git add <file> 3.从现有仓库克隆 git c ...