【C语言】如何体现结构化?

创作不易,欢迎  关注  点赞  收藏  留言
水平有限,不足之处,望友人指出
博主介绍:一枚不知所措的大学生
博客首页:Gredot
所属专栏《C语言》

目录

前言:

1.顺序结构:

        简单介绍:

        好吃的栗子:

2.选择语句

        简单介绍:       

        流程图:

if语句:

条件表达式:

switch语句:

3.循环结构:

        while循环:

        for循环:

        do while循环:

4.特别地:

        goto语句:


前言:

        C语言是一门面向过程、结构化的程序设计语言,设计者(丹尼斯·里奇)通过对生活的高度抽象,设计了顺序结构、选择结构、和循环结构三种结构,让代码能够更好的描述生活,膜拜!,接下来从顺序、选择和循环三种结构展开对选择和循环语句的学习。

1.顺序结构:

        简单介绍:

        顺序结构是C语言程序执行的基本顺序,C语言程序从主函数第一行开始向后顺序执行。

        好吃的栗子:

#include
int main()
{
    int a = 3;//向内存申请4个字节存放整型变量a  并给a赋初值3
    int b = 5;//向内存申请4个字节存放整型变量b  并给b赋初值5
    int sum = a + b;  //向内存申请4个字节存放整型变量 求a+b的和
    printf("%d\n",sum);//以十进制格式输出sum的值并换行,n是转义字符中的换行符
    return 0;  //返回0 return 语句的执行代表了主函数的终止,也是整个程序的结束
}

        这段代码就是顺序结构,程序会从主函数的第一行开始顺序执行。

2.选择语句

        简单介绍:       

         选择结构通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为:单分支、双分支、多分支。

        流程图:

【C语言】如何体现结构化?_第1张图片

【C语言】如何体现结构化?_第2张图片

C语言中提供了if语句,条件表达式,switch语句来实现选择结构,下面我们依次学习

if语句:

        基本语法:

#include
int main()
{
    int n = 0;
    
    printf("请输入一个大于零整数")
    scanf("%d",&n);
    //判断是否执行【*】语句
    if(n<0)//判断条件
    {
         printf("输入错误");//【*】
         //注:if语句在不适用“{}”的情况下,只能控制一条语句
    }
    //双分支
    if( n % 2 == 0)
    {
        printf("n为偶数");            
    }
    else
    {
        printf("n为奇数");    
    }
    //多分支
    if(n > 0)
    {
        if(n % 2 == 0)
        {
          printf("n为偶数");     
        }   
        else
        {
           printf("n为奇数");    
        } 
    }
    else
    {
          printf("输入错误");    
    }
            
    return 0;
}

        上述if语句的三种形式都不难理解,就像工业流水线生产一样,满足不同条件的原材料会被输送到不同的地方加工。

当使用级联式分支时,要更加注重代码的风格,以增加代码的可读性。

        好吃的栗子:

#include
int main() 
{
int m = 1;
int n = 3;

if (m == 0)
if (n == 3) //【*1】
printf("Y\n");
else
printf("N\n");
return 0;
}

        这段代码的结果是什么?Y还是N?

        答案是什么也不输出,要理解这个问题,我们就需要了解if和else的匹配规则。

        else总是和它前面最近的未匹配的if匹配

        那么再来看这段代码,else和【*1】式的if匹配,m不等于0,故什么也不输出。

        这段代码的风格很不好,那么我们再来看看这段代码的好的写法:

  #include
int main() 
{
int m = 1;
int n = 3;

if (m == 0)
 {
      if (n == 3) //【*1】
      {
        printf("Y\n");   
      }
      else
      {
        printf("N\n");        
      }
 }
return 0;
}//这样就大大的提高了代码的可读性。

注:讲常量写在等式的左边,是一种良好的代码书写习惯,当把“==”写成“=”是程序会报错:

        这样就可以避免一些不必要的问题。

条件表达式:

基本语法:exp1?exp2 :exp3                                exp1为真执行exp2,否则执行exp3

  #include
int main() 
{//在某些情况下条件表达式会让代码跟简洁
    int m = 0;
    int n = 0;
    scanf("%d%d",&m,&n);
    printf("%d",m>n?m:n);
    return 0;
}

switch语句:

switch的基本语法:switch语句通常用来处理多分支的情况

#include
int main()
{
    int score = 0;
    scanf("%d",&score);
    switch(score/10)
    {
        case 10:
            printf("满分!");
            break;
        case 9:
            printf("优秀!");
            break;
        case 8:
            printf("良好!");
            break;
        default :
            break;       
    }
    return 0;
}

 switch表示开关表达式的值为多少,就进入相应的case

case :后必须为整型常量表达式

        break:在此处用于结束switch语句,否则会顺延执行后面的case语句,break的运用十分灵活根据需求具体分析;

        default:多用处理异常情况,若所有case都不满足,则会进入default子句,default可以位于switch中的任意位置。

# 输入1-5 输出 工作日,输入6-7 输出休息日

#include
int main()
{
    int day = 0;
    scanf("%d",&day);
    switch(day)
    {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
             printf("工作日");
             break;
        case 6:
        case 7:
             printf("休息日");
             break;
      }
      return 0;
}

3.循环结构:

        while循环:

基本语法:表达式成立执行代码块。

while(//表达式)
{
 //代码块
}

# 输出100以内的偶数

#include
int main()
{
    int i = 0;//创建循环变量
    while(i<=100)
    {
        if(i%2 == 0)
        {
            printf("%d ",i);        
        }
        i++;//调整循环变量    
    }
    return 0;
}

 在这里:

continue:用于结束本次循环

 break:用于结束循环

        好吃的栗子:

#include
int main()
{
    int i = 1;
    while(i<10)
    {
        if(5 == i)
        {
            continue;        
        }    
        printf("%d ",i);     
        i++;'
    }
    return 0;
}

【C语言】如何体现结构化?_第3张图片

        这段代码死循环了,对你没听错,死循环了。那么 continue 到底做了什么导致程序死循环了呢?i 等于5时 遇到continue结束本次循环,跳过了 ” i++ “ 这就导致循环变量的调整在此处失效了,从而导致了死循环。

        只需要把循环变量的调整放在continue的前面,就可以很好的解决这个问题了。

        for循环:

        基本语法:

for(exp1;exp2;exp3)
{
    //代码块
}
//exp1   循环变量的初始化只执行一次
//exp2   循环变量的判断
//exp3   循环变量的调整

for循环将循环变量的初始化,判断,调整更加直观的展现了出来

for循环中的三个表达式均可省略(初学者不建议省略)

 # 输出九九乘法表

#include
int main()
{
    int i = 0;
    int j = 0;
    for (i = 1; i < 10; i++)
    {
        for (j = 1; j <= i; j++)
        {

            printf("%dx%d=%d  ", j, i, j * i);
        }
        printf("\n");
    }

    return 0;
}

【C语言】如何体现结构化?_第4张图片

        do while循环:

        基本语法:

do
{
    //代码块(循环体)
}while(exp);

由于do while循环先执行在判断,循环至少执行一次,使用场景有限,不是经常使用。

好吃的栗子:

#include
int main()
{
    int a = 0;
    do 
    {
       printf("%d ", a);
       a++;
    } while (a < 10);
    return 0;
}

4.特别地:

        goto语句:

#include
int main()
{
    for(int i = 0;i < 10;i++)
    {
        for(int j = 0;j < 10; j++)
        {
            for(int i = 0;i < 10;i++)
            {
                 printf("%d",i);
                 if(5 == j) 
                    goto finsh;               
            }        
        }    
    }
    finsh:
    return 0;
}

goto语句易导致程序失控,简易少使用,在跳出深层迭代时比较方便;

 最后:

        对昨天的博客进行总结反思:发布地比较潦草,急促,逻辑不是很连贯!!!!!!!!!

        留个练习下期公布答案:以下代码循环体要执行多少次?

#include 
int main()
{
 int i = 0;
 int k = 0;
 for(i =0,k=0; k=0; i++,k++)
        k++;
 return 0;
}

众生皆苦,都在对抗,你也不能认输,共勉!

最后的最后:

ps:晚霞依旧很美,可惜不会为你我停留。 【C语言】如何体现结构化?_第5张图片

你可能感兴趣的:(【C语言】,c语言,开发语言,算法,c++)