c++判断星期和日期位数为四的程序问题


#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;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^