c语言:从键盘上输入一个日期,判断输入的日期是不是正确

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言:从键盘上输入一个日期,判断输入的日期是不是正确相关的知识,希望对你有一定的参考价值。

    定义一个12元素的int型数组存放1月份至12月份每个月的天数;

    根据输入的年份判断是否为闰年,对上述数组中2月份的天数进行调整;

    判断年份大于0、月份大于0小于13、日期大于0小于等于月份对应的天数为正确输入,否则为错误输入。

代码如下:

#include "stdio.h"
int main(int argc,char *argv[])
    int y,m,d,md[12]=31,28,31,30,31,30,31,31,30,31,30,31;//md是每月天数数组
    printf("Please enter the year, month, day(separated by ' ')...\\n");
    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("Your input is correct!\\n");//正确输出
    else
        printf("Error...\\n");//错误输出
    return 0;

运行样例如下:


参考技术A int IsLeapYear(int iYear)

 if (iYear<1600||iYear>=10000)
 
  return -1;
 
 if (iYear%4==0&&iYear%100!=0||iYear%400==0)//判断闰年的条件
 
  return 1;
 else
 
  return 0;
 


int DateCheck(int iYear,int iMonth,int iDay)   

 if (iYear<1600||iYear>=10000||iMonth>12||iMonth<1||iDay<1||iDay>31)
 
  return 0;
 
 if (iMonth==4||iMonth==6||iMonth==9||iMonth==11)
 
  if (iDay==31)
  
   return 0;
  
 else if (iMonth==2)
 
  if (IsLeapYear(iYear)==0)
  
   if (iDay>28)
   
    return 0;
   
  else
  
   if (iDay>29)
   
    return 0;
   
  
 
 return 1;

 核心代码就是这些,另外你自己写主函数,调用DateCheck函数就可以了。

C语言试题163之计算某一天是对应年的第几天,这一年一共多少天;计算两个日期之间相隔的天数。两个日期由键盘输入。

以上是关于c语言:从键盘上输入一个日期,判断输入的日期是不是正确的主要内容,如果未能解决你的问题,请参考以下文章

键盘输入一个字符,要求判断是不是为数字字符

用c语言编写从键盘输入一个数,判断是不是在数组a里(1~10的整数)

c语言:要求从键盘上输入其一身份证号码,判断第18位是不是正确

键盘接收一个字符串,判断其是不是是尾号 5 连的手机号?

c语言 从键盘上任意输入一个字符(字母大小写,数字,控制字符和其他字符)判断所属字符类型,只发

1. 用C语言写一段程序:从键盘上输入两数,判断其大小关系,将判断结果显示在屏幕上。