下标"/>
C语言求数组最小值,并返回下标
#include<stdio.h>
#include<string.h>
void main()
{int a[] = {12,5,21,33,55,77,11,2};int zf = sizeof(a) / sizeof(a[0]);for (int i = 0; i < zf; i++){if (a[i] < a[0]){a[0] = a[i];}}printf("最小为%d,下标是0",a[0]);
}
如果是求最小值的情况,不保证元素丢失情况,可以采用这种方法。将所有数与第一个数比较,如果比第一个数小,就把这个数付给a[0],那么最小值的下标一定是0。可是这样的话a[0]一开始的值就被覆盖了。
最好还是定义一个变量min,初始化时将a[0]赋给min。然后进行比较。这样达到查找的效果,元素也不会丢失。
下面给一个例子:
#include<stdio.h>
#include<string.h>
void main()
{int a[2][4] = { {12,5,21,33},{55,77,11,2} };int zf = sizeof(a) / sizeof(a[0][0]);int row_len = sizeof(a)/sizeof(a[0]);int col_len = zf / row_len;int min = a[0][0];int i=0, j=0,row,col;for ( i = 0; i < row_len; ++i){for (j = 0; j < col_len; ++j){if (a[i][j] < min){min = a[i][j];row = i;col = j;}}}printf("最小为%d,下标是%d,%d\n", min, row, col);
}
这里要注意的是,输出下标时,当退出for循环时,如果输出i,j的话,会输出2,4。这是因为for循环是先判断条件满足之后,并将循环体执行完后,再执行自增(i++或者++i),所以我这里采用将值赋给变量row,col保存。
更多推荐
C语言求数组最小值,并返回下标
发布评论