Bài tập C: Chương trình nhập vào ngày tháng hôm nay in ra ngày tháng ngày hôm sau

     Bài tập C/C++: Viết chương trình nhập vào ngày tháng năm hôm nay in ra ngày tháng năm của ngày hôm sau.

     Chương trình nhập vào ngày tháng năm hôm nay in ra ngày tháng năm ngày mai là chương trình xử lý thời gian đơn giản trong lập trình C. Để làm được chương trình này, yêu cầu các bạn cần phải kiểm tra giá trị nhập vào cho từng đối số. Đồng thời khi xuất dữ liệu cũng cần phải kiểm tra đúng ngày tháng năm thực tế. Có như vậy, chương trình chúng ta mới được hoàn chỉnh. Chúng ta sẽ tiến hành phân tích đề bài như sau:

Đối với bài tập về ngày tháng năm nhập từ bàn phím, các bạn cần kiểm tra các giá trị ngày tháng đã nhập có đúng với thực tế hay không, và những điều kiện về ngày tháng năm phải chính xác. Ví dụ ngày có điều kiện là từ 1 đến 31 ngày, tháng thì có giá trị từ 1 đến 12 tháng. Ngoài ra còn có các điều kiện về năm nhuận hay năm không nhuận.

Các bạn cần nhớ điều kiện của năm nhuận là năm chia hết cho 4 nhưng không chia hết cho 100 hoặc chia hết cho 400. Điều này sẽ ảnh hưởng đến tổng số ngày của tháng 2.

     Các bạn có thể tham khảo bài giải sau:

#include"stdio.h"
#include"conio.h"

int main()
{
int ngay, thang, nam, day;

//nhap ngay va kiem tra 
lb1:
do
{
  printf("nhap vao ngay: ");
  scanf("%d",&ngay);
  if(ngay<0|| ngay>31) printf("ban nhap sai ngay, nhap lai !\n"); 
}while(ngay<0|| ngay>31);

//nhap thang va kiem tra
lb2:do
 {
  printf("nhap vao thang: ");
  scanf("%d",&thang);
  if(thang<0|| thang>12) printf("ban nhap sai thang, nhap lai !\n");
 }while(thang<0|| thang>12);

//nhap nam va kiem tra
lb3:do
 {
  printf("nhap vao nam: ");
  scanf("%d",&nam);
  if(nam<1990) printf("ban nhap sai nam, nhap lai !\n");
  }while(nam<1990);

 //kiem tra nam nhuan hay khong
if((nam%4==0 && nam%100!=0) || nam%400==0)
	{
		if(thang==2 && ngay>29)
		{
	   printf(" day la nam nhuan ,vui long nhap lai ngay vi no qua 29 ngay "); 
       goto lb1;
		}
	}
else  //truong hop khong phai la nam nhuan
	{
		if(thang==2 && ngay >28)
		{
		printf(" day la nam khong nhuan, vui long nhap lai ngay vi no qua 28 ngay ");
		goto lb2;
		}
	}
    
if ((thang==4|| thang==6 ||thang==9 ||thang== 11) && ngay>30 )
{
    printf("thang %d khong co ngay 31, vui long nhap lai", thang); 
    goto lb3;
}

printf("Ngay hom nay la %d/%d/%d",ngay,thang,nam);


//phan in ra ngay / thang / nam cua ngay mai

int ngay_moi, thang_moi, nam_moi;


if( ((thang==4 || thang==6 || thang==9 || thang==11)&& ngay==30)||((thang==1 || thang==3 || thang==5 || thang==7 ||thang==8 ||thang==10)&&ngay==31))
{
	ngay_moi=1;
	thang_moi=thang+1;
	nam_moi=nam;
}
else if(ngay==31 && thang ==12)
{
	ngay_moi=1;
	thang_moi=1;
	nam_moi=nam+1;
}

else if(((nam%4==0 && nam%100!=0) || nam%400==0)&& thang==2 && ngay==28) //Kiem tra nam nhuan
	{
			ngay_moi=ngay+1;
			thang_moi=thang;
			nam_moi=nam;
	}
else if(((nam%4==0 && nam%100!=0) || nam%400==0)&& thang==2 && ngay==29)
			{
			ngay_moi=1;
			thang_moi=thang+1;
			nam_moi=nam;
			}
else if( thang==2 && ngay==28)
			{
			ngay_moi=1;
			thang_moi=thang+1;
			nam_moi=nam;
			}
else
{
	ngay_moi=ngay+1;
	thang_moi=thang;
	nam_moi=nam;
}

printf(" Ngay hom sau la: %d/%d/%d",ngay_moi,thang_moi,nam_moi);
getch();
}

     Chúc các bạn thành công


Categories: ,

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *