C语言的流程控制

C语言的流程控制

选择结构之if语句

用法一:  if( ){ }

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=3;
  4.    if (a>2) {
  5.        printf("%d\n",a);
  6.    }
  7.    return 0;
  8. }

用法二:if( )else{ }

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=0;
  4.    if (a>2) {
  5.        printf("%d\n",a);
  6.    }else{
  7.        printf("a不大于2\n");
  8.    }
  9.    return 0;
  10. }

用法三:if( )else if( ){ }满足第一种条件执行第一种方案,如果第一种条件不满足,继续判断是否满足第二种条件,不满足继续判断接下来的别的条件.

但:只要有一个满足了,接下来的条件判断不会执行

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=-2;
  4.    if (a>2) {
  5.        printf("%d\n",a);
  6.    }else if(a<1){
  7.        printf("a小于1\n");  //打印结果    a小于1
  8.    }else if(a<0){
  9.        printf("a小于0\n");
  10.    }
  11.    return 0;
  12. }

用法四:if( )else if( ){ }else( )

满足第一中条件执行第一种方案,如果第一种条件不满足,继续判断是否满足第二种条件,不满足继续判断接下来的别的条件.

如果上面的条件都不满足,则会执行else{ }里的代码.

但:只要有一个满足了,接下来的条件判断及else都不会执行.

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=1;
  4.    if (a>2) {
  5.        printf("%d\n",a);
  6.    }else if(a<1){
  7.        printf("a小于1\n");
  8.    }else if(a<0){
  9.        printf("a小于0\n");
  10.    }else{
  11.        printf("上面的条件都不满足!\n");     //打印结果:上面的条件都不满足
  12.    }
  13.    return 0;
  14. }

用法五:if( );如果条件成立执行if后面的第一个语句(语句结束的标志是 ; )从第二句开始,跟if语句没有关系了.

只要出现 ; 就算一个语句.

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=1;
  4.    if (a>2)
  5.        printf("%d\n",a);
  6.        printf("上面的条件都不满足!\n");     //打印结果:上面的条件都不满足
  7.    return 0;
  8. }

特点:

1.一次if语句只能执行给出的所有操作中的一个.

2.if( );这种用法时if语句只有紧跟后面一句有效.(读到下一个 ; 结束).且不能定义变量(不能明确定义的变量的作用域范围).

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=3;
  4.    if (a>2)
  5.        int b=0;      //不能明确b的作用域范围
  6.        printf("%d\n",a);
  7.    return 0;
  8. }

3.除了if( );这种用法,所有的( )与{ }之间不能有 ; 号.

4.if(条件判断{ }里main的条件判断如果是与常量的等于判断,则常量写在前面(建议).

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=3;
  4.    if (a=2){
  5.        printf("a等于2\n");       //会出现警告,条件编译a=2为真;打印结果 a等于2
  6.    }else{
  7.        printf("a不等于2\n");
  8.    }
  9.    return 0;
  10. }


选择结构之switch语句

根据判断的结果(真或假)决定执行给出的具体操作

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=0;
  4.    switch (a) {
  5.        case 1:
  6.            printf("a=1\n");
  7.            break;
  8.        case 2:
  9.            printf("a=2\n");
  10.            break;
  11.        case 3:
  12.            printf("a=3\n");
  13.            break;
  14.        default:
  15.            printf("没有匹配的\n");    //执行结果:没有匹配的
  16.            break;
  17.    }
  18. }

特点:

1.条件结果只能是整数,而case只能是整型常量,注意:char 'a';

2.break可有可无,有则执行完跳出,没有则继续执行,直到退到下一个break或执行完.

3.default可有可无,有则如果条件都不满足,会执行这句,无则条件都不满足,执行结束.

4.case下面要定义变量必须加{ }(否则变量的作用域不明确),且case后的常量值不能重复.

5.switch语句可以全部用if语句替代,但if语句不能全用switch替代.



循环结构之while与do while语句

当满足条件时进入循环,循环判断,知道不满足条件跳出循环.

while循环

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=0;
  4.    while (a<10) {
  5.        a++;
  6.        printf("第%d次helloworld\n",a);
  7.    }
  8.    return 0;
  9. }

do while

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=0;
  4.    do{
  5.        a++;
  6.        printf("第%d次helloworld\n",a);
  7.    }while (a<0);    //打印结果:第1次helloworld
  8. }


while和do while区别:

满足条件才会执行,do while 无论条件满足与否,都至少执行一次

特点:

1.只有满足条件循环才会执行.

2.注意死循环的出现会一直循环执行下去,除非程序强制退出.control+c终止程序

3.如果碰到continue,则跳出本次循环继续下一次判断,如果条件成立继续执行循环.

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=0;
  4.    while (a<10) {
  5.        if (5==a) {
  6.            continue;
  7.            a++;       //a++不会执行,因为在执行continue后跳出循环,不会执行a++语句;
  8.        }
  9.        printf("第%d次helloworld\n",a);
  10.        a++;
  11.    }
  12.    return 0;
  13. }

4.如果碰到break无论条件满足与否,循环立即结束.

 
 
  1. #include<stdio.h>
  2. int main(){
  3.    int a=0;
  4.    while (a<10) {
  5.        if (5==a) {
  6.            a++;
  7.            continue;
  8.        }
  9.        if(8==a){
  10.            break;     //循环立即结束
  11.        }
  12.        printf("第%d次helloworld\n",a+1);
  13.        a++;
  14.    }
  15.    return 0;

5.continue与break跳出的都是当前所在的循环作用域.

  
  
  1. #include<stdio.h>
  2. int main(){
  3.    int a=0;
  4.    int b=0;
  5.    while(b<3){
  6.        while (a<10) {
  7.            if (5==a) {
  8.                a++;
  9.                continue;
  10.            }
  11.            if(8==a){
  12.                break;     //内循环立即结束
  13.            }
  14.            printf("第%d次helloworld\n",a+1);
  15.            a++;
  16.        }
  17.        if (b==2) {
  18.            b++;
  19.            break;         //外循环立即结束
  20.        }
  21.        b++;
  22.        printf("外循环执行了%d次\n",b);
  23.    }
  24.    return 0;
  25. }

6.do while至少执行一次,而while不一定

control +C  是强制退出应用


循环结构之for语句

for循环中定义的变量,只在for循环中有效

for循环第一个语句:只会执行一次,一般用于初始化变量.

  
  
  1. #include<stdio.h>
  2. int main(){
  3.    for (int i=1;int a=2; i<=10; i++) {    //int a=2 错误
  4.        printf("第%d次helloword\n",i);
  5.    }
  6.    return 0;
  7. }
   
   
  1. #include<stdio.h>
  2. int main(){
  3.    for (int i=1,int a=2; i<=10; i++) {    //int i=1,int a=2 错误
  4.        printf("第%d次helloword\n",i);
  5.    }
  6.    return 0;
  7. }
   
   
  1. #include<stdio.h>
  2. int main(){
  3.    for (int i=1,a=2; i<=10; i++) {    //正确
  4.        printf("第%d次helloword\n",i);
  5.    }
  6.    return 0;
  7. }

for循环第二个语句注意:

     这个必须要有一个判断结果,如果为空,表示默认为真,则是一个死循环

for循环第三个语句注意:第三个语句作用域不在{ }内.

break和continue与while循环是一致的.

循环嵌套:如果子循环本身定义了变量,用自己的,如果本身作用域没有定义变量,只会去上一层的作用域去寻找,以此类推(就近原则)

  
  
  1. #include<stdio.h>
  2. int main(){
  3.    for(int i=0;i<2;i++){
  4.        for (;i<3; i++) {        //没有定义变量i
  5.            printf("内循环是第%d行helloword\n",i);
  6.        }
  7.        printf("外循环是第%d行helloword\n",i);
  8.    }
  9.    /*运行结果:
  10.     内循环是第0行helloword
  11.     内循环是第1行helloword
  12.     内循环是第2行helloword
  13.     外循环是第3行helloword
  14.     */
  15.    return 0;
  16. }

break与continue区别:

         1.break:可以用于switch和while,do while 和for 循环,但continue不能用于switch

         2.break是结束当前循环语句,continue是结束本次循环,继续执行下一次循环.

相同点:在break与continue相同作用域下,二者下面都不能放代码,因为不会执行.还有二者都是关键字.

for语句和while语句相同点及区别:     

         1.二者都是去根据条件反复执行相同的代码.

         2.区别是:二者结构用法不一样

如果while和for循环省略{ };下面不能定义变量,因为作用域不明确.

  
  
  1. #include<stdio.h>
  2. int main(){
  3.        for (int i=0;i<3; i++,a++) {     //错误,a的作用域不在{ }中
  4.            int a=2;
  5.            printf("内循环是第%d行helloword\n",i);
  6.        }
  7.       return 0;
  8. }
for循环的循环体定义的变量仅在循环体内有效


练习:九九乘法表

  
  
  1. #include<stdio.h>
  2. int main(){
  3.    for (int i=1; i<=9; i++) {
  4.        for (int j=1; j<=i; j++) {
  5.            printf("%d*%d=%d\t",j,i,i*j);
  6.        }
  7.        printf("\n");
  8.    }
  9. }

while 和for 什么时候用

       1.看是否明确要执行多少次循环

          如果循环明确,用for

          如果循环不明确用while




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值