回答:很容易理解,代码如下(它的空行不一定都一样,行数可能会有变化):
#include<stdio.h>
int main()
{
int m;
printf("Input m:");
scanf("%d",&m);
if(m>0)
{
if(m%2==0)
{
printf("%d is a positive even\n",m); //是正偶数
}
else
{
printf("%d is a positive odd\n",m); //是正奇数
}
}
else if(m<0)
{
if(m%2==0)
{
printf("%d is a negative even\n",m); //是负偶数
}
else
{
printf("%d is a negative odd\n",m); //是负奇数
}
}
else
{
printf("%d is a zero .It is an even\n",m);
}
return 0;
}
这里用的是 else if,其实用if,会导致出现判断出错,因为else和它最近的if相连,没有与之匹配的,会出错,加入else if语句,是为了看起来好看和表达起来容易理解,下面这个代码也可能完成一样的功能,分成三种情况,不符合if 条件就直接过,三个里面只会有一个符合
#include<stdio.h>
int main()
{
int m;
printf("Input m:");
scanf("%d",&m);
if(m>0)
{
if(m%2==0)
{
printf("%d is a positive even\n",m); //是正偶数
}
else
{
printf("%d is a positive odd\n",m); //是正奇数
}
}
if(m<0)
{
if(m%2==0)
{
printf("%d is a negative even\n",m); //是负偶数
}
else
{
printf("%d is a negative odd\n",m); //是负奇数
}
}
if(m==0)
{
printf("%d is a zero .It is an even\n",m);
}
return 0;
}
这是常规的用法
if()
{
}
else if ()
{
}
else
{
}
回答:你说的应该是这种情况,代码如下:
#include<stdio.h>
int main()
{
int m;
printf("Input m:");
scanf("%d",&m);
if(m>0)
{
if(m%2==0)
{
printf("%d is a positive even\n",m); //是正偶数
}
else
{
printf("%d is a positive odd\n",m); //是正奇数
}
}
if(m<0)
{
if(m%2==0)
{
printf("%d is a negative even\n",m); //是负偶数
}
else
{
printf("%d is a negative odd\n",m); //是负奇数
}
}
else
{
printf("%d is a zero .It is an even\n",m);
}
return 0;
}
注意,此时,当输入大于0的数,判断,第一个符合,而第三个同样不会跳过,会输出* is a zero的结果,这与我们所想的并不符合,产生的原因是,else只与最接近的if组合,按上面这种写法,大于0时不会跳过,造成错误了,因为是三种情况选一种,上面的结构不符合,通过运行结果可能更容易帮助你理解,截图如下: