Viết chương trình C để tìm phần tử lớn thứ 2 trong mảng

Các bước thực hiện để viết chương trình C:

1. Nhập vào kích thước của mảng size ==> tạo mảng ngẫu nhiên arr gồm size phần tử ==> in mảng ra màn hình

2. Khai báo hai biến max1 và max2 để lưu phần tử lớn thứ nhất và phần tử lớn thứ hai. Gán max1 và max2 bằng giá trị số nguyên tối thiểu trong cả hai: max1 = max2 = INT_MIN.

3. Lặp qua tất cả các phần tử mảng: for(i=0; i<size; i++). Bên trong vòng lặp:

  • Kiểm tra xem phần tử mảng hiện tại arr[i] có lớn hơn max1 hay không, thì gán max2=max1 và max1 = arr[i].
  • Trường hợp ngược lại, nếu (arr[i] > max2 và arr[i] < max1) thì max2 = arr[i].

3. In ra phần tử lớn nhất và phần tử lớn thứ 2

Code tham khảo của chương trình C:

#include <stdio.h>
#include <limits.h> // For INT_MIN
#include <stdlib.h> //For rand()

#define MAX_SIZE 1000 // Maximum array size

int main()
{
int arr[MAX_SIZE], size, i;
int max1, max2;

/* Input size of the array */
printf("Enter size of the array (1-1000): ");
scanf("%d", &size);

/* Create a random array */
for(int i=0; i<size; i++)
{
arr[i] = rand()%100 + 1;
}
/* Print array */
printf("The array : ");
for(int i=0; i<size; i++)
printf("%d ", arr[i]);

max1 = max2 = INT_MIN;
/* Check for first largest and second */
for(i=0; i<size; i++)
{
if(arr[i] > max1)
{
max2 = max1;
max1 = arr[i];
}
else if(arr[i] > max2 && arr[i] < max1)
{
max2 = arr[i];
}
}

printf("First largest = %d\n", max1);
printf("Second largest = %d", max2);

return 0;
}