c语言输入年,月,日,判断该日期是当年的第几天?

//58、输入年、月、日,判断该日期是当年的第几天?
#include <stdio.h>
int run (int year) //判断闰年
{
if((year%4==0&&year%100!=0)||year%400==0)
return 2;
else
return 1;

}
int jisuan (int year,int month) //计算当月之前度过的日子
{
int x,i,s=0;
int date[2][12]={
{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}
};
x=run(year);
for(i=1;i<month;i++)
s+=date[x][i];
return s;
}

void main()
{
int year,month,day,tian;

scanf("%d%d%d",&year,&month,&day);
tian=day+jisuan(year,month); //总天数
printf("%d",tian);

}

当我输入2000 12 31 的时候出来一大堆数字 哪错了呢?

#include <stdio.h>
int run (int year)                                    //判断闰年

    if((year%4==0&&year%100!=0)||year%400==0)    
    return 2;  
    else   
    return 1;     
}
int jisuan (int year,int month)                        //计算当月之前度过的日子
{  
    int x,i,s=0;  
    int date[2][12]=
    {  
         {31,28,31,30,31,30,31,31,30,31,30,31},  
         {31,29,31,30,31,30,31,31,30,31,30,31}  
    };  
    
    x=run(year);   
    for(i=1;i<month;i++)    
    s+=date[x-1][i];//下标越界   
    return s;
}
void main()

     int year,month,day,tian;  
     scanf("%d%d%d",&year,&month,&day); 
     tian=day+jisuan(year,month);                          //总天数 
     printf("%d",tian);
}

注释部分存在问题,测试结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-13
在这里我教大家C语言中使用代码实现“输入年月日,判断这一天是一年的第几天”
开启分步阅读模式
工具材料:
VC++
T C
操作方法
01
定义年月日和其他变量
int day,month,year,sum,leap;
02
输出:please input year,month,day;告诉用户输入年月日
printf("\nplease input year,month,day\n");
03
获取键盘输入的字符,用十进制定义
scanf("%d,%d,%d",&year,&month,&day);
04
计算某月以前月份的总天数
switch(month){  case 1:sum=0;break;  case
2:sum=31;break;  case 3:sum=59;break;  case 4:sum=90;break;  case
5:sum=120;break;  case 6:sum=151;break;  case 7:sum=181;break;  case
8:sum=212;break;  case 9:sum=243;break;  case 10:sum=273;break;
 case 11:sum=304;break;  case 12:sum=334;break;  defaultrintf("data
error");break; }
05
加上某天的天数;判断是不是闰年
sum=sum+day;  if(year%400==0||(year%4==0&&year%100!=0))  leap=1;
 else   leap=0;
06
如果是闰年且月份大于2,总天数应该加一天;sum自加
if(leap==1&&month>2sum++;
07
输出变量
printf("It is the %dth day.",sum); }
08
全部代码
main() { int day,month,year,sum,leap; printf("\nplease input
year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day);
switch(month){  case 1:sum=0;break;  case
2:sum=31;break;  case 3:sum=59;break;  case 4:sum=90;break;  case
5:sum=120;break;  case 6:sum=151;break;  case 7:sum=181;break;  case
8:sum=212;break;  case 9:sum=243;break;  case 10:sum=273;break;
 case 11:sum=304;break;  case 12:sum=334;break;  defaultrintf("data
error");break; } sum=sum+day;  if(year%400==0||(year%4==0&&year%100!=0))  leap=1;
 else   leap=0;
if(leap==1&&month>2)sum++;
printf("It is the %dth day.",sum); }
第2个回答  2019-07-31
#include<stdio.h>
int main()
{
int day,month,year,sum=0,leap;
printf("输入年月日如2019 7 12\n");
scanf("%d %d %d",&year,&month,&day);
switch(month)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day;
if((year%400==0||(year%4==0&&year%100!=0))&&month>2)
sum++;
printf("这是这一年的第%d天。",sum);
return 0;
}
方法2
#include<stdio.h>
int day_of_year(int (*p)[13],int year,int month,int day)
{
int i,leap;
leap=(year%100!=0 && year%4 ==0||year%400 ==0);
for(i=1;i<month;i++)
day+=*(*(p+leap)+i);
return day;
}
main()
{
static int day_tab[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d\n",day_of_year(day_tab,a,b,c));
}