萌新一枚,向大佬们求救
这是一个判断日期是否有效的代码
#include<stdio.h>
int main(void)
{
int d; //day
int m; //month
int y; //year
printf("Input a date.(dd-mm-yyyy)\n");
scanf("%d-%d-%d",&d,&m,&y);
if (m<=12 && d<=31)
{
if ((m==4 || m==6 || m==9 || m==11))
if (d<=30)
{
printf("The date is: %d/%d/%d",d,m,y);
}
else
{
printf("Wrong date.");
}
}
else if (m==2)
{
if (((0 == y%4) && (0 != y%100))||(0 == y %400))
if (d<=29)
{
printf("The date is:%d/%d/%d",d,m,y);
}
else
{
printf("Wrong date.");
}
}
else
{
printf("Das Datum ist korrekt.%d/%d/%d",d,m,y);
}
return 0;
}
//按照你的原始代码修改(一定要有完备的括号)
#include<stdio.h>
int main(void)
{
int d; //day
int m; //month
int y; //year
printf("Input a date.(dd-mm-yyyy)\n");
scanf("%d-%d-%d",&d,&m,&y);
if (m<=12 && d<=31) {
if ((m==4 || m==6 || m==9 || m==11)) {
if (d<=30) {
printf("The date is: %d/%d/%d",d,m,y);
} else {
printf("Wrong date.");
}
} else if (m==2) {
if (((0 == y%4) && (0 != y%100))||(0 == y %400)) {
if (d<=29) {
printf("The date is:%d/%d/%d",d,m,y);
} else {
printf("Wrong date.");
}
}
} else {
printf("Das Datum ist korrekt.%d/%d/%d",d,m,y);
}
}
return 0;
}
/* 写代码一定要注意编程规范(尤其是花括号和小括号,不要嫌多)和逻辑层次,用最简单的代码解决问题才是最厉害的,请参考*/
#include<stdio.h>
static inline int IsLeapYear(int y)
{
return (((0 == y % 4) && (0 != y % 100)) || (0 == y % 400));
}
int main(void)
{
int d; //day
int m; //month
int y; //year
int dayCheck[] = {31,29,31,30,31,30,31,31,30,31,30,31};
printf("Input a date.(dd-mm-yyyy)\n");
scanf("%d-%d-%d",&d,&m,&y);
if ((m < 1) || (m > 12)) {
printf("Wrong date.");
return 0;
}
if (d > dayCheck[m - 1]) {
printf("Wrong date.");
return 0;
}
if ((!IsLeapYear(y)) && (m == 2) && (d > 28)) {
printf("Wrong date.");
return 0;
}
printf("The date is:%d/%d/%d",d,m,y);
return 0;
}
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html