如何在数组中找到最小和次小的数
发布网友
发布时间:2022-05-14 05:07
我来回答
共1个回答
热心网友
时间:2024-03-14 15:15
在C语言中,数组就像一辆有很多节的火车,车厢中,装载了很多相同的货物.这里,"车厢"中装满了很多int类型的整数.
火车快进站了,列车长想让我这个小小的列车员清点下哪辆车厢装的货最少(数据最小),哪辆车厢装的货第二少(数据次小)!! 于是我加快了调动我的CPU,计算出了结果.大致思路如下:
首先:先设置两个数 min1, min2. 让他们分别等于INT_MAX;
其次:通过循环,先比较min1与每个数组成员的大小. 然后并且比较min2与每个数组成员的大小.
代码如下:
#include
#include
void ReadData2(int arr[], int num)
{
int i;
for(i = 0; i < 10; i++)
{
scanf("%d", arr + i); //arr退化为指针
}
}
void work2(int arr[], int num)
{
//假设 min1是最小的数, min2是次小的数
int i, min1 = INT_MAX, min2 = INT_MAX;
for(i = 0; i < num; i++)
{
if(min1 > arr[i])
{
min2 = min1;
min1 = arr[i]; //确保 min1为最小的值
}
else if(min1 == arr[i])
{
continue; //结束本次循环(只对循环起作用) 避免min1和min2相同.
}
else if(min2 > arr[i])
{
min2 = arr[i];
}
}
printf("min1 = %d, min2 = %d\n", min1, min2);
}
void main()
{
int arr[10];
ReadData2(arr, 10);
work2(arr, 10);
}