求救!!这个题目是要求用户输入一个日期,程序输出前一天日期,我想简化以下代码!!
求指点!!老师说可用字符串,求教!
#include <iostream> // 头文件
using namespace std; // 使用std
int main() { // 主函数
int y, m, d, n; //设置变量
cout << "请输入年 月 日:";//提示输出语
cin >> y >> m >> d; //输入
if (m == 1 && d == 1) {//新年第一天
y -= 1;//年份减少1
m += 11;//月份变为12
d = 31;//日期变为31
cout << y << "年" << m << "月" << d << "日";//输出
}
switch (m) {
case 2: { //2月份
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
n = 29; //是闰年
else
n = 28; break; //不是闰年
}
case 4: case 6: case 9: case 11:
n = 30; break; //4,6,9,11月
default:
n = 31; break; //其他月份
}//以上判断日期与月份是否匹配
if (m > 13 || d < 0 || d>n) {//错误时间
cout << "输入时间错误,请重新输入。";//输出
return 0;//直接返回
}
if(d==1){//该月份第一天
m -= 1;//月份减一
switch (m) {
case 2: { //2月份
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
n = 29; //是闰年
else
n = 28; break; //不是闰年
}
case 4: case 6: case 9: case 11:
n = 30; break; //4,6,9,11月
default:
n = 31; break; //其他月份
}
d = n;//上一个月最后一天的日期
cout << y << "年" << m << "月" << d << "日";//输出
}
else
cout << y << "年" << m+1 << "月" << d -1<< "日";//输出
return 0; // 正常返回
}