判断日期合法的c语言
‘壹’ 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语言:判断输入的一个日期的正确性
用SWITH对月份进行选择 然后每个月份下都用IF做个判断 然后输出 最后再对2单独进行判断 判断闰年的算法是year%400==0||(year%4==0&&year%100!=0)
‘叁’ 编写程序:输入一个日期(年、月、日),判断日期是否合法。怎么写求代码
#include "stdio.h"
void printf(int a)
{
if(a==1)
printf("日期合法\n");
else
printf("日期非法\n");
}
void main()
{
void printf(int a);
int x,y,z,i;
scanf("%d,%d,%d\n",&x,&y,&z);
if(x%400==0||(x%4==0&&x%100!=0))
{
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
i=1;
else if(y==2)
i=2;
else if(y==4||y==6||y==9||y==11)
i=3;
else
i=4;
switch(i)
{
case 1:
if(z>=32)
printf(0);
else
printf(1);break;
case 2:
if(z>=30)
printf(0);
else
printf(1);break;
case 3:
if(z>=31)
printf(0);
else
printf(1);break;
case 4:printf(0);break;
default: printf(0);break;
}
}
else
{
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
i=1;
else if(y==2)
i=2;
else if(y==4||y==6||y==9||y==11)
i=3;
else
i=4;
switch(1)
{
case 1:
if(z>=32)
printf(0);
else
printf(1);break;
case 2:
if(z>=29)
printf(0);
else
printf(1);break;
case 3:
if(z>=31)
printf(0);
else
printf(1);break;
case 4:
printf(0);
default: printf(0);break;
}
}
}
帮你编好了,直接考到VC++里面运行即可
运行后输入3个整数,分别代表年月日,空格空开,enter结束
‘肆’ c语言有什么简单办法判断一个字符串是否是合法日期
推荐使用正则表达式,对于验证日期、手机号或邮箱的合法性很有用!
‘伍’ 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语言编程,接收年月日,判别是否为合法日期。
#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语言 日期合法性
你这样写过于把编程复杂化了,其实这个简单点就是定义两个数组(当然,一个也可以):int arr1[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /* 平年调用这个数组 */int arr2[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /* 闰年调用这个数组 */判断某年year是否为闰年的条件:(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)接下来,自己编程实现。给你提示,就这么多了。
‘捌’ 求改c语言程序,判断日期是否合法并计算星期,大部分日期都对,但肯定有日期不对,麻烦高人指点
恰好我的一个项目上使用RTC,要根据年月日计算星期,在调用这个函数之前,已经对年月日做了限定,判断输入参数是否合法的代码比较简单,就不贴了.
/**
* 简介:已知年月日计算星期
*
* 描述: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
* @param y:年,比如2013年
* @param m:月,该数大于等于3,一月份该数为13,二月份该数为14
* @param d:日
* @return返回星期,=0:星期一 ;=6:星期天
*/
static uint8_t GetWeekDay(uint16_t y,uint8_t m,uint8_t d)
{
uint8_t tem8;
if((m==1)||(m==2))
{
m+=12;
y=y-1;
}
tem8=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
return(tem8+1);
}
‘玖’ 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语言中先输入一个日期然后判断是否合法若不合法则继续输入至合法的程序(分年月日输入)
#include<stdio.h>
int main()
{int y,m,d,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
do{printf("Please enter a date(yyyy m d):");
scanf("%d%d%d",&y,&m,&d);
}while(y<1||m<1||m>12||d<1||d>a[m]+(m==2)&(y%4==0&&y%100>0||y%400==0));
printf("%d-%d-%d is a valid date!\n",y,m,d);
return 0;
}