C 语言查找数组中第二大数的程序

如何编写一个C语言程序来查找数组中的第二大数并附带示例?在开始这个第二大数示例之前。

C 语言查找数组中第二大数的程序

这个查找第二大数的程序会要求用户输入数组大小、数组元素和搜索项的值。接下来,这个程序将使用 For 循环在数组中找到第二大数。

#include <stdio.h>
#include <limits.h>
 
int main()
{
	int arr[50], i, Size;
	int first, second;
	
	printf("\n Please Enter the Number of elements in an array  :  ");
	scanf("%d", &Size);
	
	printf("\n Please Enter %d elements of an Array \n", Size);
	for (i = 0; i < Size; i++)
	{
		scanf("%d", &arr[i]);
    }
	 
	first = second = INT_MIN;  
	   
	for (i = 0; i < Size; i++)
	{
		if(arr[i] > first)
		{
			second = first;
			first = arr[i];
		}
		else if(arr[i] > second && arr[i] < first)
		{
			second = arr[i];
		}	
	}
	printf("\n The Largest Number in this Array =  %d", first);
	printf("\n The Second Largest Number in this Array =  %d", second);
	
	return 0;
}
C Program to find Second largest Number in an Array 1

在这个C语言查找数组中第二大数的程序中,我们声明了一个大小为 10 的一维数组 arr[],并声明了变量 i 来遍历数组元素。请参考 C 语言数组 文章。

以下语句将要求用户输入数组 arr[] 的大小(数组可容纳的元素数量),并将用户输入的值赋给 Size 变量。

printf("\n Please Enter the size of an array \n");
scanf("%d",&Size);

下面的 For 循环 将帮助遍历 a[5] 数组中的每个单元格。for 循环中的条件 (i < Size) 将确保编译器不会超出数组限制。

for 循环内的 C 语言 scanf 语句会将用户输入的值存储到各个数组元素中,例如 arr[0]、arr[1]、arr[2]、arr[3]、arr[4]。

for(i = 0; i < Size; i++)
{
 	scanf("%d",&arr[i]);
}

在下一行,我们还有一个 for 循环,用于遍历数组中的每个元素。 for 循环内的 If 语句 将检查 arr[i] 是否等于搜索项。如果为真,则 Flag 将变为 1 并退出循环(使用 Break 语句)。

for (i = 0; i < Size; i++)
{
	if(arr[i] > first)
	{
		second = first;
		first = arr[i];
	}
	else if(arr[i] > second && arr[i] < first)
	{
		second = arr[i];
	}	
}

从上面的截图可以看出,用户输入的第二大数的值是
a[5] = {10, 90, 80, 90, 80}

第一次迭代: for (i = 0; 0 < 5; 0++)

i 的值为 0,条件 (i < 5) 为真。因此,程序 将开始执行循环内的语句,直到条件失败。

If (arr[i] > Search)  => if(10 > Int_Min) – 条件为真
second = Int_Min
first = 10

第二次迭代: for (i = 1; 1 < 5; 1++)
条件 (1 < 5) 为真。
If (arr[i] > Search)  => if(90 > 10) – 条件为真
second = 10
first = 90

第三次迭代: for (i = 2; 2 < 5; 2++) – 条件 (2 < 5) 为真。

If (arr[i] > Search)  => if(80 > 90) – 条件为假。因此,它将进入 Else If 块。

else if(arr[i] > second && arr[i] < first)

=> else if(80 > 10 && 80 < 90) – 条件为真
second = arr[i] = 80

第四次迭代: for (i = 3; 3 < 5; 3++) – 条件 (3 < 5) 为真。

If (arr[i] > Search)  => if(90 > 90) – 条件为假。因此,它将进入 Else If 块。

else if(arr[i] > second && arr[i] < first) => else if(90 > 80 && 90 < 90)
条件为假

第五次迭代: for (i = 4; 4 < 5; 4++) – 条件 (4 < 5) 为真。

If (arr[i] > Search)  => if(80 > 90) – 条件为假。因此,它将进入 Else If 块。

else if(arr[i] > second && arr[i] < first) => else if(80 > 80 && 80 < 90) – 条件为假

第六次迭代: for (i = 5; 5 < 5; 5++)
条件 (4 < 5) 为假。因此,它将退出 For 循环。

我将尝试使用不同的数组元素来运行这个C语言查找数组中第二大数的程序。

 Please Enter the Number of elements in an array  :  10

 Please Enter 10 elements of an Array 
10 10 10 10 10 -5 -5 -2 10 10

 The Largest Number in this Array =  10
 The Second Largest Number in this Array =  -2