4. 程序流程结构

4.1 概述

C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
顺序结构:程序按顺序执行,不发生跳转
选择结构:依据是否满足条件,有选择的执行相应功能
循环结构:依据条件是否满足,循环多次执行某段代码


4.2 选择结构


4.2.1if 语句

输入:
//1、if是一个关键字,:if后面有(),if()后面是没有分号
//2、()里写的是条件,条件为真,执行if语句,为假不执行
//if(1) //条件为真
//if(-1) //条件为真
//if(0)条件为假

if(4>3) //条件为真
{
printf("满足条件\n");
}
输出:满足条件
//3、if()后面最好加{},{}代表if语句
//4、如果不加{},只有第一个语句属于if

输入:if(0)
                printf("测试11111111111\n");
                printf("测试22222222222\n");  //此语句不属于if
输出:不满足条件
           测试22222222222   //此处的测试22~并不是由于if输出的

//5、if()后面是没有分号,切记
输入:if(0);    //若此时if()有分号
{
printf("aaaaaaaaaaaaan\n");
}
输出:aaa~
//等价于下面
if(0)     //if()下面是一个空语句
     ;   
{
printf("aaaaaaaaaaaaa");   //此语句和if没有关系,无条件顺序执行
}

输入:int a=3;
//1、把4赋值给a,á的值变为4
if(a = 4)
{
printf("a等于4\n");
}
输出:a等于4  //此处a的值已经被改为4,所以此语句为真,故可以执行
//2、判断a的值是不是真,如果为真,执行语句,不为真,不执行

if(4 == a)    //判断a是否是等于4
{
priitf("a等于4\n");
}
输出:(没内容)  //说明a 确实不等于4,所以没有执行
//if(a == 4)     //err
//if(4 == a)建议写这种,常量放在左边


4.2.2if..else语句

输入:
int a=4;
if(3 == a)    //如果a和3相等,执行语句
{
printf("a和3相等\n");
}
//1、if else结构,这个else可以不写,else不是必须的
//2、else后面不要接条件

else
{
printf("a和3不相等\n");
}
输出:a和3不相等


4.2.3 if...elseif...else语句

输入:int a == 2;
if(3 == a)
{
printf("a == 3\n");
}
else if(a > 3)
{
printff("a > 3\n");
}
else if (a < 3)
{
printf("a < 3\n");
}
else  //else也不是必须
{
printf("这是不可能\n");    
}
注释:else if比if好 ,因为else if 只要有一个可以执行,其他都不执行,但是if必须每个都执行


4.2.4 三目运算符

输入:
int a = 10;
int b =20;
int c;
{
    c = a;
}
else
{
    c = b;
}
printf(“最大值为:%d\n", c);
输出:最大值为20

输入:a =10;
           b= 20;
//1、?:(三目运算符)优先级比=高
//2、判断a>b条件,如果为真,执行? :之间的语句
//                              如果为假,执行: ;之间的语句

c = a > b ? a : b;
printf("最大值为: %d\n", c);
输出:最大值为20


4.2.5 switch 语句 

输入:Int num;
          printf("请输入num:");
          scanf("%d", &num);
//1、switch是关键字,switch()后面没有分号
//2、switch()中()里只能放整型变量或字符型变量
//3、switch用法类似于电梯模型

switch(num)
{
case 1:
printf(我按下的是1楼\n");
break;     //必须,跳出switch语句,相当于停止
case 2:
printf("我按下的是2楼\n");
break;
case 3:
printf("我按下的是3楼\n");
break;
default:      //相当于其他
printf("其它楼层\n");
break;
}
输出:请输入num:  x 


4.3 循环结构


4.3.1 while 语句

 输入:int num=1;
//1、判断num>0的条件,如果为真,执行{}语句
//                                      如果为假,跳出while()循环
//2、执行完(}语句,重复1步骤

while(num>0)       //这里没有分号
{
printf("请输入一个数(负数退出循环):");
scanf("%d", &num);
}         //这里也没有分号
输出:
请输入一个数(负数退出循环):10
请输入一个数(负数退出循环):20
请输入一个数(负数退出循环):30
请输入一个数(负 数退出循环):-1
结束

用while实现累加


输入:int i = 1;
           int sum = 0;
           while(i <= 100)
{
sum=sum +i;
i++;
}
//   i=1,满足i <= 100,执行{}语句
     sum=0+1
           i=2
2、i=2,满足 i<= 100,执行{}语句
          sum=0+1+2
                i=3
3、i=3,满足 i<= 100,执行{}语句
           sum=0+1+2+3
           i = 4
输出:5050

补充


4.3.2 do..while 语句

输入;int i =1
        int sum=0;
//1、do while第一次无条件执行
//2、第二次开始,和while一样

do
{
sum += i;
        i++;               //此处为第一次运行
}while(i<=100);     //注意,这里有分号,这是语法
printf("sum = %d\n", sum);
输出:5050


4.3.3 for 语句

输入: int i =1;
            int sum = 0;
     //for()内部有2个分号,这是语法
1、i = 1
2、判断 i<= 100 条件,如果条件为真,执行{}语句,如果条件为假,跳出for()
3、执行{}语句,sum += i;
4、执行完{}语句后,执行++i
5、重复 2、3、4步骤

for(i =1; i <= 100; ++i)     //由于前面i已经赋 值为了1,所以第一个分号前可以不加东西
{
printf("sum = %d\n", sum);
}
输出:5050

4.3.4死循环

//{}可以不写,不写只有第一个语句属于循环,建议写
while(1)
{

}


//{}必须写
do
{
}while(1);


//{}可以不写,不写只有第一个语句属于循环,建议写
for(;;)
{

}


4.3.5 嵌套循环

int i = 0;
int j = 0;
int num = 0;
for(i =0;i< 10;i++)
{
          for(j=0;j< 10;j++)
          {
                num++;
           } 
}
 printf("num = %d\n", num); 



4.4跳转语句 break、continue、goto


4.4.1 break 语句

输入:int i=0;
           int j=0;

          for(i =0; i<10; i++)
          {
                    for(j=0; j< 10; j++)
                   {
                           if(0 == j)
                           {
                                   break;   //跳出最近的内循环for(j=0; j<10; j++)
                           }                      
                            printf("j =%d\n",j);
                   }
                   if(5 == i)
                  {
                       break;     //跳出的是for(i = 0;10;i++)循环
                   }
                   printf("i = %d\n", i);
          }
输出:i =0  i =1 i = 2 i =3  i =4  
break的作用
1.跳出switch语句
2.跳出循环
3.如果有多个循环,跳出最近的内循环


4.4.2 continue 语句
continue属于循环

输入:int i=0;
           for(i=0; i< 10; i++)
           {
                   if(5 == i)
                    {
                             //brdak       //跳出整个循环,不再执行循环;
                             continue;   //跳出本次循环,下次继续
                     }
                     printf("i = %d\n", i); 
            }
输出:1.如是break,则会到4就停止退出循环
           2.是continue,则会跳出5,继续6的循环,直到9


4.4.3 goto 语句(无条件跳转,尽量少用)

1.goto任意地方都能使用,无条件跳转,不要滥用
2.只能跳转到同一个作用域

输入:goto, Mike ;
            printf("11111111111\n");
            printf("22222222222\n");
        Mike :
           printf("3333333333\n");
输出:3333333333            //gotu直接跳转到后面接的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值