C语言,下面的程序为什么我编完之后,打出2014 2 29 显示的是有效?(题目是 判断输入的日期是否有效)

#include<stdio.h>
int main()
{
int a,b,c,leap;
printf("请分别输入年月日:");
scanf("%d%d%d",&a,&b,&c);
if(a%4==0&&a%100!=0||a%400==0)
leap=1;
else
leap=0;
if((b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&c<=31)
printf("您输入的日期有效");
else if(b==2)
{if(leap=1)
{
if(c<=29)
printf("您输入的日期有效");
else
printf("您输入的日期无效");
}
else if(c<=28)
printf("您输入的日期有效");
else
printf("您输入的日期无效");
}
else if((b==4||b==6||b==9||b==11)&&c<=30)
printf("您输入的日期有效");
else
printf("您输入的日期无效");
return 0;
}

//格式真乱  少了个if(leap = 0 )吧

追问

能不能告诉我格式怎样写才是正确的或者帮我调整一下,我只是个新手,谢谢啦,么么哒~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-25
if(leap==1) //应该用两个等号判断追问

那为什么没有显示编译错误呢?==是不是只在判断句中使用呢?谢谢

追答

==只在判断句中使用

=表示赋值!
if ( leap=1 ) //这是合法的语句,所以编译不报错 其意义为给leap赋值为1,if条件为恒为真

追问

请问if(leap=1)有什么意义呢?加if干啥?

追答

if(leap==1) //判断是否是闰年,当是2月时,如果是闰年,则检查最大天数为29,平年最大天数是28

追问

额,是=不是==

追答

if ( leap=1 ) //这是合法的语句,所以编译不报错 其意义为给leap赋值为1,if条件为恒为真

不客气,解决问题就好

本回答被提问者采纳
相似回答