Viết chương trình kiểm tra giá trị lớn thứ hai của mảng một chiều ? Đây là một bài tập khá hay :D, nó không chỉ giúp chúng ta làm quen với mảng. Mà còn ôn lại kiến thức sử dụng câu lệnh if else , vòng lặp for câu lệnh continue và kĩ thuật gán biến để xử lý bài toán. Nhìn qua thì bài này có vẻ khá dễ nhưng nếu chọn cách khó thì nó lại khó. Vậy nên mình sẽ bỏ qua cách khó và chọn cách dễ để giải :D. Mình xin được bắt đầu bài viết.
Bạn vui lòng xem bài hướng dẫn chi tiết và đầy đủ hơn tại đây: Tìm số lớn thứ 2 trong mảng một chiều
Bài toán tìm giá trị lớn thứ hai của mảng một chiều
Đề bài: Trên ngôn ngữ lập trình C , hãy nhập vào một mảng gồm n phần tử Hãy viết chương trình tìm giá trị lớn thứ 2 của mảng vừa nhập và in kết quả ra màn hình.
Xác định input output:
input: Nhập n = 3 vậy mảng có 3 phần tử nhập mang[0] = 1 mang[1] = 2 và mang[3] = 3
output: 2
Ý tưởng :
- Khởi tạo một biến max gán giá trị cho nó bằng 0
- Sử dụng một vòng lặp for để kiểm tra điều kiện của n > 0 và nhập giá trị cho mảng
- Tiếp tục sử dụng vòng lặp for và câu lệnh if để lấy ra giá trị lớn nhất của mảng
- Sau đó khởi tạo một biến max2 gán giá trị cho nó bằng 0
- Tiếp tục sử dụng vòng lặp for và câu lệnh if else để bỏ max bằng câu lệnh continue và tìm ra max2
Nó khác với bài tìm thằng to nhất là tạo thêm thằng to thứ 2 , tìm được thằng to nhất bỏ nó đi sau đó tìm thằng to thứ 2.
Ok chỉ vậy thôi, bây giờ mình sẽ code và chú thích chi tiết ngay ở dưới.
#include<conio.h> #include<stdio.h> int main(){ int mang[30]; int n; int max = 0; int max2 = 0; printf("Nhap so phan tu cua mang: "); scanf("%d",&n); for(;n <= 0;) { printf("n phai > 0 n"); printf("Nhap lai n:"); scanf("%d",&n); } // Kiem tra dieu kien cua n printf("Nhap gia tri cua mang:n"); for(int i = 0; i < n; i++) { printf("a[%d]: ",i); scanf("%d",&mang[i]); } // Nhap gia tri cua mang for(int i = 0; i < n; i++){ if(max < mang[i]) { max = mang[i]; } } // Gan gia tri lon nhat cua mang cho max for(int i = 0; i < n; i++){ if(max == mang[i]) { continue; } else if(max2 < mang[i]){ max2 = mang[i]; } } // Gan gia tri lon hai cua mang cho max2 printf("Output:%d",max2); return 0; }
Xem thêm bài viết về C/C++ tại đây
Để lại một bình luận