Hãy giúp em chỉ ra lỗi sai trong đoạn CODE với. Nó cho kết quả sai và em chưa thể sửa nó!
#include <stdio.h>
#include <conio.h>
int thuTuNgay(int Ngay, int Thang, int Nam);//ham kiem tra thu tu ngay
bool ktNamNhuan(int Nam);//ham kiem tra nam nhuan
void main()
{
int Ngay, Thang, Nam;
do{
printf("Nhap ngay= ");
scanf("%d", &Ngay);
if(Ngay< 0) printf("Ban nhap ngay sai, xin nhap lai\n");
}while(Ngay< 0);
do{
printf("Nhap Thang= ");
scanf("%d", &Thang);
if(Thang< 0) printf("Ban nhap Thang sai, xin nhap lai\n");
}while(Thang< 0);
do{
printf("Nhap Nam= ");
scanf("%d", &Nam);
if(Nam< 0) printf("Ban nam ngay sai, xin nhap lai\n");
}while(Nam< 0);
int kq= thuTuNgay(Ngay, Thang, Nam);
if(kq== 1) printf("Thu 2\n");
if(kq== 2) printf("Thu 3\n");
if(kq== 3) printf("Thu 4\n");
if(kq== 4) printf("Thu 5\n");
if(kq== 5) printf("Thu 6\n");
if(kq== 6) printf("Thu 7\n");
if(kq== 7) printf("chu nhat\n");
getch();
}
bool ktNamNhuan(int Nam)
{
if((Nam%400== 0) || (Nam%4== 0 && Nam%100!= 0)) return true;
else return false;
}//kiem tran nam nhuan
int thuTuNgay(int Ngay, int Thang, int Nam)
{
int thuTuNgay= 0,//thu tu ngay trong thang
soTuan= 0,//so tuan
soNgayLe= 0;//so ngay le trong nam
int dem= 0;// tinh so thang da trai qua tinh tu thang 1
switch(Thang){
case 1: thuTuNgay= Ngay;
break;
case 2: thuTuNgay= Ngay+ 31;
break;
case 3: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 60;
}
else thuTuNgay= Ngay+ 59;
break;
case 4: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 91;
}
else thuTuNgay= Ngay+ 90;
break;
case 5: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 121;
}
else thuTuNgay= Ngay+ 120;
break;
case 6: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 152;
}
else thuTuNgay= Ngay+ 151;
break;
case 7: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 182;
}
else thuTuNgay= Ngay+ 181;
break;
case 8: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 213;
}
else thuTuNgay= Ngay+ 212;
break;
case 9: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 244;
}
else thuTuNgay= Ngay+ 243;
break;
case 10: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 274;
}
else thuTuNgay= Ngay+ 273;
break;
case 11: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 305;
}
else thuTuNgay= Ngay+ 304;
break;
default: if(ktNamNhuan(Nam)== true){
thuTuNgay= Ngay+ 335;
}
else thuTuNgay= Ngay+ 334;
break;
}//end switch()
for(int i= 1; i< Thang; i++){
if(i<= Thang) dem++;
}
soTuan= dem*4;
soNgayLe= (thuTuNgay-(soTuan*7))% 7;
return soNgayLe;
}//ham tinh so ngay le de xet thu may
mà chạy xong đáng ra là chủ nhật nó lại cho ra là thứ 5
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?