Bài tập lập trình về câu lệnh if

Cho mình hỏi, đoạn code này bị lỗi chỗ nào mà mỗi lần chạy chương trình là chỉ nhập được mỗi họ tên là nó tự chạy tiếp chứ không dừng để mình nhập tiếp ạ.

#include<stdio.h>
#include<conio.h>

void main()
{
	float T, L, H, TB;
	char HTen;
	printf("Nhap ho va ten hoc sinh\n");
	scanf_s("%c", &HTen);
	printf("Nhap diem Toan \n");
	scanf_s("%f", &T);
	printf("Nhap diem Ly \n");
	scanf_s("%f", &L);
	printf("Nhap diem Hoa \n");
	scanf_s("%f", &H);
	TB = (T + L + H) / 3;
	printf("Diem trung binh 3 mon = %f", TB);
	if (TB >= 9.0) printf("Hoc sinh xuat xac");
	else
	{
		if (TB >= 8.0 && TB < 9.0) printf("Hoc sinh gioi");
		else
		{
			if (TB >= 6.5 && TB < 8.0) printf("Hoc sinh kha");
			else
			{
				if (TB >= 5.0 && TB < 6.5) printf("Hoc sinh trung binh");
				else
				{
					if (TB >= 3.0 && TB < 5.0) printf("Hoc sinh yeu");
					else
					{
						if (TB < 3.5) printf("Hoc sinh kem");
					}
				}
			}
		}
	}
	_getch();

}

Chỗ kia bạn để kiểu char HTen. Kiểu char chỉ nhận duy nhất một kí tự vậy nên khi nhập vào tên (VD: Duy Le) thì nó chỉ nhận mỗi chữ D thôi, còn chữ khác thì nó sẽ nhập vào biến T L H => Tính điểm luôn.
Bây giờ bạn thử sửa thành sử dụng mảng (để lưu trữ đươc nhiều chữ ạ).

char a[20];
gets(a);

cú pháp in ra giống mảng nhưng có thêm một hàm cần nhớ đó là strlen(a) (Chính là số chữ nhập vào ạ)

for(int i=0; i<strlen(a); i++)
     printf("%c", &a[i]);
1 Like

Cảm ơn bạn để mình thử

Nếu mình không dùng strlen(a) thì dùng cách khác được không bạn

Chuỗi thì đừng dùng scanf printf, dùng fputs fgets nhé :slight_smile:

1 Like

mình chịu, mấy cái đó chưa được học :((

Không dùng thì dính space :slight_smile:

:(((( mới học chưa biết gì

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