C语言写一个程序,输入年、月、日的值,能输出该日是该年的第几天,并判断出该年是不是闰年。

如题所述

#include<stdio.h>
int count,year,month,day,k;
int judge(int year)
{ if(year%4==0 && year%100!=0||year%400==0)
return(k=1);
else
return(k=0);
}
int R(int month)
{ int Rd[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int i;
for (i=0;i<month-1;i++)
count=count+Rd[i];

count=count+day;
return (count);
}
int P (int month)
{ int Pd[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i;
for (i=0;i<month-1;i++ )
count=count+Pd[i];
count=count+day;
return (count);
}
void main()
{ printf("请输入年,月,日:");
scanf("%d%d%d",&year,&month,&day);
k=judge(year);
if (k==1)
{ count=R(month);
printf("%d是闰年!\n",year);
}
else if(k==0)
{ count=P(month);
printf("%d不是闰年!\n",year);
}
printf("%d年%d月%d日是该年当中的第%d天\n",year,month,day,count);
}
请采纳!!!不懂的可以问我追问

可以用C语言运行贴图下吗?谢谢了!

追答

亲,我看不懂你的意思

追问

求C语言写将一个整数数组的值按逆序重新存放并输出。

追答

#include
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int t,n=10;
for(int i=0;i<n/2;i++)
{ t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}
亲,上面的程序就是 将一个整数数组的值按逆序重新存放并输出。

希望采纳!!!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-08
#include <stdio.h>

int MD[12] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};

int main()
{
    int year, month, day, yday, leap;
    do {
        printf("Input year, month, day.(eg:2014-2-2)\n");
    } while(scanf("%d-%d-%d", &year, &month, &day) != 3);
    leap = ((year % 4) && (year % 100) || (year % 400));
    yday = MD[month] + day;
    if(month > 2 && leap != 0)
        ++yday;
    printf("%d-%d-%d is the %d day of the year.\n", year, month, day, yday);
    if(leap)
        printf("the year is leap year.\n");
    else
        printf("the year is not leap year.\n");
    return 0;
}

追问

为什么上面的语句那么长?你的怎么短?麻烦解释下

追答

代码中有两行错误,修改一下如下。

leap = ((year % 4 == 0) && (year % 100) || (year % 400 == 0));
yday = MD[month-1] + day;

对比一下与楼上的代码。做的事情是一样的,方法略有不同罢了。

说下我的代码的思路吧。

do while 循环输入日期。leap变量计算year是否是闰年,方法是普通的。

yday变量计算日期是一年中的第几天。MD数组存放的是平年的12个月份之前的日期累积,因此如果是3月份以后并且该年是闰年,需要加上闰的一天。

仅此而已。

相似回答