-cfyjbjonn 2019-03-17 01:08 采纳率: 57.1%
浏览 504
已采纳

c语言 简单问题 怎么改 不懂报错 1111111111111111

图片说明

#include <stdio.h>
#include<stdlib.h>

int  DayofYear(int year, int month, int day);
void  MonthDay(int year, int yearDay, int *pMonth, int *pDay);


int main()
{
    int num;
    int year,month,day,yearDay;
    int a;
    int *pMonth,*pDay;
    printf("1. year/month/day -> yearDay\n2. yearDay -> year/month/day\n3. Exit\nPlease enter your choice:");
    scanf("%d",&num);
    switch(num)
    {
    case 1:
        printf("Please enter year, month, day:");
        scanf("%d,%d,%d",&year,&month,&day);
        a = DayofYear(year, month, day);
        printf("yearDay = %d\n",a);
        break;
    case 2:
        printf("Please enter year, yearDay:");
        scanf("%d,%d",&year,&yearDay);
        MonthDay(year, yearDay, &month, &day);
        break;
    case 3:
        break;
    }

    int  DayofYear(int year, int month, int day)
    {
        int a=0,i,m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        if(year%4==0&&year%100!=0||year%400==0)
        {
            m[2]=29;
        }
        for(i=1;i<month;i++)
        {
            a += m[i];
        }
        a = a + day;
        return a;
    }
    void  MonthDay(int year, int yearDay, int *pMonth, int *pDay)
    {
        *pMonth = 0;
        *pDay = 0;
        int i = 1;
        int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int s = 0;
        if((year%4 == 0&&year%100 != 0)||(year%400 == 0))
        {
            m[3] = 29;
        }
        do
        {
            s += m[i];
            i++;
        }while(s < yearDay);
        *pMonth = (i-1);
        *pDay = yearDay - (s-m[i]);
        printf("month = %d, day = %d\n",*pMonth,*pDay);
    }



}



  • 写回答

2条回答

  • liefengxixi 2019-03-17 09:06
    关注

    楼主在main函数里定义了其他函数了,这是不行的,函数里不能嵌套定义其他函数,应该这么改。
    此外最下面那个函数我对一处进行了修改,目前测试完全没有问题了。

    #include <stdio.h>
    #include<stdlib.h>
    
    int  DayofYear(int year, int month, int day);
    void  MonthDay(int year, int yearDay, int *pMonth, int *pDay);
    
    
    int main()
    {
        int num;
        int year,month,day,yearDay;
        int a;
        int *pMonth,*pDay;
        printf("1. year/month/day -> yearDay\n2. yearDay -> year/month/day\n3. Exit\nPlease enter your choice:");
        scanf("%d",&num);
        switch(num)
        {
        case 1:
            printf("Please enter year, month, day:");
            scanf("%d,%d,%d",&year,&month,&day);
            a = DayofYear(year, month, day);
            printf("yearDay = %d\n",a);
            break;
        case 2:
            printf("Please enter year, yearDay:");
            scanf("%d,%d",&year,&yearDay);
            MonthDay(year, yearDay, &month, &day);
            break;
        case 3:
            break;
        }
    }
    
    int  DayofYear(int year, int month, int day)
    {
        int a=0,i,m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        if(year%4==0&&year%100!=0||year%400==0)
        {
            m[2]=29;
        }
        for(i=1;i<month;i++)
        {
            a += m[i];
        }
        a = a + day;
        return a;
    }
    
    void  MonthDay(int year, int yearDay, int *pMonth, int *pDay)
    {
        *pMonth = 0;
        *pDay = 0;
        int i = 1;
        int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int s = 0;
        if((year%4 == 0&&year%100 != 0)||(year%400 == 0))
        {
            m[3] = 29;
        }
        do
        {
            s += m[i];
            i++;
        }while(s < yearDay);
        *pMonth = i-1;
        *pDay = yearDay - (s-m[i-1]); //这里进行了修改
        printf("month = %d, day = %d\n",*pMonth,*pDay);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!