C语言极速入门(9) ——程序流程控制

本文介绍了编程中的条件分支语句(if,if-else,if-else-if,switch),以及循环语句(while,do-while,for),强调了如何通过这些结构实现程序流程控制,提升程序灵活性和功能。
摘要由CSDN通过智能技术生成
1.概述

        我们写的程序就像我们规定好的步骤,一旦执行,它就会严格按照我们给的步骤执行。就像食谱一样,给出做菜步骤,照着做就能做出美味佳肴。但是这样的菜谱也会有问题。比如说,菜谱上的鱼香肉丝是甜的,但是你喜欢吃咸口的鱼香肉丝,这个时候你就需要根据自己的口味来判断来加不加糖。程序也是一样,流程的控制可以让程序更灵活,程序功能更强大。

2.条件分支语句
if语句:

基本形式:       if(表达式){代码块}         如果表达式的值为真就执行代码块内容,为假就不执行。

int main() {
    int a=1;
    if(a==1){
        printf("a=%d",a);
    }

}

这里会打印出a=1        因为a==1会返回真,之后执行代码块内容。 

int main() {
    int a=1;
    if(a==0){
        printf("a=0",a);
    }

}

这里就不会打印出任何内容,因为a==0为假,不会执行代码块内容。

 if-else形式:        if(表达式){代码块1}else{代码块2}         如果表达式为真就执行代码块1,否则就执行代码块2。

int main() {
    int a=1;
    if(a==1){
        printf("a==1");
    }else{
        printf("a!=1");
    }

}

这里因为a==1为真所以会打印出a==1

int main() {
    int a=0;
    if(a==1){
        printf("a==1");
    }else{
        printf("a!=1");
    }

}

这里因为a==1为假所以会打印出a!=1

if-else-if形式:两个分支使用上述语句即可。更多分支的时候可以使用这种形式,如下所示:

int main() {
    int a=1;
    if(a==1){
        printf("a==1");
    }else if(a==2){
        printf("a==2");
    }else if(a==3){
        printf("a==3");
    }else{
        printf("a==other");
    }

}}

这里会打印出a==1,如果a不等于1,2,3的时候,打印出a==other。中间的else if可以有任意多个分支,也可以不需要最后的else。

需要注意的是,if系列语句里面可以随意嵌套if系列语句。

switch语句:

C语言还提供了另一种用于多分支选择的 switch 语句, 其一般形式为:

switch(表达式){

case 常量表达式 1: 语句 1;

case 常量表达式 2: 语句 2;

case 常量表达式 n: 语句 n;

default : 语句 n+1;

}

        其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的 值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有 case 后的语句。如表达式的值与所 有 case 后的常量表达式均不相同时,则执行 default 后的语句。

使用switch语句需要注意的是:例如常量表达式为真时,就会执行语句1,并且会继续执行其后的语句2...语句n,语句n+1。如果不需要执行其后的语句,可以使用break跳出。

所有更常用的形式应该是下面这种:

switch(表达式){

case 常量表达式 1: 语句 1;break;

case 常量表达式 2: 语句 2;break;

case 常量表达式 n: 语句 n;break;

default : 语句 n+1;

}

3.循环语句

        循环语句有三种:while,do-while,for

while语句:

while(表达式){代码块} 

        如果表达式为真就一直执行代码块。

main()
{
 int i,sum=0;
 i=1;
 while(i<=100)
 {
sum=sum+i;
 i++;
 }
 printf("%d\n",sum);
}

上面这段代码会利用while语句求出1到100的和。

do-while语句:

do {代码块} while(表达式);

这个循环语句和上述语句基本一致,不同之处在于无论表达式条件真假,该循环语句至少会执行一次代码块。

for语句:

在 C 语言中,for 语句使用最为灵活,它完全可以取代 while 语句。它的一般形式为:

for(表达式 1;表达式 2;表达式 3)

{代码块}

它的执行过程如下:

1) 先求解表达式 1。

2) 求解表达式 2,若其值为真(非 0),则执行 for 语句中指定的内嵌语句,然后执行下面第 3)步;若其 值为假(0),则结束循环,转到第 5)步。

3) 求解表达式 3。

4) 转回上面第 2)步继续执行。

5) 循环结束,执行 for 语句下面的一个语句

用for语句求解1到100的和的过程如下:

int main() {
   int sum=0;
   int i=1;
   for(i=1;i<=100;i++){
       sum+=i;
   }
    printf("sum=%d",sum);
}

三种循环语句没有优劣之分,要根据合适的场景选择合适的循环语句,三种语句可以互相改写。

但是相对而言for语句更加灵活,使用最为广泛。

需要注意的是break语句和continue语句常常和循环语句配合使用,break语句指的是跳出整个循环,直接执行循环语句后面的内容。而continue语句表示本次循环不在执行,继续执行后续循环。

比如说下列代码用了continue

int main() {
   for(int i=1;i<=10;i++){
       if(i==5) continue;
       printf("i=%d\n",i);
   }
    
}

下列代码在i==5的时候会执行continue,跳过本次循环,就不会打印5。但是会正常打印后续内容。

对于下面代码则用了break

int main() {
   for(int i=1;i<=10;i++){
       if(i==5) break;
       printf("i=%d\n",i);
   }

}

下列代码在i==5的时候会执行continue,跳出循环,就不会打印5。也不会打印后续内容。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值