Bài này nên chỉnh thế nào, em chỉnh thấy lỗi ở chỗ 28 ngày

switch(t)
{
	case 1:
		{
			n = 31;break;
		}
	case 3:
		{
			n = 31;break;
		}
	case 5:
		{
			n = 31;break;
		}
	case 7:
		{
			n = 31;break;
		}
	case 8:
		{
			n = 31;break;
		}
	case 10:
		{
			n = 31;break;
		}
	case 12:
		{
			n = 31;break;
		}
	case 4:
		{
			n = 30;break;
		}
	case 6:
		{
			n = 30;break;
		}
	case 9:
		{
			n = 30;break;
		}
	case 11:
		{
			n = 30;break;
		}
	case 2:
		if(y%4==0 &&(y%100!=0 || y%400==0)) { n = 29;}
		else n = 28;
		break;

Năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100.
Phần if sửa lại (y%400 == 0 || (y%4==0 & & y%100!=0)
Ngoài ra, switch case của bạn dài quá
Chỉ cần thế này:

switch(t) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
         n = 31;
         break;
     
//tháng 30 ngày tương tự
} 
4 Likes

Mục đích của switch - case được sinh ra là vậy. Lựa chọn giá trị riêng biệt, không kiểu như a >=0 && a<= 12.

Làm như bạn @quan01 thì dùng if - else cho xong. :roll_eyes:

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