C++解決錯誤警報的方案集合——以及日曆表上輸出下一天問題
阿新 • • 發佈:2018-12-12
解決fopen、fscanf 在VS中要求替換為fopen_s、fscanf_s的最全解決辦法以外的
方法一:在程式最前面加#define _CRT_SECURE_NO_DEPRECATE; 方法二:在程式最前面加#define _CRT_SECURE_NO_WARNINGS; 方法三:在程式最前面加#pragma warning(disable:4996); 方法四:把scanf、scanf改為scanf_s、fopen_s,具體方法請百度; 方法五:無需在程式最前面加那行程式碼,只需在新建專案時取消勾選“SDL檢查”即可; 方法六:若專案已建立好,在專案屬性裡關閉SDL也行; 方法七:在工程專案設定一下就行;將報錯那個巨集定義放到 專案屬性 -- C/C++-- 前處理器 -- 前處理器定義; 方法八:在 專案屬性 -- c/c++ -- 命令列 新增:/D _CRT_SECURE_NO_WARNINGS 就行了。
通過程式可以輸出該輸入日期在日曆上隔1天的日期。
/* * 1≤month≤12 * 1≤day≤31和1900≤year≤2050),分別作為輸入日期的月份、日、年份, * 通過程式可以輸出該輸入日期在日曆上隔1天的日期。 * 例如,輸入為 2004 年11 月29 日,則該程式的輸出為2004 年12 月1 日。 * 在程式中首先要考慮year是閏年還是平年。 判斷方法就是,閏年就是世紀年可以被400整除, * 非世紀年可以被4整除的年份,世紀年就是像1900, 2000之類的這樣的年份, * 閏年中首先得考慮2月有29天。非閏年2月有28天。 其次就是注意隔兩天問題, * 像輸入1999,12 ,30. 輸出應該為2000 , 1, 1.這裡就想說明在程式中 * 要考慮年份以及月份的加減,還有日期的加減,我在這裡是使用取餘的方進行計算的, * 例如 輸入1999,12 ,30 , 12月30號,day = (day + 1) % 31.這裡除31就是因為12月有31天, * 幾月有幾天就需要除以相應的天數。month = (month + 1)%12.這裡就是在每個月的最後兩天, * 隔兩日就回進入下一月。year發生變化只會在月份在十二月的時候,而且在十二月的最後兩天。 */ #include<iostream> #include<string> using namespace std; int main() { int open, year, month, day; //輸入年月日,並進行判斷 cout << "請輸入任意數開始測試,以輸入0作為結束測試標誌!!" << endl; cin >> open; do { cout << "請輸入年份:"; cin >> year; cout << "請輸入月份:"; cin >> month; cout << "請輸入幾號:"; cin >> day; if (year > 2050 || year < 1900 || month>12 || month < 1 || day>31 || day < 1) { printf("資料輸入錯誤!!!"); } else { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { //閏年 switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if (day + 1 > 31) { if (month == 12 && day == 30 || day == 31) year += 1; month = (month + 1) % 12; day = (day + 1) % 31; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } else { day = (day + 1) % 31; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } case 4: case 6: case 9: case 11: if (day + 1 > 30) { month = month + 1; day = (day + 1) % 30; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } else { day = day + 1; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } //閏年2月29天 case 2: if (day > 29) { printf("資料輸入錯誤!!!"); break; } else { //輸入29 if (day + 1 > 29) { month = month + 1; day = (day + 1) % 29; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } else { day = day + 1; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } } } } else { //非閏年 switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if (day + 1 > 31) { if (month == 12 && day == 30 || day == 31) year += 1; month = (month + 1) % 12; day = (day + 1) % 31; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } else { day = (day + 1) % 31; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; } //平年非閏年_2月28天 case 2: if (day > 28) { cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; } else if (day + 1 > 28) { month = month + 1; day = (day + 1) % 28; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } else { day = day + 1; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } case 4: case 6: case 9: case 11: if (day + 1 > 30) { month = month + 1; day = (day + 1) % 30; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } else { day = (day + 1) % 30; cout << "當前輸入日期的隔天日期是:" << year << "年 -- " << month << " 月-- " << day << "日" << endl; break; } } } } } while (open = 0); cout << "測試結束!!" << endl; system("pause"); return 0; }