永发信息网

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

答案:3  悬赏:80  手机版
解决时间 2021-03-11 23:59
#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];
}
}
}
}
结果不正确,麻烦哪位大神给改下。
最佳答案
#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;
}
全部回答
算法多头疼,我原来也写过这个。用了两个数组。 {31,28,31,30,31,30,31,31,30,31,30,31} {31,29,31,30,31,30,31,31,30,31,30,31} 判断是否是闰年之后,用不同的数组就好了,而且不容易出错
 #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]); }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中国移动通信手机专卖店(鑫百丰店)怎么去啊,
康熙字典儒是几画五行属什么意思
伊莱克斯洗衣机电源已通电,但屏幕没有反应是
我国4个直辖市和它们的简称分别为京、津、渝
隧道长300米,火车匀速用时20秒,隧道顶部有
阿阿谀奉承的近义词
滋活披萨(九堡店)地址有知道的么?有点事想过
壮哥是什么意思?请回答
橡树摄影网怎么样
五菱荣光空挡滑行怠速高是怎么回事
收益与发行人的财务状况相关程度高,其持有人
来月经痛经,想吐是什么原因?喝了一碗生姜红
香格里湾二区(东南门)怎么去啊,有知道地址的
泰拉瑞亚所有boos掉落物品,包括几率
百度云的,约会大作战 ,美少女战士全集,英
推荐资讯
统招专升本难还是自考专升本难?哪个含金量高
当我对你的话不屑一顾时,你的微笑是多么?
跪求中世纪2王国之天国王朝descr_strat.txt
彬社新村在什么地方啊,我要过去处理事情
惊蛰是什么季节
【杨绛老王】杨绛的文章《老王》的理解.1:我
低压电工能不能从事空调安装.维修
豆浆这个地址在什么地方,我要处理点事
怎么活跃微信群
美国向中国借了多少钱
什么是运筹学?
托里县公安局交警大队我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?