欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C第三天任务//写一个判断这个日期是本年第几天的程序

程序员文章站 2022-07-15 08:58:07
...

C第三天任务

输入某年某月某日,判断这一天是这一年的第几天?

如下:
C第三天任务//写一个判断这个日期是本年第几天的程序

代码1:(情况未考虑完全)

#include <stdio.h>
int i,j,time1,time2,T1,T2,Days,Year;
void tell();
void main()
{
	char time[9],year[3],month[1],day[1];
	printf("请按当前格式输入年月日:xxxx-xx-xx\n");
	gets(time);
	for (i=0,j=0;i<4;i++,j++)
	{
		year[j]=time[i];
	//	printf("%c\n",year[j]);
	}
//  sscanf(year,"%d",&Year);//因为转化出来的整型变量会重复两次,原因不知道,所以就线放弃使用了
//	printf("%d\n\n",Year);
    for (i=5,j=0;i<7;i++,j++)
	{
		month[j]=time[i];
	}
    time1=atoi(month);
	for (i=8,j=0;i<10;i++,j++)
	{
		day[j]=time[i];
	}
	time2=atoi(day);
	if((time1==1)|(time1==3)|(time1==5)|(time1==7)|(time1==8)|(time1==10)|(time1==12))//限定大月份的天数上限
	{
		if(time2>31)
			printf("输入的日期有误");
	}
	if((time1==4)|(time1==6)|(time1==9)|(time1==11))                                  //限定小月份的天数上限
	{
		if(time2>30)
			printf("输入的日期有误");
	}


	switch (time1)      //根据月份确定大体时间
	{
	case 1:T1=0;break;
	case 2:tell();break;//需要判断下输入的日期是否有误。
	case 3:T1=59;break;
	case 4:T1=90;break;
	case 5:T1=120;break;
	case 6:T1=151;break;
	case 7:T1=181;break;
	case 8:T1=212;break;
	case 9:T1=243;break;
	case 10:T1=273;break;
	case 11:T1=304;break;
	case 12:T1=334;break;
	default:printf("输入的月份或日期有误");
	}	
	T2=time2;
    Days=T1+T2;
	printf("当前为");
	for (i=0;i<4;i++)
	{
		printf("%c",time[i]);
	}
	printf("年第%d天\n",Days);
}

void tell()
{
	T1=31;
	if(time2>28)
		printf("输入的月份或日期有误");
}

答案2:(情况考虑充分)

#include <stdio.h>

int Dbuf[12]  = {31,28,31,30,31,30,31,31,30,31,30,31};
int Dbuf1[12] = {31,29,31,30,31,30,31,31,30,31,30,31};

/***************
1.判断闰年/平年
2.按月累加 时间
****************/
int main()
{
	int year,mon,date;
	int i,temp;
	
	temp =0;
	
	printf("请按当前格式输入年月日:xxxx-xx-xx\n");
	
	scanf("%d-%d-%d",&year,&mon,&date);
		
	if((year%4==0&&year%100!=0)||year%400==0)    //闰年
	{	
		
	  if(mon>12||date>Dbuf1[mon-1])              //判定月日
		{
				printf("月份或日期不符!\n");
				return 0;
		}		
		
		for(i=1;i<mon;i++)
			temp +=Dbuf1[i-1];			
	}
	else                                         //平年
	{
	  if(mon>12||date>Dbuf[mon-1])
		{
				printf("月份或日期不符!\n");
				return 0;
		}	
		
		
		for(i=1;i<mon;i++)
			temp +=Dbuf[i-1];	
	}		
	
	temp += date;                               //加上每月的天数
	
	printf("当前为%d的%d天\n",year,temp);
	
	return 0;
}