其他分享
首页 > 其他分享> > 第六周学习总结

第六周学习总结

作者:互联网

第六周学习总结


目录


本周我们主要学习了二维数组的相关知识。

二维数组的定义


二维数组的函数引用

我们在之前了解过,在自定义函数中引用一维数组是这样子的:

int func(int a[],int n)
{
  	//...  
}
int main()
{
    ///...
    func(a,n);
    //...
}

​ 那么类似的,在自定义函数中引用二维数组是这样子的:

int func(int a[][列数],int n) //列数不能省!
{
  	//...  
}
int main()
{
    ///...
    func(a,n);
    //...
}

二维数组的应用

L2-3 找鞍点 (20 分)

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入格式:

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

输入样例1:

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

** 输出样例1:**

2 1

输入样例2:

2
1 7
4 1

输出样例2:

NONE

这道题是二维数组大显身手的舞台。我们先找到行上的行最大值,然后在这最小值所在列上寻找列最小值。最后再将其一比较,若最大最小值相同,就找到了。

//参考代码
#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[11][11] = {0};
    for (int i = 0; i < n; i++)        //数据输入
    {
        for (int j = 0; j < n; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }

    for (int i = 0; i < n; i++)       
    {
        int max = a[i][0];
        int maxj = 0;
        for (int j = 0; j < n; j++)    //找最大值
        {
            if (a[i][j] >= max)
            {
                max = a[i][j];
                maxj = j;
            }
        }
        
        int min = max;
        int mini = 0;
        for (int x = 0; x < n; x++)   //找最小值
        {
            if (a[x][maxj] <= min)
            {
                min = a[x][maxj];
                mini = x;
            }
        }
        
        if (max == min)              //比较
        {
            printf("%d %d", i, maxj);
            return 0;
        }
    }
    printf("NONE");
    return 0;
}


标签:总结,学习,...,int,第六周,++,二维,数组,鞍点
来源: https://www.cnblogs.com/zeroize/p/week6.html