C语言之控制结构(初学者)

 

控制结构分为三类:

1.循环结构(反复执行某语句):for ,while, do...while

2.跳转结构(从某一个语句跳到另外一个语句):goto

3.选择结构(由某条件来判断是否执行后面的语句):if, switch

依次讲解:

for 结构:

语法(又或通常出现的形式):for(语句①;语句②;语句④){循环体③}

语句①一般为初始化某一个变量如:i=1 等等

语句②一般为条件,用来判断是否执行循环体。如 i<=5

语句④一般为变量的自增或自减,通常有++,--出现,如 i++

执行步骤:语句①👉语句②👉语句③👉语句④

要注意的是:先执行语句③(循环体)再执行语句④

例如:

#include<stdio.h>
int main()
{
  int i;
  int j=6;
  for(i=1;i<=3;i++){
    printf("%d",j);
    }
return 0;
}

输出结果为:

666

详细步骤:初始化变量i为1,因为1小于3,所以执行printf语句且输出一次6,再i++,i的值变为2,再判断2<3,输出一次6,再i++,这时i等于3,符合条件i<=3,输出一个6,再i++,此时i为4,不符合条件,跳出循环,最终就输出了666。

另外一种for形式:

#include<stdio.h>
int main()
{
  int i=1;
  int j=6;
  for(;i<=3;i++){
    printf("%d",j)
    }
return 0;
}

省略了语句①,把语句①的意思放在了前面(int i=1;)

while 结构

语法:while (循环条件①){循环体②;}

步骤:循环条件①成立则进入循环体②,当循环到不符合循环条件时退出循环。

例如:

#include<stdio.h>
int main()
{
    int i=1;
    int j=6;
    while(i<=3){
        i++;
        printf("%d",j);
             }
    return 0;
}

输出结果也为:

666

do.....while  结构

语法:do{

循环体①

}while(循环条件②);

执行步骤:先执行循环体①再执行循环条件②,若循环条件成真,则继续循环体①,反之退出循环。

do while 和 while 的不同就是,do while会至少执行一次循环体,而while有可能一次也不执行循环体①。

例如:

#include<stdio.h>

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

 输出结果:

1
2

可知,i先0+1变成1,输出1.再判断i小于2,再进入循环体加1变成2,再输出2.

if 结构

语法:

if (条件①){语句②;}

统一先执行条件①,若满足条件①,则进入语句①,反之,不进入语句①。

例如:

#include<stdio.h>

int main()
{
    int i=5;
    if(i>4){
        i=i-1;
        printf("%d",i);
    }
    return 0;
}

输出结果为:

4

步骤:判断i大于4,条件成立,进去语句①,i的值减一变成4.

拓展的if结构:

第一种:

        if(条件①){语句①;}

           else  {语句②;}

可以翻译成:如果条件①成立,则进入语句①,否则进入语句②

第二种:

         if(条件①){语句①;}

           else if (条件②) {语句②;}

                else if(条件③){语句③;}

                        ......

         else{语句n;}

可以理解为:如果条件①成立则进入语句①,若条件①不成立,则

                跳到下一句else if 这里来判断条件②是否成立,

                直到运行到最后的else(代表前面的条件都不成立)时,就进入语句n。

switch 结构

语法:

        switch(表达式)

{         case 表达式①:语句①;

          case 表达式②:语句②;

          break;

          case 表达式③:语句③;

           .........

          default:语句n;

有上而下执行。

通过实例可以更好理解

如:

#include<stdio.h>
 int main()
 {
  int i;
  scanf("%d",&i);
  switch(i)
   {
     case 1:printf("今天是晴天");
     break;
     case 2:printf("今天是雨天");
     break;
     case 3:printf("出去玩");
     break;
     deafault :printf("呆在家");
   }

return 0;
}
     

代码中出现了break和default,先说default,先把所有的break删除掉:

#include<stdio.h>
 int main()
 {
  int i;
  scanf("%d",&i);
  switch(i)
   {
     case 1:printf("今天是晴天");
     
     case 2:printf("今天是雨天");
     
     case 3:printf("出去玩");
     
     deafault :printf("呆在家");
   }

return 0;
}
     

我们输入3,按照从上而下的步骤来说应该只会输出:出去玩。但我们看运行结果:

3
出去玩呆在家

多出了default的结果,这代表,不管前面的case有没有执行,最后的default一定会执行!

那如何去掉这个default呢?第一种是直接删掉default,但是我们应该更进一步,在不删掉default的情况下不输出dafault后面的语句,这时聪明的你肯定想到了break。让我们恢复break:

#include<stdio.h>
 int main()
 {
  int i;
  scanf("%d",&i);
  switch(i)
   {
     case 1:printf("今天是晴天");
     break;
     case 2:printf("今天是雨天");
     break;
     case 3:printf("出去玩");
     break;
     deafault :printf("呆在家");
   }

return 0;
}
     

输入3,结果为:

3
出去玩

所以,break的作用就呼之欲出了,前面符合条件的,进入语句并执行,碰到break后跳出switch结构,自然就不执行default后面的语句了。

goto 结构:

由两部分组成:

1.跳转语句 :goto 目的地(又或叫做锚点的名字)

2.锚点(目的地):锚点的名字:语句①

注意点:锚点和goto语句必须在同一个函数中使用,跨函数时并不适用

在前提(锚点和goto语句在同一个函数中)下 ,锚点可在goto语句前定义,也可在goto后定义。

#include<stdio.h>

int main()
{   int i=1;
    while(i<=3){
      i++;
      printf("%d\n",i);
      if(i=2){
       goto A;
         }
            };
    A: printf("在这里");
    return 0;
}

输出为:

2
在这里

代表在i自加到2的时候,满足if的条件进入if里面,然后遇到goto语句,跳转到下方的A中,即输出在这里

以上,就是我本人对控制结构的理解,如果对你有用,不要忘了给我点个赞哦。

若有不足,敬请指出,我会加以改正,谢谢大家。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卷心菜dd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值