关于C语言的几个问题.请教大虾

来源:百度知道 编辑:UC知道 时间:2024/06/20 12:15:06
1.假定所有变量都已正确定义,则程序段:
int a=0,y=10;
if(a=0)y--;else if(a>0)y++;
else y+=y;
运行后y的值是

补充:为什么有两个else而且没有花括号,那计算机不是会不能判定第2个else到底属于哪个语句.

2输入年号和月份,输出该年的该月的天数.(一个年份先判断是否闰年).

下边是我的编程.麻烦 看下是否正确.
#include<stdio.h>
void main()
{ int temp=0,month,year;
printf("Please input (year,month): ");
scanf("%d,%d",&year,&month);
if((year%400==0)||(year%4==0&&year%100!=0))
temp=1;
if(month==2)
{ if(temp)printf("%d year %d month have 29 ",year,month);
else printf("%d year %d month have 28 ",year,month);
}
else if(month%2==0)
printf("%d year %d month have 30 ",year,month);
else printf("%d year %d month have 31 ",year,month);
getch();
}

20
if(a=0)y--;//如果你这里中间漏了个等号的话,结果是9
else if(a>0)y++;
else y+=y;
当a=4 时 y--
a>0 y++
其它 y=y+10

一句话的话,没有{}也没所谓

_____________________________
else if(month%2==0)
printf("%d year %d month have 30 ",year,month);
else printf("%d year %d month have 31 ",year,month);
getch();
7月有31天,8月也有31天,一个个月来吧

第一个问题,第一个if里面是不是少了个“=”,如果是的话结果y=9,至于为什么没有花括号,那是因为这是if...else if........else的结构,意思是程序先判断第一个if如果不成立在判断下一个else if如果成立则不再判断,所以不存在不知道else属于谁的问题
第二个问题请说明下你的程序是为了解决什么问题

1.如果没有括号,else总是和离它最近的if配对.

2.
else if(month%2==0)
printf("%d year %d month have 30 ",year,month);
else printf("%d year %d month have 31 ",year,month);

这个是错的:1,3,5,7,8,10,12是大月,有31天,
其他的是小月,只有30天,要分开判断.

int a=0,y=10;
if(a=0)y--;else if(a>0)y++;
else y+=y;
y = 9
if 里表达错误 应该是==

当有多句的时候必须用{},一句可以不需要{}