#include
#include
using namespace std;
int main(){
int a,b[13],c,b2,bs=1,m;
scanf("%d年%d月%d日 星期%d",a,b2,c,m);
b[2]=28;
if(a%4==0&&a%100==0||a%400==0){
b[2]=29;
}
b[1]=b[3]=b[5]=b[7]=b[8]=b[10]=b[12]=31;
b[4]=b[6]=b[9]=b[11]=30;
while(m%7==4&&c%10==4){
if(bs==13){
b[2]=28;
if(a%4==0&&a%100==0||a%400==0){
b[2]=29;
}
a++;
bs=1;
}
if(c>b[bs]){
bs++;
c=1;
}
else c++;
m++;
}
cout<"年"<"月"<"日";
return 0;
}
运行完之后会终止运行,希望各位学c++指点一下。
该回答引用ChatGPT
#include <iostream>
#include <string>
using namespace std;
int main() {
string date;
cout << "请输入日期(格式为yyyymmdd):";
cin >> date;
// 判断日期是否为四位数
if (date.length() != 8) {
cout << "输入的日期格式不正确!" << endl;
return 0;
}
// 计算星期
int year = stoi(date.substr(0, 4));
int month = stoi(date.substr(4, 2));
int day = stoi(date.substr(6, 2));
if (month == 1 || month == 2) {
month += 12;
year--;
}
int week = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400 + 1) % 7;
// 输出星期
string weekday;
switch (week) {
case 0:
weekday = "星期日";
break;
case 1:
weekday = "星期一";
break;
case 2:
weekday = "星期二";
break;
case 3:
weekday = "星期三";
break;
case 4:
weekday = "星期四";
break;
case 5:
weekday = "星期五";
break;
case 6:
weekday = "星期六";
break;
}
cout << "星期:" << weekday << endl;
// 输出日期
cout << "日期:" << date << endl;
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: