用C语言,输入一个日期,计算这一天是这一年的第六天,谢谢,加以注释望,

如题所述

#include <stdio.h>
#include <string.h>
#include <time.h>

int daysOfYear( char *dateStr )
{
    char year[4+1];
    char mon[2+1];
    char day[2+1];
    char hour[2+1];
    char min[2+1];
    char sec[2+1];
    struct tm *p;
    time_t now;
    time_t in;
    
    memset( year, 0x00, sizeof(year) );
    memset( mon, 0x00, sizeof(mon) );
    memset( day, 0x00, sizeof(day) );
    memset( hour, 0x00, sizeof(hour) );
    memset( min, 0x00, sizeof(min) );
    memset( sec, 0x00, sizeof(sec) );

    if ( strlen(dateStr) != 8 )
    {
        printf( "dateStr:%s is invalid, must be in format: yyyymmdd\n", dateStr );
        return -1;
    }

    time( &now);
    p = localtime( &now );

    strncpy( year, dateStr, 4 );
    strncpy( mon, dateStr+4, 2 );
    strncpy( day, dateStr+6, 2 );
    strncpy( hour, "00", 2 );
    strncpy( min, "00", 2 );
    strncpy( sec, "01", 2 );

    p->tm_year = atoi(year) - 1900;
    p->tm_mon = atoi(mon) - 1;
    p->tm_mday = atoi(day);
    p->tm_hour = atoi(hour);
    p->tm_min = atoi( min );
    p->tm_sec = atoi( sec );

    in = mktime( p );
    p = localtime( &in );
    return p->tm_yday+1;
}

void main()
{
    char date[20];
    printf( "input a date(yyyymmdd):" );
    scanf( "%s", date );
    printf( "%s 是一年的第 %d 天\n", date, daysOfYear(date) );
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-29
#include<stdio.h>
int main()
{
int day,month,year,sum,leap;
scanf("%d/%d/%d",&year,&month,&day); //输入日期
{
switch(month)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break; //以上判断天数
default:printf("data error");break;
}
sum=sum+day;
if(year%400==0||(year%4==0&&year%100!=0)) //判断是否闰年
leap=1;
else
leap=0;
if(leap==1&&month>2) //是闰年,并且月份大于2,加一天
sum++;
printf("%d\n",sum);
}
return 0;
}
第2个回答  2013-11-30
//#include "stdafx.h"//VC++6.0加上这一行.
#include "stdio.h"
void main(void){
int year,month,day,tb[12]={31,28,31,30,31,30,31,31,30,31,30,31},i,sum,x;
while(1){
printf("Enter the year,month,day\n");
scanf("%d%d%d",&year,&month,&day);
if(!(year%400) || !(year%4) && year%100) tb[1]++;
if(month<13 && month>0 && day>0 && day<=tb[month-1]) break;
printf("Error!Redo...\n");
}
for(sum=i=0,x=month-1;i<x;sum+=tb[i++]);
sum+=day;
printf("%d/%d/%d is %d day(s) of this year.\n",year,month,day,sum);
}本回答被提问者和网友采纳
第3个回答  2013-11-29
#include<stdio.h>
#include<time.h>
#include<dos.h>
#include<conio.h>
int main()
{
int year,month,day;
struct date d;
struct time t;
size_t t1,t2;

printf("请输入年-月-日:");
scanf("%d-%d-%d",&year,&month,&day); //输入年月日
d.da_year=year;
d.da_mon=1;
d.da_day=1; //计算该年自1月1日0时离1969年12月31日19时的秒数
t1=dostounix(&d,&t);
d.da_year=year;
d.da_mon=(char)month;
d.da_day=(char)day;
t2=dostounix(&d,&t); //计算输入日期离1969年12月31日19时的秒数
printf("%d-%d-%d是%d年的第%d天。",year,month,day,year,(t2-t1)/86400+1); //输出所需要的天数

return 0;
}
以上经过BCB编译通过
第4个回答  2013-11-29
做完发给你追问

嗯嗯

尽量做出注释

相似回答
大家正在搜