1. 程式人生 > >C++解決錯誤警報的方案集合——以及日曆表上輸出下一天問題

C++解決錯誤警報的方案集合——以及日曆表上輸出下一天問題

解決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;
}