if语句可以用来控制某些代码执不执行。
if的用法:
-
if (表达式)//若括号里面的表达式为“真”,就执行语句,表达式若为“假”,就不执行语句。 语句;
注意:下方if只能控制语句A执不执行,不能控制语句B执不执行。
if (表达式) 语句A; 语句B;//此句不受上面的if控制。
-
if (表达式) { 语句1; 语句2; …… }
if…else…的用法:
-
if (表达式) 语句A; else 语句B;
-
if (表达式1) 语句A; else if (表达式2) 语句B: else if (表达式3) 语句C; else 语句D;
补充:
-
要注意
==
和=
的用法例:判断变量"data"是否等于666,若等于,则执行语句A。
if (data == 666) 语句A;
如果写成
data = 666
(把666赋值给data这个变量),系统会默认这个表达式(data = 666
)为“真”,语句A怎样都会执行。 -
要注意空语句的问题
if (表达式);//if后面没有语句,在最后直接加了分号 //上面的语句等价于下面: if (表达式) ;//这是一个空语句
-
要注意if…else…中的表达式是否用有重合的领域
if (表达式1) 语句A; else if (表达式2) 语句B: else if (表达式3) 语句C; else 语句D;
上述的if…else…的用法中,如果表达式1和表达式2都为“真”(即都成立),系统也只会执行语句A
-
要注意
if (表达句)
后面有没有加;
号if (表达式);//此句最后加了个分号 语句A; else 语句B; //上面的代码编译的时候会报错。这部分代码等价于下面的代码: if (表达式); 语句A;//这里的语句A已经不受if控制了,是一句独立的语句。 else 语句B;//编译会提示这里有错。 //由于有独立存在的语句A挡住了if,所以系统会告知说,else前面没有相匹配的if。
-
要注意最后的
else
后面有没有带表达式情形一: if (表达式1) 语句A; else if (表达式2) 语句B: else if (表达式3) 语句C; else (表达式4)//此处else后面带了表达式,编译的时候会报错。要么在else后面加if,要么删掉表达式4。 语句D;
情形二: if (表达式1) 语句A; else if (表达式2) 语句B: else if (表达式3) 语句C; else (表达式4);//此处else后面带了表达式,表达式后面还加了分号。 语句D; //像情形二这样写else语句编译的时候不会报语法错误,但是逻辑上是错误的,因为上面的代码等价于下面的代码: if (表达式1) 语句A; else if (表达式2) 语句B: else if (表达式3) 语句C; else (表达式4);//该句没有任何意义。 语句D;//语句D已经不受else的控制了。
小例子
例一
输入一个分数,判断该分数属于下列哪一等级并显示出来。(满分为100分)
90分到100分为“优秀”
80分到89分为“良好”
60分到79分为“及格”
0分到59分为“不及格”
#include <stdio.h>
int main(void)
{
float score;
scanf("%f",&score);
if(score>=90 && score<=100)
printf("优秀\n");
else if(score>=80 && score<90)
printf("良好\n");
else if(score>=60 && score<80)
printf("及格\n");
else if(score>=0 && score<60)
printf("不及格,请继续努力\n");
else
printf("成绩输入有误,请确认");
return 0;
}
例二
输入任意两个不同的整数后,以从小到大的形式打印输出在屏幕上
#include <stdio.h>
int main(void)
{
int data1,data2;
int temp;
puts("请输入两个不同的整数:");
scanf("%d%d",&data1,&data2);
if(data1 > data2)
{
temp = data1;
data1 = data2;
data2 = temp;
}
printf("你输入的两个整数从小到大的排序是:%d,%d\n",data1,data2);
return 0;
}
例三
输入任意三个不同的整数,以从小到大的形式打印输出在屏幕上
#include <stdio.h>
int main(void)
{
int data1,data2,data3;
int temp;
puts("请输入三个不同的整数:");
scanf("%d%d%d",&data1,&data2,&data3);
if(data1 > data2)
{
temp = data2;
data2 = data1;
data1 = temp;
}
if(data1 > data3)
{
temp = data3;
data3 = data1;
data1 = temp;
}
if(data2 > data3)
{
temp = data3;
data3 = data2;
data2 = temp;
}
printf("你输入的三个整数从小到大分别为:%d,%d,%d\n",data1,data2,data3);
return 0;
}