if语句
1.if语句的语法结构
以下三种结构。分为单分支语句和多分支语句
//第一种 //第二种 //第三种
if(表达式) if(表达式) if(表达式)
语句; { {
语句一; 语句一;
} }
else else if()
{ {
语句二; 语句二;
} }
else
{
语句三;
}
2.代码中的注意事项
(1)if(表达式) 后不要加分号。
(2)if 表达式判断为真时,会往下执行其对应的语句,否则,跳过该段语句或执行else后语句。
(3)如何判断真假? 0表示假,非0表示真。
(4)if 中表达式书写时,应注意写为 常量 == 变量 格式,因为在 变量==常量 or 变量=常量 时,代码均可执行,错误时不易找到;将格式写为 常量 == 变量 ,当==敲为=时,代码无法执行,会报错。同理可以用在类似的 选择、循环语句中。
//例如下列
int a=1;
scanf("%d",&a);
if(4 == a)
{
printf("%d\n",a);
}
else
{
printf("nothing\n");
}
//写为
int a=1;
scanf("%d",&a);
if(a = 4)//将 == 写为 = ,导致代码的结果出错误,且因为代码正常执行,难以找到错误
{
printf("%d\n",a);
}
else
{
printf("nothing\n");
}
代码正确时,执行结果应为输入4→4,输入其他数字→nothing
但下列写为 = 的结果则无论输入什么都是 4
(5)养成好习惯,在 if 和else 后随手加上 {},防止分辨不清对应的if-else语句。其中须注意,else就近不完整的if 组成完整的if语句
int a = 1;
int b = 2;
if (1 == a)
if (1 == b)
printf("b>a");
else
printf("a>b");
如上图,输出结果应该为什么呢? 答案是a>b,而不是什么都不输出
如果你的答案不正确,那么将 {} 带上,看看答案和你的一样吗?
下列代码的结果是无输出,为什么上下不加括号的结果不一样呢。再看看(5)的内容吧。
int a = 1;
int b = 2;
if (1 == a)
{
if (1 == b)
printf("b>a");
}
else
{
printf("a>b");
}
3.做一个小练习
使用if语句来判断一个数是否是奇数;输出一个1-100之间的奇数。
//判断是否为奇数
int a = 1;
scanf("%d", &a);
if (1 == a%2)
{
printf("a为奇数");//注意有的编译器中汉字可能输出为乱码
}
else
{
printf("a不是奇数");
}
//while循环
int a = 1;
while (a<=100)
{
if (1 == a%2)
{
printf("%d ", a);
}
a++;
}
//for循环
int a = 1;
for (a=1 ;a<=100 ;a++)
{
if (1 == a%2)
{
printf("%d ", a);
}
}