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: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);
}
sunrise085 发表于 2020-3-21 20:38
第32行scanf要用&y 和&d
scanf("%d %d",&y,&d)
第35行printf四个格式化字符,但是后面只有两个参数 ...
感谢!!!! sunrise085 发表于 2020-3-21 20:38
第32行scanf要用&y 和&d
scanf("%d %d",&y,&d)
第35行printf四个格式化字符,但是后面只有两个参数 ...
请教一下:yearday的值是怎么来的?yearday的初使值不是0吗?yearday -= a的值不就是负数了吗?
页:
[1]