當前位置:編程學習大全網 - 編程語言 - C語言定義壹個結構體變量(包括年、月、日),輸入壹個日期,計算該日在本年中是第幾天。

C語言定義壹個結構體變量(包括年、月、日),輸入壹個日期,計算該日在本年中是第幾天。

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct date_time

{

int year;

int month;

int day;

}DATE;

int main()

{

int i,len,flag,day_cnt;

char str[50],buf[10];

struct date_time date;

int mon[12];

while(1)

{

//初始化月份數組

for(i=0;i<12;i++) mon[i] = 31;

mon[1] = 28;

mon[3] = 30;

mon[5] = 30;

mon[8] = 30;

mon[10] = 30;

printf("please input date eg(20010203):");

memset(str,0,50);

scanf("%s",str);

len = strlen(str);//20121212

if(len!=8)//長度不對直接報錯 0000 - 9999

{

printf("input error!\n");

continue;

}

flag = 1;

while(len--)//不是數字報錯

{

if(str[len]<'0'||str[len]>'9')

{

printf("input error!\n");

flag = 0;

break;

}

}

if(flag)//如果上面檢測有錯 不進行if裏面的操作

{

//判斷是否為閏年

memset(buf,0,10);

strncpy(buf,str,4);

date.year = atoi(buf);

//printf("date.year = %d \r\n",date.year);

if((date.year%4==0)&&(date.year%100!=0)||(date.year%400==0)) mon[1]=29;

//判斷月份是否合法

memset(buf,0,10);

strncpy(buf,str+4,2);

date.month = atoi(buf);

//printf("date.month = %d \r\n",date.month );

if(date.month>12||date.month<1)

{

printf("month input error!\n");

continue;

}

//判斷日期是否合法

memset(buf,0,10);

strncpy(buf,str+6,2);

date.day= atoi(buf);

//printf("date.day = %d \r\n",date.day);

if(date.day>31||date.day<1)

{

printf("day input error!\n");

continue;

}

//比如輸入20050525 有4個月+25天

//把數組前4個月的天數加起來 分別對應數組下標0 1 2 3

//所以下面循環要月份減壹

day_cnt = 0;

for(i=0;i<date.month-1;i++)

{

day_cnt += mon[i];

printf("mon[%d] = %d \r\n",i,mon[i]);

}

day_cnt += date.day;

printf("days = %d \r\n",day_cnt);

break;

}

}

return 0;

}

樓主 求分!不懂可以給我留言!

  • 上一篇:谷歌、Meta等四大科技巨頭倡議廢除閏秒
  • 下一篇:關於PIC16F1933定時器使用
  • copyright 2024編程學習大全網