如何在一个无序的数组里找到最小数(可以有多个),并把最小数下标存到一个数组里。非常感谢!

Python012

如何在一个无序的数组里找到最小数(可以有多个),并把最小数下标存到一个数组里。非常感谢!,第1张

//自认为我的方法会比较适合你。。。。如果喜欢,请采纳。

#include<stdio.h>

#define N 10 //数组大小

#define MAX 100000

void main()

{

int a[N]

int index[N]//存储下标

int i

int j=0//用于下标数组

int n//n个最小值

int min=MAX

printf("请输入%d个整数\n",N )

for( i=0i!=N++i )//输入数据

{

scanf("%d",a+i )

}

for( i=0i!=N++i )//先找到最小的。

{

if( a[i]<min )

min=a[i]

}

for( i=0i!=N++i )//依次找到最小值的下标

{

if( a[i]==min )

{

index[j]=i

++j

}

}

n=j//有n个最小的

printf("最小值为%d,下标是:\n",min)

for( j=0j!=n++j )

printf("%d ",index[j] )

printf("\n")

}

数组是

array = [[1],[2],[3],[0],[1,2],[1,0],[0,1]]

希望排序整个数组,先按照数组 元素个数 ,如果个数相同再 按照首个元素大小

array.sort_by {|a| [a.size, a[0]] }

设计思想:

定义二维数组,并按照题目中的要求初始化。建议使用宏来定义二维数组的大小,这样方便修改二维数组大小,减少维护工数。

分别定义并初始化变量sum和average,用于求和,求平均数

使用双重循环,将二维数组以矩阵形式输出

使用双重循环,求二维数组的和

用3中求出的和,计算平均数

代码:

   #include<stdio.h>#define M 3#define N 3 int main() {        int sum=0        double average=0.0        int a[M][N]//定义二维数组        for (int i=0 i < M i++) {//初始化二维数组                for (int j=0 j < N j++) {                        a[i][j] = i * 2 + j * 3                }        }        //使用双重循环,求二维数组的和        for (int i=0 i < M i++) {                for (int j=0 j < N j++) {                       sum += a[i][j]                        printf("%d ", a[i][j])                }                printf("\n")        }        average = ((double)sum)/(M*N)//计算平均数         printf("sum = %d, average=%lf\n",sum, average)        return 0}   

运行结果:

   0 3 62 5 84 7 10sum = 45, average=5.000000   

备注提醒:

题目中说“每个数组元素的值由a[i][j]=※2+j※3得到”,应该是提问者笔误。此处,建议理解为“每个数组元素的值由a[i][j]=i*2+j*3得到”。