YaYa很开心 2022-04-06 08:20 采纳率: 81.3%
浏览 135
已结题

输入一个日期,输出该日期是星期几 C语言

下面是代码,麻烦帮忙看看,我这个代码一直没有输出,不知道是哪里出问题了

#include <stdio.h>
int main()
{
    int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    char b[7]={'星期一','星期二','星期三','星期四','星期五','星期六','星期日'}; 
    int year,month,day,t,s,a;
    char r={'\0'};
    printf("请输入日期:");
    scanf("%d.%d.%d",&year,&month,&day);
    t=((year-2001)+(year-2001)/4+1)%7;
    s=m[month-1];
    a=(s+day)%7;
    printf("%d.%d.%d是",year,month,day);
    if(t+a-1<=7){putchar(b[t+a-1]);};
    if(t+a-1>7){putchar(b[t+a-7]);};
    return 0;
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-04-06 09:00
    关注

    修改处见注释,算法还是有问题的,闰年判断也没有,输出星期数不准,题主再修改下:

    #include <stdio.h>
    int main()
    {
        int m[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
        char *b[7] = { "星期一","星期二","星期三","星期四","星期五","星期六","星期日" };//修改
        //char b[7]={'星期一','星期二','星期三','星期四','星期五','星期六','星期日'}; 
        int year, month, day, t, s, a;
                                                       //char r = { '\0' }; 修改
        printf("请输入日期:");
        scanf("%d.%d.%d", &year, &month, &day);
        t = ((year - 2001) + (year - 2001) / 4 + 1) % 7;
        s = m[month];                                  //s = m[month - 1];  修改
        a = (s + day) % 7;
        printf("%d.%d.%d是", year, month, day);
        if (t + a - 1 <= 7) { puts(b[t + a - 1]); };  //putchar(b[t + a - 1]); 修改
        if (t + a - 1 > 7)  { puts(b[t + a - 7]); };  //putchar(b[t + a - 7]); 修改
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解