Điểm các bạn trong lớp
Dựa vào đề bài ta có thể xác định đây là bài toán tìm số lớn nhất trong mảng (đã từng nêu ở bài tìm số lớn nhất).
Để làm bài này, trước tiên chúng ta cần phải nhập được danh sách điểm – tức là nhập mảng. Muốn nhập mảng chúng ta cần biết số lượng phần tử của mảng. Sau đó tìm phần tử lớn nhất là xong. Tuy nhiên chú ý điểm của mỗi người là một số thực, nên chúng ta dùng kiểu float.
/* * Input list of socre of students. Out put max score of list */ #include <stdio.h> int main() { int n; // number student - size of array printf("Enter number student: "); scanf("%d", &n); float s[n], max; // array socre int i; // input array score for(i = 0; i < n; i++) { printf("Enter socre of student %d : ", (i + 1) ); scanf("%f", &s[i]); } // find max max = s[0]; for(i = 1; i < n; i++) { if( max < s[i] ) { max = s[i]; } } printf("Max of list score is %.2f\n", max); return 0; }
Trong code trên các bạn chú ý việc mình gán giá trị ban đầu cho biến max trước khi tìm kiếm. Tại sao không gán max = 0 hay bằng -1 hay một số nào khác mà lại là s[0] – phần tử đầu tiên trong mảng? Các bạn suy nghĩ nếu gán max = 0 hoặc bằng -1 thì bài này không sao cả, vì điểm của mỗi người đều từ 0 trở lên nên kiểu gì cũng sẽ tìm đúng. Nhưng ở trong bài khác, mảng mà có số âm thì tìm max chưa chắc đúng. Giả sử ban đầu gán max = 0 hay -1. Khi nhập mảng lại toàn các số âm nhỏ hơn -1 hay 0 thì khi tìm sẽ bị sai, max sẽ luôn không đổi.
Với bài này nó nâng cấp hơn bài trước chút. Ngoài việc chúng ta tìm điểm lớn nhất, chúng ta còn cần tìm những người (vị trí những người) có cùng chung điểm cao nhất. Có thể có 1, 2, 3 hoặc nhiều người có cùng điểm lớn nhất.
/* * Input list of socre of students. Out put max score of list */ #include <stdio.h> int main() { int n; // number student - size of array printf("Enter number student: "); scanf("%d", &n); float s[n], max; // array socre int i; // input array score for(i = 0; i < n; i++) { printf("Enter socre of student %d : ", (i + 1) ); scanf("%f", &s[i]); } // find max max = s[0]; for(i = 1; i < n; i++) { if( max < s[i] ) { max = s[i]; } } printf("Max of list score is %.2f\n", max); // find all student have max score printf("List index of student have max score:\n"); for(i = 0; i < n; i++) { if(s[i] == max) { printf("%d ", (i + 1) ); } } return 0; }
Sau bài viết này, rất mong các bạn có thể áp dụng vào các ý tưởng thực tế về ứng dụng của mảng, của các bài đơn giản trong công việc hàng ngày.
Phản hồi gần đây