Chapter 5 选择语句

5.1 逻辑表达式

  • 关系运算符:输出结果为0或1,有> < >= <= (关系运算符的优先级低于算术运算符)
  • 判等运算符:主要有==和 !=(优先级低于关系运算符)
  • 逻辑运算符:输出结果为0或1☟

逻辑运算符

5.2 if语句

基本格式为:if(表达式)语句

  • 表达式两边的圆括号是必须的,但是不要分号。

5.2.1 复合语句

如果需要在if语句中使用多条语句,就需要加上花括号。

if (line_num == MAX_LINES){
    line_num = 0;
    page_num++;
    }

5.2.2 else子句

基本格式为:if(表达式)语句 else 语句

  • if语句和else语句 都是以分号结尾

5.2.3 条件表达式

基本格式为:表达式1 ? 表达式2 : 表达式3

  • C语言中唯一一个三元运算符
  • 计算表达式1的值,如果此值不为0,那么计算表达式2的值,如果为0,结果为表达式3
  • 除了赋值运算符,条件运算符的优先级低于所有的运算符

5.3 switch语句

// 基本格式为
**switch (表达式)  {
    case 常量表达式 :  语句
    ...
    case 常量表达式 :  语句
    default  :  语句  }**

  • 一个case后面只能有一个常量表达式
  • 多个case可以共同使用一个常量表达式,也可以放在同一行
  • 不一定要求default分支,如果没有匹配,会直接传给switch后面的语句

break语句的作用

  • 执行break语句非导致程序跳出switch语句,继续执行switch后面的语句
  • 如果没有break语句,会跳转到下一个分支

  • TEST
/*用户输入两个日期,显示哪一个日期更早*/

#include <stdio.h>

int main(){
    int d1,m1,y1;
    int d2,m2,y2;

    printf("Enter the first date: ");
    scanf("%d/%d/%d",&d1,&m1,&y1);
    printf("Enter the second date: ");
    scanf("%d/%d/%d",&d2,&m2,&y2);

    int ans,f = 0,s = 1;
    ans = (y1 == y2) ? ((m1 == m2) ? ((d1 < d2) ? f : s) :((m1 < m2) ? f : s)) : ((y1 < y2) ? f : s);
    if (ans) printf("earlier is %02d/%02d/%02d ",d2,m2,y2);
    else printf("earlier is %02d/%02d/%02d ",d1,m1,y1);
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容