C语言学习笔记—程序流程控制

前言 

  •  在C语言中,共有三大常用的程序结构:

  1. 顺序结构:代码从前往后依次执行,没有任何“拐弯抹角”,不跳过任何一条语句,所有的语句都会被执行到。
  2. 选择结构:也叫分支结构。代码会被分成多个部分,程序会根据特定条件(某个表达式的运算结果)来判断到底执行哪一部分。
  3. 循环结构:程序会重新执行同一段代码,直到条件不再满足,或者遇到强行跳出语句。

条件分支语句

  • 关系运算符: 

  1. 在C语言中,0代表false,非0代表true。在C语言的运算符优先级分类详见下链接:https://blog.csdn.net/qq_34935373/article/details/88036824
         关系运算符        含  义        数学中的表示
                <         小于                <
                <=    小于或等于                ≤
                >         大于                >
                >=    大于或等于                ≥
                ==        等于                =
                !=       不等于                ≠
  2. 在六个关系运算符中,<、<=、>、>=的优先级相同,高于==和!=,==和!=的优先级相同。
  • 逻辑运算符:

  1. 在C语言中,我们一般将零值称为“假”,将非零值称为“真”。逻辑运算的结果也只有“真”和“假”,“真”对应的值为 1,“假”对应的值为 0。
        运算符                             说明 结合性                 举例
    &&       与运算,双目,对应数学中的“且” 左结合    1&&0、(9>3)&&(b>a)
    ||       或运算,双目,对应数学中的“或” 左结合       1||0、(9>3)||(b>a)
    !       非运算,单目,对应数学中的“非” 右结合           !a、!(2<5)
  2. 逻辑运算符和其它运算符优先级从低到高依次为:赋值运算符(=) < &&和|| < 关系运算符 < 算术运算符 < 非(!)。 
  • if-else语句:

  1. if 和 else 是两个新的关键字,if 意为“如果”,else 意为“否则”,用来对条件进行判断,并根据判断结果执行不同的语句。由于if else 语句可以根据不同的情况执行不同的代码,所以也叫分支结构或选择结构总结起来,if else 的结构为:
    if(判断条件){
        语句块1
    }else{
        语句块2
    }
  2. 如果语句块中只有一个语句,也可以省略{ }。
  3. 有的时候,我们需要在满足某种条件时进行一些操作,而不满足条件时就不进行任何操作,这个时候我们可以只使用 if 语句。也就是说,if else 不必同时出现。
  4. if else 语句也可以多个同时使用,构成多个分支,形式如下:
    if(判断条件1){
        语句块1
    } else  if(判断条件2){
        语句块2
    }else  if(判断条件3){
        语句块3
    }else  if(判断条件m){
        语句块m
    }else{
         语句块n
    }
  5. if 语句也可以嵌套使用,例如:
    #include <stdio.h>
    int main(){
        int a,b;
        scanf("%d %d",&a,&b);
        if(a!=b)
        {
            if(a>b) 
                printf("a>b\n");
            else 
                printf("a<b\n");
        }else{
            printf("a=b\n");
        }
        return 0;
    }
  6. if 语句嵌套时,要注意 if 和 else 的配对问题。C语言规定,else 总是与它前面最近的 if 配对。
  • switch与break,default:

  1. switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句,基本格式如下:
    switch(表达式)
    {
        case 整型数值1: 语句 1; break;
        case 整型数值2: 语句 2; break;
        ......
        case 整型数值n: 语句 n; break;
        default: 语句 n+1; break;
    }
  2.  case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。如下:
  3. case 1+2: printf("..."); break;  //正确
    case 'A': printf("..."); break;  //正确,字符和整数可以相互转换
    case 'A'+1: printf("..."); break;  //正确,字符和整数可以相互转换
    case 9.5: printf("..."); break;  //错误,不能为小数
    case a: printf("..."); break;    //错误,不能包含变量
    case a+1: printf("..."); break;  //错误,不能包含变量
  4. default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。
  • 条件运算符:

  1. 语法格式为:表达式1 ? 表达式2 : 表达式3
  2. 条件运算符是C语言中唯一的一个三目运算符,其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。如:
    c = (a > b) ? a : b;    //如果a大于b,则c等于a,否则,c等于b
  3. 条件运算符的优先级低于关系运算符和算术运算符,但高于赋值符。如上述程序段的括号可以省去。
  4.  条件运算符?和:是一对运算符,不能分开单独使用。
  5. 条件运算符的结合方向是自右至左。例如下面2个程序段等价:
    a>b ? a : c>d ? c : d;
             <=>
    a>b ? a : ( c>d ? c : d );
  •  goto:

  1. goto语句是一种无条件转移语句,使用格式为:
    goto  语句标号;
  2. goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。

循环语句

  •  while与do while循环:

  1. while循环一般形式为:
    while(表达式)
    {
        语句块;
    }
  2. while循环规则:先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。
  3. do while循环一般形式:
    do
    {
        语句块;
    }while(表达式);
  4. do while循环规则:先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”。
  • continue与break:

  1. continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。
  2. 当 break 关键字用于 while、for循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。
  3. break与continue的对比:break 用来结束所有循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。
  • for循环:

  1. 一般形式为:
    for(表达式1; 表达式2; 表达式3)
    {
        语句块;
    }
  2. 规则:“表达式1”仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式3”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。一般形式也可写为:
    for(初始化语句; 循环条件; 自增或自减)
    {
        语句块;
    }
  3. for 循环中的“表达式1(初始化条件)”、“表达式2(循环条件)”和“表达式3(自增或自减)”都是可选项,都可以省略(但分号;必须保留)。
  4. “表达式1”可以是初始化语句,也可以是其他语句。如:
    i = 0;
    for( sum=0; i<=100; i++ )  sum=sum+i;
  5. “表达式1”和“表达式3”可以是一个简单表达式也可以是逗号表达式。如:
    for( i=0,j=100; i<=100; i++,j-- )  k=i+j;
  6. “表达式2”一般是关系表达式或逻辑表达式,但也可是数值或字符,只要其值非零,就执行循环体。如:
    for( i=0; (s=getchar())!='\n'; i+=s );
  • 循环嵌套:

  1. 在C语言中,if-else、while、do-while、for 都可以相互嵌套。所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,或者 for 里面有 while,while 里面有 if-else,这都是允许的。

猜你喜欢

转载自blog.csdn.net/qq_34935373/article/details/88524583
今日推荐