C语言分支和循环语句(一)

简介: 笔记

分支语句(选择结构)


生活中我们会遇到许多选择性的问题,如下图这样

1.png

在C语言中,该如何实现这种选择方式呢?


if语句

语法结构:方式1: if(表达式)  


                          语句;


                方式2:


                 if(表达式)


                      语句1;


                         else


                         语句2;


                          方式3:


                          if(表达式1)  


                               语句1;


                            else if(表达式2)


                               语句2;


                                else  


                                     语句3;


if语句举例

int main()
{
 int age = 0;
    scanf("%d", &age);
    if(age<18)
   {
        printf("未成年\n");
   }
}

输入一个年龄,如果年龄小于18则打印未成年


if  else 语句举例

#include <stdio.h>
int main()
{
 int age = 0;
    scanf("%d", &age);
    if(age<18)
   {
        printf("未成年\n");
   }
    else
   {
        printf("成年\n");
   }
}

输入一个年龄,如果年龄小于18打印未成年,如果年龄大于18打印成年


if   else if else 举例

#include <stdio.h>
int main()
{
 int age = 0;
    scanf("%d", &age);
    if(age<18)
   {
        printf("少年\n");
   }
    else if(age>=18 && age<30)
   {
        printf("青年\n");
   }
    else if(age>=30 && age<50)
   {  
        printf("中年\n");
   }
    else if(age>=50 && age<80)
   {
        printf("老年\n");
   }
    else
   {
        printf("老寿星\n");
   }
}

输入年龄,如果年龄<18,打印少年


                        年龄>=18并且年龄<30,打印青年


                             年龄>=30并且年龄<50,打印中年


                              年龄>=50并且年龄<80,打印老年


                          如果年龄不在以上数字段内,打印老寿星


注意事项:如果if或else或else if后面的表达式语句,超过了一句,我们要用{}将属于if或属于else或属于else if的语句括起来

判断条件

在C语言中,0为假,非0为真,当选择语句()里面的内容为真时,则会执行当前语句的表达式。


else和if匹配问题

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}

2.png


我们发现此时什么都没打印,这是因为 ,a=0,进入不了if(a==1)表达式,此时if(b==2)是属于if(a==1)的表达式,所以也无法执行if(b==2),这里的else是跟if(b==2)相匹配的,即else跟与它最近的且属于同一范围的if想匹配


正确的输入方式


#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }       
    return 0;
}


switch语句


switch语句也是一种分支语句。 常常用于多分支的情况。


比如:从1-7中每输入一个数字就打印相对应的星期。若是用if语句得用7次,有点麻烦,此时我们可以用另一种语句叫switch语句


switch语句格式,switch(整型表达式)


                                   {    case 整形常量表达式:    语句; }


从1-7中输入数字,打印所对应得星期


#include <stdio.h>
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;    
        case 4:
            printf("星期四\n");
            break;    
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期天\n");    
            break;
   }
    return 0;
}


break的作用:如果输入1,打印星期一之后没有break,程序会自动往下进行,进入case2直到遇到break跳出程序或一直到switch语句结束。

3.png4.png

但如果输入的值超出了case语句后的范围怎么办?C语言中,当switch()中的值没有对应的case时候,我们可以用defalut语句。


default语句作用:当switch()中输入的值在case中没有相对应的满足条件时,即超出case的范围时,这种语句会统一进入default语句,default在switch语句中的位置,对输出的结果无影响,但一般人们默认把它放在switch{}的末尾。


注意事项:switch(整形表达式),()中的内容可以是整形表达式,也可以是char类型,因为字符型本身也是整形,这是因为它还是以ASCII码值进行保存的,case 整形常量表达式:    语句; case 后的表达式必须是常量,不能是变量,如果是变量则会报错。


switch嵌套

switch语句允许嵌套使用

5.png

#include <stdio.h>
int main()
{
    int n = 1;
        int m = 2;
    switch (n)
    {
    case 1:
        m++;
    case 2:
        n++;
    case 3:
        switch (n)
        {//switch允许嵌套使用
        case 1:
            n++;
        case 2:
            m++;
            n++;
            break;
        }
    case 4:
        m++;
        break;
    default:
        break;
    }
    printf("m = %d, n = %d\n", m, n);
    return 0;
}


循环语句


while()循环

6.png

while(表达式)


      循环语句;


在屏幕上打印1-10


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

7.png


while(表达式)

循环语句;

使用while语句时,首先会对表达式进行判断,若表达式为真,则执行循环语句,若表达式为假,则不进入while循环


相关文章
|
1天前
|
C语言
C语言——分支,循环语句
C语言——分支,循环语句
7 0
|
1天前
|
C语言 数据安全/隐私保护
C语言初阶②(分支语句和循环语句)编程练习
C语言初阶②(分支语句和循环语句)编程练习
10 1
|
1天前
|
C语言 数据安全/隐私保护
C语言初阶①(分支语句和循环语句)知识点(下)
C语言初阶①(分支语句和循环语句)知识点
6 1
|
1天前
|
编译器 C语言
C语言初阶①(分支语句和循环语句)知识点(上)
C语言初阶①(分支语句和循环语句)知识点
11 0
|
5天前
|
C语言
C语言——入门分支与循环
C语言——入门分支与循环
4 0
|
6天前
|
C语言
初识C语言~循环语句
初识C语言~循环语句
|
6天前
|
C语言
初识C语言~分支语句
初识C语言~分支语句
|
6天前
|
C语言
【精通C语言】:分支结构if语句的灵活运用
【精通C语言】:分支结构if语句的灵活运用
26 1
|
6天前
|
存储 缓存 算法
C语言循环语句的探讨与实践
C语言循环语句的探讨与实践
23 1
|
C语言
《C语言及程序设计》实践项目——三种循环语句
返回:贺老师课程教学链接  【项目1:利用循环求和】求1000以内所有偶数的和要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。[参考解答]【项目2:求阶乘】输入n,求 n! 并输出[参考解答] 【项目3:输出这样的整数】输出1000以内能被3整除且个位数为6的所有整数。请在下面代码的基础上完成程序: #include &lt;stdio.h&gt; i
985 0