老牛来学习 发表于 2020-3-21 20:34:01

C语言代码出错

/*
输入年份和天数,输出对应的年、月日。要求
对应和调用函数month_day(year,yearday,*pmonth,*pday)
其中year是年,yearday是天数,*pmonth和*pday是计算得出的月和日。
例如,输入2000和61,输出2000-3-1,即2000年的第61天是3月1日。
*/
#include<stdio.h>

void month_day(int year,int yearday,int *pmonth,int *pday)
{
    int a = {
                {31,28,31,30,31,30,31,31,30,31,30,31},
                {31,29,31,30,31,30,31,31,30,31,30,31},
    };
    int temp,i;

    temp = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 );

    for(i = 0; yearday > a; i++)
    {
      yearday -= a;
    }

    *pmonth = i+1;
    *pday = yearday;
}

int main()
{
    int y,d,pmonth,pday;
    printf("请输入年份和天数:");
    scanf("%d %d",y,d);

    month_day(y,d,&pmonth,&pday);
    printf("%d年的第%d天是%d月%d日",pmonth,pday);
}


这个代码不报错,但是运行不了,找了半天也没看见错误,大神帮帮忙。

sunrise085 发表于 2020-3-21 20:38:20

本帖最后由 sunrise085 于 2020-3-21 20:40 编辑

第32行scanf要用&y   和&d
scanf("%d %d",&y,&d)
第35行printf四个格式化字符,但是后面只有两个参数
/*
输入年份和天数,输出对应的年、月日。要求
对应和调用函数month_day(year,yearday,*pmonth,*pday)
其中year是年,yearday是天数,*pmonth和*pday是计算得出的月和日。
例如,输入2000和61,输出2000-3-1,即2000年的第61天是3月1日。
*/
#include<stdio.h>

void month_day(int year,int yearday,int *pmonth,int *pday)
{
    int a = {
                {31,28,31,30,31,30,31,31,30,31,30,31},
                {31,29,31,30,31,30,31,31,30,31,30,31},
    };
    int temp,i;

    temp = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 );

    for(i = 0; yearday > a; i++)
    {
      yearday -= a;
    }

    *pmonth = i+1;
    *pday = yearday;
}

int main()
{
    int y,d,pmonth,pday;
    printf("请输入年份和天数:");
    scanf("%d %d",&y,&d);

    month_day(y,d,&pmonth,&pday);
    printf("%d年的第%d天是%d月%d日",y,d,pmonth,pday);
}

老牛来学习 发表于 2020-3-21 20:53:49

sunrise085 发表于 2020-3-21 20:38
第32行scanf要用&y   和&d
scanf("%d %d",&y,&d)
第35行printf四个格式化字符,但是后面只有两个参数 ...

感谢!!!!

569712304qq 发表于 2020-3-22 20:19:24

sunrise085 发表于 2020-3-21 20:38
第32行scanf要用&y   和&d
scanf("%d %d",&y,&d)
第35行printf四个格式化字符,但是后面只有两个参数 ...

请教一下:yearday的值是怎么来的?yearday的初使值不是0吗?yearday -= a的值不就是负数了吗?
页: [1]
查看完整版本: C语言代码出错