【C語言程式練習】驗證使用者輸入的日期格式是否正確,如果不正確,則提示重新輸入,直到重新輸入正確為止
阿新 • • 發佈:2021-01-25
技術標籤:C++學習筆記C語言c語言visual studio
驗證使用者輸入的日期格式是否正確,如果不正確,則提示重新輸入,直到重新輸入正確為止。
(提示:需要定義一個表示日期的結構體型別struct Date,包括年、月、日資訊,並用typedef重新定義新型別名Date;檢查日期是否有效,定義為函式int checkDate(Date date))。
#include <stdio.h> //定義一個表示日期的結構體型別struct Date struct Date { int year; int month; int day; }date; //用typedef重新定義新型別名Date typedef struct Date Date; //檢查日期是否有效函式 //int checkDate(Date date); int checkDate(Date date) { int y = 0; //判斷月份是否為31天 if (date.month == 1 || date.month == 3 || date.month == 5 || date.month == 7 || date.month == 8 || date.month == 10 || date.month == 12) y = 1; //判斷月份是否為30天 if (date.month == 4 || date.month == 6 || date.month == 9 || date.month == 11) y = 4; //月份為2月時(需要判斷閏年) if (date.month == 2) { if ((date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0) y = 2; else y = 3; } if (date.year < 1900 || date.year>2020) return 0; else if (date.month < 1 || date.month>12) return 0; else if (y == 1 && (date.day < 1 || date.day>31)) return 0; else if ((y == 4) && (date.day < 1 || date.day>30)) return 0; else if ((y == 2) && (date.day < 1 || date.day>29)) return 0; else if ((y == 3) && (date.day < 1 || date.day>28)) return 0; else return 1; } int main() { int x; do { printf("Please input the date!\n"); scanf_s("%d%d%d", &date.year, &date.month, &date.day); x = checkDate(date); } while (x == 0); if (x) printf("Correct!\n"); return 0; }
執行結果: