C语言控制流详解:

控制流 :控制程序执行的流向 
    * 分类:
        顺序结构
        分支结构(选择结构)
        循环结构
===
顺序结构:
    
==============================================================
分支结构:
    *  if   
    *  switch
    
=====
if :
    * 姿势 :
        if(表达式)
            有且仅有一条语句A;
        *解释:
            表达式成立,则执行语句A 
            表达式不成立,则不执行语句A 
            
    * if 和程序块结合:
        if(表达式)
        {
            多条语句;
        }
        
    * 姿势: (二选一)
        if(表达式)
            有且仅有一条语句A;
        else 
            有且仅有一条语句B;
        *解释:    
            表达式成立,则执行语句A 
            表达式不成立,则执行语句B
            
        * 和代码块结合:
        if(表达式)
        {
            多条语句;
        }else{
            多条语句;
        }
        
    * 姿势 : (多选一)
        if(表达式1)
            有且仅有一条语句A;
        else if(表达式2)
            有且仅有一条语句B;
        else if(表达式3)
            有且仅有一条语句C;
        else if(表达式4)
            有且仅有一条语句C;
        ....
        else
            有且仅有一条语句X;
        
        * 解释:    
            else 可以省略写
            
        * 和程序块结合:    
        if(表达式1)
        {
            多条语句;
        }
        else if(表达式2)
        {
            多条语句;
        }
        else if(表达式3)
        {
            多条语句;
        }
        else if(表达式4)
        {
            多条语句;
        }
        ....
        else
        {
            多条语句;
        }

=========

程序块 :
 {} : 相对于 一条语句的效果 

#include <stdio.h>

int a;
int y;

int main(void)
{
    int a = 10;
//    short a;  // 不可以 
    int x = 30;
    
    {
        int a = 20;   // 可以 
        int b;
        int c;
        printf("%d\n",a); //20
        printf("%d\n",x); //30
        
        {
            printf("%d\n",y);
        }
        
    }
    
    return 0;
}
 
// 在同一个大括号里面,定义的名字不能重复 
 

========================================
switch : 
    * 姿势 :
        switch(表达式)
        {
            case 选项1:
                多条语句;
                break;
            case 选项2:
                多条语句;
                break;
            case 选项3:
                多条语句;
                break;
            case 选项4:
                多条语句;
                break;
            default :
                多条语句;
                break;
        }
        * 解释 :
            选项: 是整数或者字符
                    选项不能重复 
            通过表达式的值去执行以该值作为选项的多条语句 
            如果没有找到该选项,去选择 default
            
            default 可以省略 
                    
    break 和 switch 结合 ,结束 switch 语句                  
==============================================
分支结构总结:
    * if     (if)  (if else)  (if ...  else if ... else)
    * switch      switch case  
        ====>  break 和 switch 的结合,可以结束 switch 语句 
=============================================
循环结构 :
    * for   while   do while   

======
for :
    * 姿势 :
        for(表达式1;表达式2;表达式3)
            有且仅有一条语句A;
        *解释:    
            第一步:执行 表达式1 
            第二步:判断表达式2是否成立,不成立则退出循环,成立则继续往后
            第三步:执行语句A 
            第四步:执行 表达式3 然后再去 执行 第二步 
        
        表达式1 和 表达式3 是 赋值表达式 
        表达式2 是 判断表达式
        三个表达式都可以省略,当省略了表达式2表示永远成立 
            for(;;)
                有且仅有一条语句A;

        * for 和 程序块 的结合:
            for(;;)
            {
                
            }
    
continue : 跳过本次循环,进入到下一次循环中(立马结束语句A,进入到表达式3)
break :结束其所在的循环.

============
while :
    * 姿势 :
        while(表达式)
            有且仅有一条语句A;
        *解释 :
            第一步: 判断表达式是否成立,不成立则退出while循环,成立则继续往下
            第二步:  执行语句A ,去执行第一步
        
        * while 循环 和 程序块 结合 
        while(表达式)
        {
            
        }
    
continue : 跳过本次循环,进入到下一次循环中(立马结束语句A,进入到表达式判断中)
break :结束其所在的循环.

=================
do while :
    * 姿势 :
        do
            有且仅有一条语句A;
        while(表达式);
        *解释:
            第一步 : 执行语句A 
            第二步 : 判断表达式是否成立,不成立则退出循环,成立则 执行 第一步 
            
        * do while 和 程序块 结合 :
        do{
            
        }while(表达式);
        
continue : 跳过本次循环,进入到下一次循环中(立马结束语句A,进入到表达式判断中)
break :结束其所在的循环.

==============================
循环总结: 
    for         for(表达式1;表达式2;表达式3) 语句A;
    while       while(表达式) 语句A;
    do while    do 语句A; while(表达式)
        
continue : 跳过本次循环,进入到下一次循环中(立马结束语句A,进入到下一步 )
break :结束其所在的循环.

==========    
goto 跳转
    * 姿势 :
        goto 标签; 
        *解释 :
            跳转到标签所在的位置去执行 标签所在的 语句。
            goto 语句 要和 标签必须 在 同一个 函数里面。
====
练习:    
    0 ... 100  // 某些数据跳过  碰到某个数据结束 
    
    0.
    * * * * *
    * * * * *
    * * * * *
    * * * * *
    * * * * *    

    1.  
        *
        * *
        * * * 
        * * * *
#include<stdio.h>

int main()
{
    int a,b,c;
    scanf("%d" ,&c);
    for(a=0;a<c;a++)
    {
        for(b=0;b<=a;b++)
            printf("* ");
        printf("\n");
    }
    return 0;
}
        
    1.1 
        99乘法表
        1*1=1
        1*2=2   2*2=4
        1*3=3   2*3=6   3*3=9

#include<stdio.h>

int main()
{
    int a,b,c;
    scanf("%d" ,c);
    for(a=0;a<c;a++)
    {
        for(b=0;b<=a;b++)
            printf("d%*d%=%d " ,b+1,a+1,(a+1)*(b+1));
        printf("\n");
    }
    return 0;
}
        
    2   * * * *
          * * *
            * *
              *

#include<stdio.h>

int main()
{
    int a,b,c,d
    scanf("%d" ,&c);
    for(a=0;a<c;a++)
    {
        for(d=0;d<a;d++)
        {
            printf("  ");
        }
        for(b=0;b<=a;b++)
        {
            printf("* ");
        }
        printf("\n");
    }
    return 0;
}


    
    3     *
        * * *
      * * * * *
    * * * * * * *
#include<stdio.h>

int main()
{
    int a,b,c,d
    scanf("%d" ,&c);
    for(a=1;a<=c;a++)
    {
        for(d=1;d<=a-c;d++)
        {
            printf("  ");
        }
        for(b=1;b<=2*a-1;b++)
        {
            printf("* ");
        }
        printf("\n");
    }
    return 0;
}


    
    4
          *
        * * *
      * * * * *
    * * * * * * *
      * * * * *
        * * *
          *
    


#include<stdio.h>

int main()
{
    int a,b,c,d
    scanf("%d" ,&c);
    for(a=0;a<c;a++)
    {
        for(d=0;d<c-a-1;d++)
        {
            printf("  ");
        }
        for(b=0;b<2*a+1;b++)
        {
            printf("* ");
        }
        printf("\n");
    }
    for(a=0;a<c-1;a++)
    {
        for(d=1;d<=a;d++)
        {
            printf("  ");
        }
        for(b=1;b<=2*(c-a-1)-1;b++)
        {
            printf("* ");
        }
        printf("\n");
    }
    return 0;
}    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值