c++输入一个5行5列的二维数组,求最大值和最小值其对应行列的位置。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++输入一个5行5列的二维数组,求最大值和最小值其对应行列的位置。。相关的知识,希望对你有一定的参考价值。

没有一点逻辑啊,请大神用 #include<iostream.h> 些尽简单的语句来写,怕看不懂··

自己写的 但是不对劲啊。没学C直接C++了。
#include<iostream.h>

void main()


int i;
int j;
int max;
int min;
int row;
int col;
int a[5][5]=1,2,3,4,5,2,3,4,5,6,,3,4,5,6,7,4,5,6,7,8,5,6,7,8,9;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]>max)
max=a[0][0];
max=a[i][j];
row=i;
col=j;
cout<<"max:"<<max;

min = a[0][0];
row=0;col=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]<min)

min=a[i][j];
row=i;
col=j;
cout<<"min:"<<min;


using System;

class Program

static void Main(string[]args)

int[,]array=new int[4,4];

int i,j,k;

int max,min,max_row,max_col,min_row,min_col,sum=0;

string str1,str2="";

Console.WriteLine("请输入五行数据,每行五个数据,以空格隔开,每行输入完之后回车(输入格式不对会出错):");

for(i=0;i&lt;4;i++)

str1=Console.ReadLine();

j=0;

k=0;

while(j&lt;str1.Length)

if(str1[j]!='')

str2+=str1[j];

else

array[i,k++]=int.Parse(str2);

str2="";

j++;

array[i,k]=int.Parse(str2);

str2="";

max=min=array[0,0];

max_row=max_col=1;

min_row=min_col=1;

for(i=0;i&lt;4;i++)

for(j=0;j&lt;4;j++)

if(max&lt;array[i,j])

max=array[i,j];

max_row=i+1;

max_col=j+1;

if(min&gt;array[i,j])

min=array[i,j];

min_row=i+1;

min_col=j+1;

for(i=0;i&lt;4;i++)

sum+=array[i,i];

Console.WriteLine("最大数为:0,位置是:第1行,第2列",max,max_row,max_col);

Console.WriteLine("最小数为:0,位置是:第1行,第2列",min,min_row,min_col);

Console.WriteLine("对角线上的元素之和为:0",sum);

return0;

扩展资料:

return的用法:

return的作用是结束正在运行的函数,并返回函数值。return后面可以跟一个常量,变量,或是表达式。

函数的定义一般是这样的,例如:

inta(inti)//第一个int是函数的返回值的类型,也就是return后面跟的值的类型,a是函数的名称,括号里的是传递给函数的参数,int是参数的类型,i是参数的名字

...//省略函数体内容

returnb;//b必须与函数头的返回值一致(此处为int型)

简单函数举例:

参考技术A #include <iostream>
using namespace std;

int main()

    int a[5][5];
    for (int row = 0; row < 5; row++)
        for (int col = 0; col < 5; col++)
            scanf("%d", &a[row][col]);
    int max, min, maxRow, maxCol, minRow, minCol;
    max = min = a[0][0];
    for (int row = 0; row < 5; row++)
        for (int col = 0; col < 5; col++)
        
            if (a[row][col] > max)
            
                max = a[row][col];
                maxRow = row;
                maxCol = col;
            
            if (a[row][col] < min)
            
                min = a[row][col];
                minRow = row;
                minCol = col;
            
        
    cout << "max: " << max << ", row: " << maxRow << ", col: " << maxCol << endl;
    cout << "min: " << min << ", row: " << minRow << ", col: " << minCol << endl;
    return 0;

参考技术B #include<iostream.h>

void main()


int i;
int j;
int a[5][5]=1,2,3,4,5,2,3,4,5,6,,3,4,5,6,7,4,5,6,7,8,5,6,7,8,9;
//最大最小先初始为第一个元素
int max = a[0][0];
int min = a[0][0];
int min_row = 0;
int min_col = 0;
int max_row = 0;
int max_col = 0;

for(i = 0; i < 5; ++i)

for(j = 0; j < 5; ++j)

if(a[i][j] > max)

max = a[i][j];
max_row = i;
max_col = j;


if(a[i][j] < min)

min = a[i][j];
min_row = i;
min_col = j;





cout<<"最小值是a["<<min_row<<","<<min_col<<"]值为"<<min<<endl;
cout<<"最大值是a["<<max_row<<","<<max_col<<"]值为"<<max<<endl;

本回答被提问者采纳
参考技术C 一个循环就能搞定的事情,非得用两个循环。看来很多人从来不关心算法的复杂度啊!追问

怎么一个循环搞定啊? 不懂

怎样求一个二维数组元素之和以及二维数组元素的最小值及下标

这里需要用到指针,可以用到地址法(a[i]+j这样的)或者指针(ptr++这种)来输入输出二维数组的各个元素,然后求和最小值 假设二维数组下标为0的元素最小和用指针指向该元素,后续的元素和其比较,若还有更小的则替换 然后输出其值和对应的指针 指针所指地址为其下标所指地址 参考技术A 类似题目二维数组在内存中是按行存放,假定我们定义二维数组和指针如下:
int a[3][4],* p = a[0];
则指针p就指向二维数组。其在内存的存放情况如图6 - 11所示。
从上述存放情况来看,若把二维数组的首地址传递给指针p,则映射过程如图6 - 11所示。我们只要找到用p所表示的一维数组中最大的元素及下标,就可转换为在二维数组中的行列数。 #include<stdio.h>
main( )

int a[3][4],*ptr,i,j,max,maxi,maxj;
/ * max 是数组的最大, maxi 是最大元素所在行, maxj 是最大元素所在列* /
for(i = 0; i < 3; i ++)
for(j = 0; j < 4; j ++)
scanf("%d", &a[i][j]);
ptr = a[0]; / * 将二维数组的首地址传递给指针变量* /
max_arr(ptr, &max, &maxi, 12);
maxj = maxi % 4; / * 每行有四个元素,求该元素所在列* /
maxi = maxi / 4; / * 求该元素所在行* /
printf("max=%d,maxi=%d,maxj=%d",max,maxi,maxj);

int max_arr(b,p1,p2,n)
int *b,*p1,*p2,n;
/ * b 指向二维数组的指针, p1指向最大值,p2 指向最大值在一维数组中的位置, * /
/ * n 是数组的大小* /

int i;
*p1=b[0]; *p1=0;
for(i = 1; i < n; i++) / * 找最大* /
if (b[i]>*p1)

*p1=b[i]; *p2=i;


运行程序:
4 7 8 9
3 7 9 3
1 5 2 6
max=9, maxi=0,maxj=3

以上是关于c++输入一个5行5列的二维数组,求最大值和最小值其对应行列的位置。。的主要内容,如果未能解决你的问题,请参考以下文章

编写程序,求一个二维数组(5行5列)中每行的最大值和每行的和。 帮忙看看哪错了呗,谢谢啦

C++信奥赛题目——计算鞍点

c语言 输入五行六列的数组,求最大值

matlab中如何求矩阵的最大值和最小值?

Java求解! 定义一个6行6列的二维整型数组,输出该二维数组中的每行和每列的最大值、最小值、和平均值。

作业-----二维整型数组求最大最小值简单改进