【C语言从零到入门】第十节 条件表达式与分支结构

一、条件表达式

条件表达式用来表示一个条件是否成立,它只有两个值,即真(true)和假(false)。

例如“a > 0”就是一个条件表达式,如果a>0,则条件成立,即该表达式的值为;如果a <= 0,则条件不成立,即该表达式的值为


在C语言中,用数字0表示假,用一个非0整数表示真(通常用1表示)。


条件表达式由变量与条件运算符组成:

1. C语言中的条件运算符

符号 说明
> 大于
< 小于
== 等于
!= 不等于
>= 大于等于
<= 小于等于

#include<stdio.h>

void main()
{
	int a = 1;
	printf("%d\n", a == 1); // 结果为真,输出1 
	printf("%d\n", a > 1);  // 结果为假,输出0 
	printf("%d\n", a < 1);  // 结果为假,输出0 
	printf("%d\n", a != 1); // 结果为假,输出0 
	printf("%d\n", a >= 1); // 结果为真,输出1 
	printf("%d\n", a <= 1); // 结果为真,输出1 
}

2. C语言中的逻辑运算符

符号 说明 作用
&& 并且 如果两个条件表达式都为真,则结果为真,否则结果为假
|| 或者 只要其中一个条件表达式的结果为真,则结果为真;如果两个表达式的结果都为假,则结果为假
! 取反 对一个条件表达式使用,将真变为假,将假变为真

逻辑运算符用于条件表达式间的运算:

#include<stdio.h>

void main()
{
	int a = 1, b = 2;
	printf("%d\n", a == 1 && b == 2); // 结果为真,输出1 
	printf("%d\n", !(a == 1));        // 结果为假,输出0 
	printf("%d\n", a == 2 || b == 2);  // 结果为真,输出1 
} 

二、if分支结构

1. 单分支结构

如果条件表达式的结果为真,则执行代码块中的代码

if(条件表达式)
{
    代码; 
}

2. 二分支结构

  • 如果条件表达式的结果为真,则执行代码块1中的代码;
  • 如果条件表达式的结果为假,则执行代码块2中的代码
if(条件表达式)
{
    代码块1;
}
else
{
    代码块2;
}

3 . 多分支结构

  • 如果条件表达式1的结果为真,则执行代码块1中的代码;
  • 如果条件表达式1的结果为假,且条件表达式2的结果为真,则执行代码块2中的代码;
  • 如果条件表达式1的结果为假,且条件表达式2的结果为假,则执行代码块2中的代码;
if(条件表达式1)
{
    代码块1;
}
else
{
    if(条件表达式2)
    {
    	代码块2;
    }
    else
    {
        代码块3;
    }
}

多分支结构本质上是二分支结构或单分支结构间的组合。


如果if或else下面的代码块里只有一行语句,我们可以省略“{}”,如下面的代码:

#include<stdio.h>

void main()
{
	int a = 1;
	if(a > 0)
		printf("a是正数");
	else if(a < 0)
		printf("a是负数"); 
	else
		printf("a是0");
}

三、三元表达式

条件表达式 ? 表达式1 : 表达式2

如果条件表达式的值为真,则执行表达式1,否则执行表达式2。

利用 三元表达式 可以减少代码量。

扫描二维码关注公众号,回复: 11464582 查看本文章

例如:

#include<stdio.h>

void main()
{
	int x, y;
	y = x > 0 ? x + 1 : x - 1;
	printf("%d", y);
}

等价于

#include<stdio.h>

void main()
{
	int x, y;
	x = 5;
	if(x > 0)
		y = x + 1;
	else 	
		y = x - 1;
	printf("%d", y);
} 

四、switch分支结构

switch(变量)
{
        case 1:  //如果变量的值为1,则跳转到这里,并向下执行
        	代码1;
        	break;
        case 2:  //如果变量的值为2,则跳转到这里,并向下执行
        	代码2;
        	break;
        case 3:  //如果变量的值为3,则跳转到这里,并向下执行
        	代码3;
        	break;
    	default: //如果变量的值不是1,不是2,也不是3,则跳转到这里,并向下执行
    		代码4;
    		break;
}
  • break指跳出当前switch语句。
  • 传入到switch语句里的变量只能是整数。(char型变量也是可以的,因为char型也是整数)

如果不加break,在跳转到某处时,代码就会依次向下执行,直到代码块的最后。

#include<stdio.h>

void main()
{
	int a = 2; 
	switch(a)
    {
		case 1:
			printf("a是1\n");
		case 2:
			printf("a是2\n");
		case 3:
			printf("a是3\n");
		case 4:
			printf("a是4\n");
	}
}

上面的代码会输出

a是2

a是3

a是4

这是因为在跳转到“case 2:”后,没有遇到break语句,所以代码块中余下的代码都被执行了。正确的做法是为它们添加break语句。

#include<stdio.h>

void main()
{
	int a = 2; 
	switch(a){
		case 1:
			printf("a是1\n");
			break;
		case 2:
			printf("a是2\n");
			break;
		case 3:
			printf("a是3\n");
			break;
		case 4:
			printf("a是4\n");
			break;
	}
}

小练习

编写一个程序,输入一个学生的成绩(整数),然后按下列规则输出对其成绩的评价:

  1. 90-100为 优
  2. 80-89为 良
  3. 70-79为 中
  4. 60-69为 可
  5. 60分以下为 差









解析

  1. 利用if语句

    #include<stdio.h>
    
    void main()
    {
    	int n;
    	scanf("%d", &n); 
    	if(n >= 90)
    		printf("优"); 
    	else if(n >= 80)
    			printf("良");
    		else if(n >= 70)
    				printf("中");
    			else if(n >= 60)
    					printf("可"); 
    				else
    					printf("差"); 		
    } 
    
  2. 利用switch语句

    #include<stdio.h>
    
    void main()
    {
    	int n;
    	scanf("%d", &n); 
    	switch(n / 10)
    	{
    		case 10:
    		case 9:
    			printf("优");
    			break;
    		case 8:
    			printf("良");
    			break;
    		case 7:
    			printf("中");
    			break;
    		case 6:
    			printf("可");
    			break;
    		default:
    			printf("差");
    			break;
    			
    	}
    } 
    

好了,文章到这里就结束了,我们下一节再见

点击查看更多【C语言从零到入门】系列

每周五晚20:00更新

猜你喜欢

转载自blog.csdn.net/qq_34802028/article/details/106963544