亭对月 2022-04-21 15:15 采纳率: 100%
浏览 38
已结题

关于计算某一天是几月几日的问题

感觉我的思路没什么问题,但好像在函数for循环部分的i值有问题,请问那个for语句怎么改?(因为要求,函数是固定的)

#include<stdio.h>
void MonthDay(int year,int yearDay,int *pMonth,int *pDay);

int main()
{    
    int year,yearday,month,day;
    
    printf("请输入年份:");
    scanf("%d",&year);
    printf("请输入第几天:");
    scanf("%d",&yearday);
    
    MonthDay(year,yearday,&month,&day);
    printf("是今年的%d月%d日\n",month,day);
    
    return 0;
}

void MonthDay(int year,int yearDay,int *pMonth,int *pDay)
{
    int m[12]={31,28,31,30,31,30,31,31,30,31,30,31},i;
    if(year%4==0&&year%100!=0||year%400==0)
        m[1]=29;
    *pMonth=0;
    for(i=0;i<12;i++){
        *pDay=yearDay-m[i];
        *pMonth=i;
        if(*pDay<=0) {
            *pDay=*pDay+m[i];
            break;
        }
    }
}
  • 写回答

1条回答 默认 最新

  • 刘日政 2022-04-21 15:45
    关注

    #include<stdio.h>
    int main()
    {
    int year, yearday, month, day;
    int MonDay[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    printf("请输入年份:");
    scanf("%d", &year);
    printf("请输入第几天:");
    scanf("%d", &yearday);
    if((year%400==0) || (year%4==0 && year %100!=0)) MonDay[1] = 29;
    for (int i = 0; yearday > 0; i++) {
    day = yearday;
    month = i + 1;
    yearday -= MonDay[i];
    }
    printf("是今年的%d月%d日\n", month, day);
    return main();
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 修改了问题 4月21日
  • 创建了问题 4月21日

悬赏问题

  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
  • ¥15 使用华为ENSP软件模拟实现该实验拓扑
  • ¥15 通过程序读取主板上报税口的数据
  • ¥15 matlab修改为并行
  • ¥15 大数据应用基础专业问题
  • ¥20 数据分析出错了,希望有能人看看,解决一下
  • ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373
  • ¥15 (关键词-运算放大器)