永发信息网

任意输入某一天和所在年份,输出几月几日。

答案:3  悬赏:80  手机版
解决时间 2021-03-11 23:59
  • 提问者网友:你给我的爱
  • 2021-03-11 15:57
#include <stdio.h>
#include <stdlib.h>
#define N 12
void split_date(int day_of_year,int year,int *month,int*day);

int main()
{
int a,b,c,d;
printf("请输入一个1~366之间的天数:");
scanf("%d",&a);
printf("请输入当前年份:");
scanf("%d",&b);
split_date(a,b,&c,&d);
printf("今天是%d月%d日。\n",c,d);
}

void split_date(int day_of_year,int year,int *month,int*day)
{

int a[N],i,b[N]= {31},j,c[N],k;
for(j=0; j<N; j++)
{
for(i=0; i<N; i++)
{
if(i==0||i==2||i==4||i==6||i==7||i==9||i==11)
a[i]=31;
else if(i==3||i==5||i==8||i==10)
a[i]=30;
else if(year%4==0&&i==1)
a[i]=29;
else if(year%4!=0&&i==1)
a[i]=28;
b[j+1]=b[j]+a[i+1];
for(k=0; k<N; k++)
{
c[k]=k+1;
}
if(day_of_year>b[j]&&day_of_year-b[j]<a[i])
{
k=j+1;
*month=c[k];
*day=day_of_year-b[j];
}
else if(day_of_year<=b[j])
{
k=j;
*month=c[k];
*day=day_of_year-b[j];
}
}
}
}
结果不正确,麻烦哪位大神给改下。
最佳答案
  • 五星知识达人网友:酒安江南
  • 2021-03-11 16:29
#include <stdio.h>
#include <stdlib.h>
#define N 12
int split_date(int day_of_year,int year,int *month,int*day);

int main()
{
    int a,b,c,d;
    printf("请输入一个1~366之间的天数:");
    scanf("%d",&a);
    printf("请输入当前年份:");
    scanf("%d",&b);
    if(split_date(a,b,&c,&d) == 0)
printf("%d年只有365天!\n",b);
else
printf("今天是%d月%d日。\n",c,d);
return 0;
}

int split_date(int day_of_year,int year,int *month,int*day)
{
int n[N] = {31,28,31,30,31,20,31,31,30,31,30,31};
int i,j;
if((year%100 != 0 && year%4 == 0) || year%400 == 0)
n[1] = 29;

if(day_of_year == 366 && n[1] == 28)
return 0;

j = 0;
for(i=0;i<N;i++)
{
j += n[i];
if(day_of_year <= j)
break;
}
*month = i+1;
*day = day_of_year - (j - n[i]);
return 1;
}
全部回答
  • 1楼网友:不如潦草
  • 2021-03-11 18:06
算法多头疼,我原来也写过这个。用了两个数组。 {31,28,31,30,31,30,31,31,30,31,30,31} {31,29,31,30,31,30,31,31,30,31,30,31} 判断是否是闰年之后,用不同的数组就好了,而且不容易出错
  • 2楼网友:拾荒鲤
  • 2021-03-11 17:51
 #include "stdio.h" void main() {   int n[12]={31,28,31,30,31,30,31,31,30,31,30,31};   int y,m;   printf("请输入年份:");   scanf("%d",&y);   printf("请输入月份:");   scanf("%d",&m);   if(y%4==0&&y%100!=0||y%400==0)n[1]=29;//闰年   printf("%d年%d月有%d天\n",y,m,n[m-1]); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯