C语言中的if和if...else...

if语句可以用来控制某些代码执不执行。

if的用法:

  1. if (表达式)//若括号里面的表达式为“真”,就执行语句,表达式若为“假”,就不执行语句。
        语句;
    

    注意:下方if只能控制语句A执不执行,不能控制语句B执不执行。

    if (表达式)
        语句A;
        语句B;//此句不受上面的if控制。
    
  2. if (表达式)
    {
        语句1;
        语句2;
        ……
    }
    

if…else…的用法:

  1. if (表达式)
        语句A;
    else
        语句B;
    
  2. if (表达式1)
        语句A;
    else if (表达式2)
        语句B:
    else if (表达式3)
        语句C;
    else
        语句D;
    

补充:

  1. 要注意===的用法

    例:判断变量"data"是否等于666,若等于,则执行语句A。

    if (data == 666)
        语句A;
    

    如果写成data = 666(把666赋值给data这个变量),系统会默认这个表达式(data = 666)为“真”,语句A怎样都会执行。

  2. 要注意空语句的问题

    if (表达式);//if后面没有语句,在最后直接加了分号
    //上面的语句等价于下面:
    if (表达式)
        ;//这是一个空语句
    
  3. 要注意if…else…中的表达式是否用有重合的领域

    if (表达式1)
        语句A;
    else if (表达式2)
        语句B:
    else if (表达式3)
        语句C;
    else
        语句D;
    

    上述的if…else…的用法中,如果表达式1和表达式2都为“真”(即都成立),系统也只会执行语句A

  4. 要注意if (表达句)后面有没有加

    if (表达式);//此句最后加了个分号
        语句A;
    else
        语句B;
    //上面的代码编译的时候会报错。这部分代码等价于下面的代码:
    if 
        (表达式);
    语句A;//这里的语句A已经不受if控制了,是一句独立的语句。
    else
        语句B;//编译会提示这里有错。
    //由于有独立存在的语句A挡住了if,所以系统会告知说,else前面没有相匹配的if。
    
  5. 要注意最后的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;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值