300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C语言中二维数组靶点的查找(一行内最大 一列内最小)

C语言中二维数组靶点的查找(一行内最大 一列内最小)

时间:2021-10-28 14:08:16

相关推荐

C语言中二维数组靶点的查找(一行内最大 一列内最小)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言关于C语言中二维数组查找靶点的问题 一、靶点是什么?二、算法设计1.思考如何找到该二维数组的靶点2.读入数据

前言

关于C语言中二维数组查找靶点的问题

提示:以下是本篇文章正文内容,下面案例可供参考

一、靶点是什么?

举例:假设有一个二维数组 如果该数组的一个位置是此行最大并且为此列最小的元素,我们把这样的数据位置称之为靶点。

二、算法设计

1.思考如何找到该二维数组的靶点

通过之前对于二维数组的学习我们不难发现当查找每一行或者每一列中最大最小的元素,可以通过两个循环轻松实现。我们也可以用这种方法来实现靶点的查找:

即从数组的第0行开始搜寻该行最大元素的位置,记录下该行最大元素的列,然后以该列为定位,从最小行到最大行依次搜寻最小元素的位置。如果搜索完成后,列最小元素的行地址正好等于搜索最大元素的行地址即可说明该元素为一个靶点。

2.读入数据

代码如下(示例):

int x[10][10], i, j, k;int Max, Min, n, m, a1=0, a2=0;printf("输入矩阵的行与列");scanf("%d%d", &n, &m);for ( i = 0; i < n; i++){for ( j = 0; j < m; j++){scanf("%d", &x[i][j]); //代码读入部分}}for ( i = 0; i < n; i++)//进行二维数组行的依次遍历{a1 = 0; Max = x[i][a1];for ( j = 1; j < m; j++) //找到最大元素的列下标{if (x[i][j]>Max){a1 = j;}}a2 = i; Min = x[i][a1]; //根据找到列元素的下标 进行行元素遍历for ( k = 0; k < 3; k++){if (x[k][a1]<Min){a2 = k;}}if (a2==i) //如果遍历后仍然符合靶点条件则输出靶点元素{printf("已找到靶点为%d,行:%d 列:%d", x[a2][a1], a2, a1);}}# 总结注意每次进入行列元素时,a1 a2必须先被赋予初值,否则如果该元素就是符合条件的,可能循环中的条件一次也没被触发从而不能达到程序的预期效果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。