Yahoo Hỏi & Đáp sẽ ngừng hoạt động vào ngày 4 tháng 5 năm 2021 (Giờ Miền Đông nước Mỹ) và từ nay, trang web Yahoo Hỏi & Đáp sẽ chỉ ở chế độ đọc. Các thuộc tính hoặc dịch vụ khác của Yahoo hay tài khoản Yahoo của bạn sẽ không có gì thay đổi. Bạn có thể tìm thêm thông tin về việc Yahoo Hỏi & Đáp ngừng hoạt động cũng như cách tải về dữ liệu của bạn trên trang trợ giúp này.
Kiểm tra giúp mình đoạn code dưới đây ?
include<stdio.h>
#include<math.h>
#include<conio.h>
struct nhapngaythangnam
{
int ngay,thang,nam;
};
typedef nhapngaythangnam date;
void nhapdate(date &a)
{
printf("Nhap nam:");
scanf("%d",&a.nam);
int namnhuan=0;
if((a.nam)%4==0) namnhuan=1;
do
{
printf("\nNhap thang:");
scanf("%d",&a.thang);
}
while(a.thang<0||a.thang>=13);
switch(a.thang)
{
case 1,3,5,7,8,10,12:
do
{
printf("\nThang co 31 days");
printf("\n=>Nhap ngay:");
scanf("%d",&a.ngay);
}
while(a.ngay<0||a.ngay>=32);
break;
case 2:
if(namnhuan==1)
do
{
printf("\nDay la nam nhuan co 29 days");
printf("\n=>Nhap ngay nam nhuan:");
scanf("%d",&a.ngay);
}
while(a.ngay<0||a.ngay>=30);
else
do
{
printf("\nDay ko la nam nhuan co 28 days");
scanf("%d",&a.ngay);
}
while(a.ngay<0||a.ngay>=29);
break;
case 4,6,9,11:
do
{
printf("\nThang co 30 days");
printf("\n=>Nhap ngay:");
scanf("%d",&a.ngay);
}
while(a.ngay<0||a.ngay>=31);
break;
default:break;
}
}
void xuatdate(date a)
{
printf("\n\n***Xuat ngay thang vua nhap\n***");
printf("%d/%d/%d",a.ngay,a.thang,a.nam);
}
void main()
{
clrscr();
date a;
nhapdate(a);
xuatdate(a);
getch();
}
Viết chương trình nhập ngày tháng ngày hôm nay xuất ra màn hình và cho biết ngày tháng hôm trước và ngày tháng hôm sau.
VD khi nhập 30/6/2011-> hôm sau 1/7/2011, hôm trước 29/6/2011
Tại sao mình chạy chương trình nó chỉ cho nhập năm và tháng còn ngày thì ko nhập được ?
Thanks nhé.
Àh àh xin lỗi làm phiền bạn, mình lên mạng đọ thuật toán cho bik ngày tháng hôm sau, và ngày hôm trước chưa hỉu gì cả.Nên đành nhờ bạn giúp lun thanks bạn nhé do code mình yếu wa.
2 Câu trả lời
- 1 thập kỷ trướcCâu trả lời yêu thích
Bài làm của bạn mình thấy hơi lủng củng bạn tham khảo bài mình hi vọng bạn hiểu
#include<stdio.h>
#include<math.h>
#include<conio.h>
struct nhapngaythangnam
{
int ngay,thang,nam;
};
typedef nhapngaythangnam date;
int checkmonth(int month,int year) // hàm này trả về số ngày của 1 tháng ứng với 1 năm
{
int sn[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
if (((year%4==0)&&(year%100!=0))||(year%400 ==0 ) ) // cái này kiểm tra năm nhuận
sn[2] = 29;
return sn[month];
}
void nhap(date &p)
{
printf("\nNhap ngay:");
scanf("%d",&p.ngay);
printf("\nNhap thang:");
scanf("%d",&p.thang);
printf("\nNhap nam:");
scanf("%d",&p.nam);
}
void xuat(date p)
{
printf(" Ngay %d Thang %d Nam %d",p.ngay,p.thang,p.nam);
}
main()
{
date d,t;
tt: nhap(d);
if( 0 >=d.ngay || d.ngay>checkmonth(d.thang,d.nam) || 0>=d.thang || d.thang>12)
{
printf("\nBan nhap khong dung moi ban nhap lai:");
goto tt;
}
printf("\nNgay ban vua nhap :");
xuat(d);
printf("\nNgay hom truoc cua ban la:");
t=d; // 2 cái struct gán cho nhau thì nó sẽ lấy từng thành phần 1 mà gán giá trị cho nhau
// có nghĩa là t.ngay=d.ngay,t.thang=d.thang,t.nam=d.nam, từ đoạn sau thì dễ rùi nha
if(d.ngay==1)
{
if(d.thang==1)
{
t.ngay=checkmonth(t.thang-1,t.nam);
t.thang=12;
t.nam--;
}
else
{
t.ngay=checkmonth(t.thang-1,t.nam);
t.thang--;
}
}
else t.ngay--;
xuat(t);
printf("\nNgay hom sau cua ban la:");
if(d.ngay==checkmonth(d.thang,d.nam))
{
if(d.thang==12)
{
d.ngay=1;
d.thang=1;
d.nam++;
}
else
{
d.ngay=1;
d.thang++;
}
}
else d.ngay++;
xuat(d);
getch();
}