c语言编程输入一年中的任意一天输出它是这一年的第几天

输入一年中的任意一天输出它是第几天

#include "stdio.h"
#include "stdlib.h"//使用清屏命令时用此头文件
void main()
{
int Day[14]={0,31,28,31,30,31,30,31,31,30,31,30,31};//此数组用于存放每个月的天数(下标为0时没有天数,其余为平年当中每月的天数)
int year,month,day;//定义三个变量分别用于存放用户输入的年月日
int sumday=0;//此变量用于存放用户输入日期是当年的第几天
int i;//循环变量
printf("plase input a year:");
scanf("%d",&year);
printf("Please input a month:");
scanf("%d",&month);
printf("Please input a day:");
scanf("%d",&day);
//以下用于判断用户输入数据是否正确的如果有误再一次输入数据
while(year<=0||month<1||month>12&&day<1||day>31)
{
//如果月份小于0或月份小于1或月份大于12或日小于1或日大于31时都属不正确数据
system("cls");//清屏
printf("Your input is error!Please input again!\n");
printf("plase input a year:");
scanf("%d",&year);
printf("Please input a month:");
scanf("%d",&month);
printf("Please input a day:");
scanf("%d",&day);
}
for(i=0;i<month;i++)
{
sumday+=Day[i];//累加本月之间的所有天数
}
sumday+=day;//加上本月的天数
if(year%4==0&&year%100!=0||year%400==0&&month>2)
{
sumday+=1;//闰年再加1天
}
printf("%d-%d-%d是当年中第%d天",year,month,day,sumday);//输出输入日期是当年的第几天
}
以上代码复制到环境中即可运行。如果还有什么疑问的可以继续问?希望能够帮到你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-02
我写个大概吗,因为比较长,你可以自己填上去
#inlucde<stdio.h>
int main()
{
int yy,mm,dd,num; //看你输入什么格式咯,我就直接输入了
scanf("%d %d %d",&yy,&mm,&dd);
switch(mm) //看他是第几个月,然后按照月份加上天数就可以了,然后在判断一下是不是闰年,是的话,如果上了3月就+1天就可以了
{
case 1: num=dd;break;
case 2:num=31+dd;break;
case 3:num=31+28+dd;break;
case 4:
......
case 12: //上面的应该会写了把,
}
if((yy%4!=0||yy%100==0&&yy%400!=0)&&mm>2))//判断我上面所说的
num++;
printf("%d",num);
return 0;
}可以了
第2个回答  推荐于2018-05-14
#include<stdio.h>

int YMD_2_JD(int Y, int M, int D){
const short MonthDay[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int JD,i;
JD=D;
for (i=0;i<M;i++) JD+=MonthDay[i];
if ( ((Y%4==0)&&(Y%100!=0) || (Y%400==0) ) && (M>2)) JD++;
return JD;
}

int main(void)
{
int Y,M,D,x;
printf("input y m d\n");
scanf("%d %d %d",&Y,&M,&D);
x=YMD_2_JD(Y,M, D);
printf("%d",x);
}本回答被网友采纳
相似回答