提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言关于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必须先被赋予初值,否则如果该元素就是符合条件的,可能循环中的条件一次也没被触发从而不能达到程序的预期效果。