Điểm các bạn trong lớp

Đề bài 1: Nhập vào danh sách điểm của các bạn trong lớp. In ra màn hình điểm lớn nhất 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.

Đề bài 2: Nhập vào danh sách điểm của các bạn trong lớp. In ra màn hình mã (vị trí) của các bạn có điểm lớn nhất trong lớp

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.

Bài tập 1: Nhập vào danh sách điểm của các bạn trong lớp. In ra màn hình mã (vị trí) của các bạn có điểm tấp nhất
Bài tập 2: Nhập vào danh sách điểm của các bạn trong lớp. In ra màn hình mã (vị trí) của các bạn có điểm lớn hơn điểm trung bình của cả lớp