从零开始跟我学 C 语言之分支结构(上)

2023-02-28 00:00:00 条件 逻辑 表达式 运算符 角形
  

Hi!这里是渔火。今天我们来讲分支结构。计算机在执行程序时,通常都是按照语句的书写顺序执行的,但在许多情况下需要根据条件选择所要执行的语句,这就选择所要的语句。C语言中用于实现分支结构的控制语句主要有:if语句、switch语句。

我们来看一个例子感受下分支结构。
【1.1】输入三角形的三条边,判断能否构成三角形,若能则计算并输出三角形的面积,否则给出出错提示。
#include<stdio.h>#include<math.h>//2023.2.1渔火 Linux迷 www.linuxmi.comint main(){  int a,b,c;  float ar;  double s;  printf("请输入三角形的三条边长");  scanf("%d,%d,%d",&a,&b,&c);  s=(a+b+c)/2.0;  if(a+b<=c||b+c<=a||a+c<=b)    printf("不能构成三角形\n");  else {    ar=sqrt(s*(s-a)*(s-b)*(s-c));    printf("三角形的面积是:%f\n",ar);  }           //2023.2.1渔火 Linux迷 www.linuxmi.com  return ;}
运行结果如下:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                     ⚡ gcc -o linuxmi linuxmi.c -lm
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com ⚡ ./linuxmi请输入三角形的三条边长7,8,9三角形的面积是:26.832815
分析:程序运行时,首先输入三角形的三条边,分别保存在三个整型变量a,b,c中,然后根据三角形的构成条件,判断任意两条边之和是否大于第三边。如果不满足这个条件,则三条边不能构成三角形,如果满足这个条件,就可以根据相应的公式计算三角形的面积。
1、关系运算符。关系运算符用于判断两个操作数的大小关系。
注意:(1)关系运算符都是双目运算符,其结合方向是左结合。(2)关系运算符的优先级低于算术运算符,但高于赋值运算符。(3)关系运算符中,>、<、>=、<=的优先级相同,==、!=的优先级相同,前者的优先级高于后者。
2、关系表达式。用关系运算符将两个表达式链接起来的式子称为关系表达式。关系表达式的一般形式为:表达式1关系运算符 表达式2.功能:比较两个表达式的大小,返回一个逻辑值。关系表达式中允许出现嵌套的情况。
注意:(1)注意区分运算符”=“和”==“。”=“是赋值运算符,”==“是关系运算符。(2)对实数进行相等判断可能得不到正确的结果。(3)关系表达式中可以出现赋值运算符。
关系表达式主要用于分支结构的条件判断。关系表达式的结果是一个逻辑值”真“或”假“,由于C语言中没有逻辑值类型的数据,因此用”1“表示“真”,”0“表示”假“。
【2.1】关系运算
#include<math.h>//2023.2.1渔火 Linux迷 www.linuxmi.comint main(){    char c='m';  int i=10,j=20,k=30;  float x=13e+5,y=10.85;  printf("%d,%d",'a'+5<c,-i-2*j>=k+1);  printf("%d,%d",1<j<5,x-5.25<x+y);  printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);            //2023.2.1渔火 Linux迷 www.linuxmi.com   return ;}
运行结果如下:


1、逻辑运算符。关系表达式只能描述描述单一的条件。然而逻辑运算符可以将若干个关系表达式连接起来才能更好的描述条件,
注意:与运算符&&和或运算符||都是双目运算符,非运算符!为单目运算符。
2、逻辑运算符。用逻辑运算符将两个表达式链接起来的式子称为逻辑表达式。逻辑表达式的一般形式为:表达式1 逻辑运算符 表达式2或逻辑运算符 表达式1。逻辑表达式的结果也是一个逻辑值”真“或”假“,即为”1“或”0“。
小白提示:
(1)参与逻辑运算的数据可以是1和0,也可以是非零值和0,还可以是任何类型的数据,但终都是以非0和0来判断他们是”真“或”假“。
(2)在逻辑表达式中也可以使用赋值运算符。
(3)C语言规定,只对决定整个表达式值所需的少数目的子表达式进行计算。即由在若干个子表达式组成的逻辑表达式中,从左向右计算,当计算出一个子表达式的值就确定了整个逻辑表达式的值,之后就不再计算右边的剩下的子表达式的值,这种情况称之为”短路“。

【3.1】逻辑运算符

#include<stdio.h>#include<math.h>//2023.2.1渔火 Linux迷 www.linuxmi.comint main(){    int a=8,b=8,c=6,d;  printf("%d,",!a&&!b&&c);  printf("%d,",!a||!b||c);  printf("%d\n",a>=b&&b>c);  d=c--||(b-6)&&a++;  printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);            //2023.2.1渔火 Linux迷 www.linuxmi.com   return ;}
运行结果如下:
1、条件运算符。条件运算符由”?“和”:“两个符号组成,用于条件求值,它是一个三目运算符,需要三个操作数。条件运算符的优先级低于逻辑运算符、高于赋值运算符,它是右结合。
2、条件表达式。由条件运算符将3个表达式连接起来的式子称为条件表达式,其一般形式为:表达式1?表达式2:表达式3。条件表达式的执行顺序是先计算表达式1的值,如果值不为0,表示条件为真,否则表达式2 的值作为整个条件表达式的值,否则表达式3的值作为整个条件表达式的值。
小白提示:
(1)条件表达式中的表达式1的类型可以与表达式2和表达式3不同,表达式2和表达式3的类型也可以不同,此时系统会自动进行转换,结果为表达式2 和表达式3别类型较高的,并将其作为条件表达式的类型。
(2)条件表达式中表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式或函数表达式。
(3)条件表达式允许嵌套。

相关链接:

  1. https://www.linuxmi.com/learn-c-language-from-scratch-1.html

  2. https://www.linuxmi.com/learn-c-language-from-scratch-2.html

  3. https://www.linuxmi.com/learn-c-language-from-scratch-3.html

  4. https://www.linuxmi.com/learn-c-language-from-scratch-4.html

  5. https://www.linuxmi.com/learn-c-language-from-scratch-5.html




来自:Linux迷
链接:https://www.linuxmi.com/c-language-branch-structure-1.html

相关文章