Vấn đề về tìm 3 số lớn nhất trong C

#include <stdio.h>

int main() {
	int a, b, c;
	scanf("%d%d%d", &a, &b, &c);

	if (a >= b && a >= c) {
		printf("%d", a);
	} else if (b >= c) {
		printf("%d", b);
	} else {
		printf("%d", c);
	}
	return 0;
}

Đề bài: Viết chương trình nhập từ bàn phím 3 số nguyên. Sau đó hiển thị lên màn hình số lớn nhất trong 3 số này.
Các Bác cho em hỏi là dòng lệnh “if (a >= b && a >= c)” và “else if (b >= c)” trong đoạn lệnh phía trên thì tại sao phải lấy dấu “>=” vậy ạ. Em thay dấu >= thành dấu “>” thì kết quả vẫn đúng.
Em cảm ơn

1 Like

theo như cách bạn hỏi thì code này không phải bạn viết (hoặc đại khái không phải bạn nghĩ ra)
lập trình là giải quyết vấn đề, miễn sao giải quyết đúng là được

4 Likes

Đúng rồi ạ, trong lời giải bài tập em thấy khác với cách em giải, nhưng em không hiểu vì sao nó lại có dấu “>=” như thế thôi

1 Like

Đây là vấn đề ngữ nghĩ
Số lớn nhất trong 3 số là số lớn hơn 2 số còn lại
Số lớn nhất trong 3 số là số không nhỏ hơn 2 số còn lại
Bài toán này chấp nhận cả 2 định nghĩ trên, nhưng nếu bài toán nói 5 5 4 không có số lớn nhất vì không có số nào lớn 2 số còn lại thì lời giải bên trên sai (và thậm chí là phải viết code khác)

5 Likes

Bài toán có tên chuẩn là "Tìm giá trị lớn nhất của 3 số được nhập vào từ bàn phím"
Ngay tên bạn đặt câu hỏi đã k chuẩn cho lắm r.
Còn phần trả lời thì giống câu trả lời của @kisuluoibieng đó.

Còn đây là code trong quyển Giáo trình Kỹ thuật lập trình C căn bản & Nâng cao của Phạm Văn Ất sử dụng hàm.

#include <stdio.h>

float max3s(float a, float b, float c);

int main(){

	float x, y, z;	
	scanf("%f%f%f", &x, &y, &z);	
	
	printf("Max 3 so la: %f", max3s(x, y, z));	
	
	return 0;
}

float max3s(float a, float b, float c){
	float max;
	max = a > b ? a : b;
	return (max > c ? max : c);
}

thực ra code này mình cũng sửa đôi chút đi r. nó k còn giữ nguyên bản gốc.
bản gốc cho phép kiểm tra nhiều bộ 3 số nhập vào sử dụng câu lệnh bước nhảy vô điều kiện goto.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?