永发信息网

如何在数组中找到最小和次小的数

答案:1  悬赏:20  手机版
解决时间 2021-01-22 00:45
  • 提问者网友:你挡着我发光了
  • 2021-01-21 02:00
如何在数组中找到最小和次小的数
最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-01-21 02:47
在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);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯