當前位置:首頁 » 編程語言 » c語言if語句中判斷日期
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言if語句中判斷日期

發布時間: 2023-05-25 23:39:18

『壹』 c語言中怎樣判斷輸入的日期是否合法要求用結構體並且能判斷例如2000-3-21中的每一部分是否合法(包括-)

struct Date
{
int year;
int month;
int day;
char ch;
};

void main()
{
Date date;
printf("please input date\n");
scanf("%d%c%d%c%d",&date.year,&date.ch,&date.month, &date.ch,&date.day);
if(ch != '-' || month > 12 || month < 1 ||day < 0 || day > n) n的值根據年月判斷
{
printf("error\n");
}

再給你一個判斷閏年的程序,自己試著組合下
#include<stdio.h>

void main()
{
int year;
printf("please input year :\n");
scanf("%d",&year);
if(year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
{
printf("yes!\n");
}
else
printf("no!");
}

『貳』 c語言判斷日期合法性

手邊沒有IDE,查錯有點費事,寫了一個

#include<stdio.h>
voidyes();
voidno();
intmain(void)
{
intyear,month,day;
printf("PleaseInputDataLike1992-04-03: ");
scanf("%d-%d-%d",&year,&month,&day);
if(year<0||year>3000||day>31||day<0||month>12||month<0)
{
printf("PleaseInputRightNumber! ");
return-1;
}
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
if(day>0&&day<=31)
{
yes();
}
else
{
no();
}
}
elseif(month==2)
{
if((year%4==0&&year%100!=0)||year%400==0&&year%100==0)
{
yes();
}
else
{
no();
}
}
else
{
if(day>0&&day<31)
{
yes();
}
else
{
no();
}
}
return0;
}
voidyes()
{
printf("YES ");
}
voidno()
{
printf("NO ");
}

『叄』 c語言判斷日期

首先這個函數的輸入是什麼?
(年,月,日)

當不考慮閏年時,只須(月,日)

然後先考查月的取值范圍(1~12)的整數

此時可以進行第一步判斷

接下來,你要作的很簡單

比如你可以用個switch來作這些事情

比如我來作:

switch(月)
case 1,3,5,7,8,10,12:
return (日 > 0 && 日 <= 31) ?true:false; break;
case 4,6,9,11:
return (日 > 0 && 日 <= 30) ?true:false; break;
case 2:
return (日 > 0 && 日 <= 28) ?true:false; break;

defalts:
...............

另外若加上閏年的情況也不會很復雜,只是須要以年來判斷是不是閏年,然後把那個28改成一個返回函數即可

『肆』 c語言:從鍵盤上輸入一個日期,判斷輸入的日期是否正確

  1. 定義一個12元素的int型數組存放1月份至12月份每個月的天數;

  2. 根據輸入的年份判斷是否為閏年,對上述數組中2月份的天數進行調整;

  3. 判斷年份大於0、月份大於0小於13、日期大於0小於等於月份對應的天數為正確輸入,否則為錯誤輸入。

代碼如下:

#include"stdio.h"
intmain(intargc,char*argv[]){
inty,m,d,md[12]={31,28,31,30,31,30,31,31,30,31,30,31};//md是每月天數數組
printf("Pleaseentertheyear,month,day(separatedby'')... ");
scanf("%d%d%d",&y,&m,&d);
md[1]=y%4==0&&y%100||y%400==0?29:28;//閏年調整
if(y>0&&m>0&&m<13&&d>0&&d<=md[m-1])//判斷輸入是否正確
printf("Yourinputiscorrect! ");//正確輸出
else
printf("Error... ");//錯誤輸出
return0;
}

運行樣例如下:


『伍』 C語言:判斷輸入的一個日期的正確性

用SWITH對月份進行選擇 然後每個月份下都用IF做個判斷 然後輸出 最後再對2單獨進行判斷 判斷閏年的演算法是year%400==0||(year%4==0&&year%100!=0)

『陸』 用c語言編程,接收年月日,判別是否為合法日期。

#include "stdio.h"
int main()
{
int year,month,day;
int sign=0,dayvalid;
printf("請輸入年月日:\n");
scanf("%d,%d,%d",&year,&month,&day);
if ((year%4==0&&year%100!=0)||year%400==0)
{
sign =1;
}
if (month>=1&&month<=12)
{
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dayvalid = 31;
break;
case 4:
case 6:
case 9:
case 11:
dayvalid = 30;
break;
case 2:
if (sign ==1)
dayvalid = 29;
else
dayvalid = 28;
break;
default:
break;
}
if (!(day >0&&day <=dayvalid))
{
printf("日期格式錯誤\n");
return 2;
}
}
else
{
printf("月份格式錯誤:\n");
return 1;
}

printf("日期格式正確\n");
return 0;
}

『柒』 c語言中 求解如何判斷輸入的年月日是否合理

代碼裡面的主要問題時:

  1. if((month==1,3,5,7,8,10,12)這樣的判斷語句是有問題,應該使用||運算符的;

  2. if和else語句沒有配合好,主要是你的代碼嵌套比較多,一定要注意代碼縮進,否則自己可能都沒有發現那個地方else沒有寫的。。


下面的代碼,是修改後,運行結果附在後面:

#include<stdio.h>

#include<stdlib.h>
intmain()
{
intyear,month,day,sum;
printf("輸入年月日(例如:2013.4.5):");
scanf("%d,%d,%d",&year,&month,&day);

if(year>0&&month<=12)
{
if(((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))&&(day<0||day>31))
{
printf("該月不存在輸入的天數,請重新輸入1 ");
}
elseif(((month==4)||(month==6)||(month==9||11))&&(day<0||day>30))
{
printf("該月不存在輸入的天數,請重新輸入2 ");
}
elseif(month==2)
{
if(((year%4==0&&year%100!=0)||year%400==0)&&(day<0||day>29))
{
printf("二月不存在輸入的天數,請重新輸入3 ");
}
else
{
if(((year%4!=0&&year%100!=0)||year%400!=0)&&(day<0||day>28))
{
printf("二月不存在輸入的天數,請重新輸入4 ");
}

}
}
else
{
switch(month)
{
case1:sum=0;break;
case2:sum=31;break;
case3:sum=59;break;
case4:sum=90;break;
case5:sum=120;break;
case6:sum=151;break;
case7:sum=181;break;
case8:sum=212;break;
case9:sum=243;break;
case10:sum=273;break;
case11:sum=304;break;
case12:sum=334;break;
}
sum+=day;
if(((year%4==0&&year%100!=0)||year%400==0)&&(month>2))
{
sum++;
printf("這是%d年的第%d天 ",year,sum);
}
else
{
printf("這是%d年的第%d天 ",year,sum);
}
}
}

system("pause");
return0;
}

運行結果為:

『捌』 C語言中,如何驗證輸入日期的正確性!~

  1. 主要驗證三個信息:

    a.驗證月數是否在1~12,m>0&&m<=12

    b.驗證日數是否超過當月,d>0&&d<=month[m-1]

    c.對平閏年的判斷,if((y%4==0&&y%100!=0)||y%400==0)month[1]=29

  2. 常式:

    #include<stdio.h>
    staticintis_valid_date(inty,intm,intd)
    {
    intmonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    if((y%4==0&&y%100!=0)||y%400==0)
    month[1]=29;
    returnm>0&&m<=12&&d>0&&d<=month[m-1];
    }
    intmain(void)
    {
    inty,m,d;
    scanf("%4d-%2d-%2d",&y,&m,&d);
    if(is_valid_date(y,m,d))
    printf("validdate ");
    else
    printf("invaliddate ");
    return0;
    }