C语言基础-流程控制

流程控制                                                                                              

流程控制是C语言中很重要的环节,因为涉及到很多算法问题,以后会常用到

流程控制主要分为循环结构和选择结构.

循环结构的意义:重复执行一个语句块,直到满足某个条件为止,这称为循环,循环是带有比较数据项功能的一个基本编程工具.

选择结构的意义:选择程序结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程.

选择结构

if语句

if语句使用注意:

1.比较大小时,常量值放左边,变量放右边

2.赋值运算符不要写成了两个==

3.if ()不要加分号,不然就相当于一个空语句

4.if后面记得要跟上大括号,不然作用域不明确就会报错

例子:用if语句来判断学生分数所在的级别

// -----------可利用三种结构来完成------------
//1.第一种结构:
    /*  
            if (条件)
            {
                语句1;
                语句2;
                .....
            }
    */
    
        /*
        int count;
        printf("请输入一个数\n");
        scanf("%d",&count);
             if (count >= 50)
                  {
                      printf("可以开班!!\n");
                      return 0;
                  }
                    printf("人数不满50,不能开班!\n");
                    return 0;
        */
    
//2.第二种结构:
    
    /*
     if (条件)
     {
     语句1;
     语句2;
     .....
     }
     else
     {
     
     }
     */
     
     /*
    printf("请输入一个数\n");
    scanf("%d",&count);
    if (count >= 50)
        {
            printf("可以开班!!\n");
        }
        else
            {
                printf("人数不满50,不能开班!\n");
            }
    return 0;
    */
//3.第三种结构
    
    /*
     if (条件1)
     {
     语句1;
     语句2;
     .....
     }
     else if (条件2)
     {
     
     }
     else if (条件3)
     {
     
     }
     else if (条件4)
     {
     
     }
     ......
    */
    int score;
    printf("请输入分数\n");
    scanf("%d",&score);
    if (score >= 80)
    {
        printf("成绩为优\n");
    }
        else if (score >= 70)
            {
                printf("成绩为良\n");
            }
                else if (score >= 60)
                {
                    printf("成绩为中\n");
                }
                    else if
                    {
                        printf("成绩为差\n");
                    }
                        return 0;

switch语句

switch语句使用注意:

1.case后面定义的变量必须要用大括号.

2.break

同样利用switch语句完成之前用if语句实现的例子

 printf("请输入分数值\n");
    int number;
    scanf("%d",&number);
    int score = number/10;
    switch (score)
    {
        case 10:
        case 9:
            printf("等级是A\n");
            break;
        case 8:
            printf("等级是B\n");
            break;
        case 7:
            printf("等级是C\n");
            break;
        case 6:
            printf("等级是D\n");
            break;
        default:
            printf("等级是E\n");
            break;
    }
    return 0;

if和switch比较

1.switch能做的,if都能做

2.if能做的,switch不一定能做

循环结构                                                                                                              

while语句

while语句使用注意:

1.先确定需要重复执行的操作

2.再确定约束条件

while语句运行原理:

1.若果一开始条件就不成立.永远不会执行循环体

2.如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立

break;     直接结束整个while循环

continue;结束当前的循环体,进入下一次循环体的执行

while 和do while的区别:

1.while只要条件不成立,永远不会执行循环体

  do while 不管条件是否成立,至少会执行一次循环体

 2.两者在语法上也有很大区别

// while语句的语法
while(条件)
{
    语句
}
// do while语句的语法
do{
    语句
}
while(条件);          //do while语句中的while语句条件后必须要加分号

例子:利用while语句实现一个小程序,提示用户输入一个正整数n并输出n的阶乘结果

#include<stdio.h>
int main()
{
    int n = 0;
    while (n<=0) {            // while语句的开始,并判断n是否是正整数
        printf("Please Enter a Number:\n");    // 提示用户输入一个正整数
        scanf("%d",&n);
    }
    // 初始化pro和num的值
    int pro = 1;
    int num = 0;
    while (num < n) {
        num++;
        pro=num*pro;
            }
    printf("Product is %d\n",pro);
    return 0;
}


for语句

 格式:

for (语句1;条件;语句2)
 {
    循环体
 }
 // 语句1:初始化语句,只执行一次
 // 语句2:增量语句(执行完循环体后再执行的语句)
 // 1.for一开始就会执行一次初始化语句,而且整个for循环也只会执行一次
 // 2.判断条件是否成立,如果条件成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立
 // 注意:for()后面不能加分号

例子:提示用户输入一个小于10的正整数n,如果n是5,就输出下列图形,其他n值以此类推

*****

****

***

**

*

#include<stdio.h>
int main()
{
    int n = 0 ;
    while (n<=0 || n>10) {
        printf("Pleas Enter a Number(0<num<10):\n");
        scanf("%d",&n);
    }
    //这个for语句控制行数
    for (int i = 0;i<n; i++) {
        //这个for语句控制星星的个数
        for(int j = 0;j<n-i;j++){
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

tips:利用循环语句造成的死循环: 

while(1); 
for(;;);

总结                                                                                                       

一、选择结构

1.if

1> 结构语法

if (条件) {
} else if (条件2) {
} else if (条件3) {
} else {
}

2> 特点

同一时刻,只有一个大括号里面的代码会被执行

2.switch

1> 结构语法

switch (数值)
{
    case 数值1:
        break;
    case 数值2:
        break;
    case 数值3:
        break;
    default:
        break;
}

2> 特点

1> 默认情况下,只有一个case后面的代码会被执行

2> 如果一个case后面没有break,而且这个case成立,就会按顺序执行后面所有case中的语句,直到遇到break为止

3> 如果要在case后面定义一个新的变量,必须用大括号{}包住

二、循环结构

1.while

1> 结构语法

// while语句的语法
while(条件)
{
    语句
}

2> 特点:如果一开始条件不成立,永远不会执行循环体

2.do while

1> 结构语法

// do while语句的语法
do{
    语句
}
while(条件);

2> 特点:不管条件是否成立,至少会执行一次循环体

3.for

1> 结构语法

for (语句1;条件;语句2)
 {
    循环体
 }

2> 特点:for一开始就会执行一次初始化语句,而且整个for循环也只会执行一次

4.选择循环语句的优先顺序

1> 一般优先使用for循环

2> 然后再考虑while

3> 最后再考虑do while

你可能感兴趣的:(C语言基础-流程控制)