【C语言航路】第二站:分支与循环(一)

简介: 【C语言航路】第二站:分支与循环(一)

一、什么是语句?

c语言语句可分为以下五类

1.表达式语句

2.函数调用语句

3.控制语句

4.复合语句

5.空语句

本站着重介绍控制语句。

控制语句用于控制程序的流程,以实现程序的各种结构方式,c语言是一门结构化的程序设计语言,我们c语言有三种结构,顺序结构,选择结构,循环结构。他们由特定的语句定义符组成,c语言有九种控制语句。

可分为:

1.条件判断语句(分支语句):if语句,switch语句

2.循环执行语句:do while语句,while语句,for语句

3.转向语句:break语句,goto语句,continue语句,return语句

二、分支语句(选择语句)

1.  if语句

(1)if语句的三种形式

if(表达式)

       语句1;  //单分支

if(表达式)

       语句1;

else

       语句2;  //双分支

if(表达式1)

       语句1;

else if(表示式2)

       语句2;

else

       语句3;     //多分支

上面这是if语句常见的三种形式。

#include<stdio.h>
  int main()
{
    int age = 0;
    scanf("%d", &age);//20
    //单分支举例
    if (age >= 18)
        printf("成年\n");
    //双分支举例
    if (age >= 18)
        printf("成年\n");
    else
        printf("未成年\n");
    //多分支举例
    if (age < 16)
        printf("少年\n");
    else if (age >= 16 && age < 30)
        printf("青年\n");
    else if (age >= 30 && age < 40)
        printf("中年\n");
    else if (age >= 40 && age < 56)
        printf("壮年\n");
    else if (age >= 56 && age < 80)
        printf("老年\n");
    else
        printf("老寿星\n");
    return 0;
}

如上所示代码中,包含了if的三种形式。

if语句如果需要包含多条代码,则需要加上代码块,

#include<stdio.h>
int main()
{
    int age = 20;
    if (age >= 18)
    {
    printf("成年\n");
    printf("谈恋爱\n");
    }
    return 0;
}

(2)几个经典的错误标准的零分

①下面这段代码未加大括号,if语句无法控制第二个printf,虽然从结果方面来说是对的,但是你们知道我想表达什么意思就可以了。

#include<stdio.h>
int main()
{
    int age = 20;
    if (age >= 18)
        printf("成年\n");
        printf("谈恋爱\n");
    return 0;
}

②下面这段代码输出的结果什么呢?

#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;
}

答案是haha,这就是未加大括号导致的悲剧了。上面这段代码可以加上大括号,就会等价于下面这段代码,这样你就能看得更加清晰了。不会出现错误来了,这也给我们提示了一点,写代码时候一定要注意缩进,要不然自己写的自己都不知道在说啥。

#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;
}

③if括号语句中==写成了=

int main()
{
    int num = 5;
    if (num=10)
    {
        printf("hehe\n");
    }
    return 0;
}

(3)一个重要的结论

else是与距离它最近的if匹配的

2、switch

(1)switch语句基本用法

switch语句我们直接看一段代码来进行讲解

int main()
{
    int day = 0;
    scanf("%d", &day);
    int n = 2;
    switch (day)
    {
    default:
        printf("选择错误\n");
        break;
    case 1:
        printf("星期1\n");
        break;
    case 2:
        printf("星期2\n");
        break;
    case 3:
        printf("星期3\n");
        break;
    case 4:
        printf("星期4\n");
        break;
    case 5:
        printf("星期5\n");
        break;
    case 6:
        printf("星期6\n");
        break;
    case 7:
        printf("星期天\n");
        break;
    }
    return 0;
}

我们switch后面的括号会读取一个整形表达式的值,然后自动跳转到对应的case语句后面,并执行case语句的结果,值得注意的是,要注意break这条语句,这个语句的作用是跳出本层switch语句。因为switch是可以嵌套的,或者跟循环语句嵌套使用。default的意思是,除过case上的所有值之外,其余一切switch所接收的值,都将跳转到default中。

(2)几个经典的错误,标准的零分

①需要添加break时未加break,如果未加break,那么执行完本次case以后,不会直接结束switch,而是继续往下滑,进入下面的case语句中。

②switch语句和case语句中只能是整型表达式,否则报错。比如浮点类型等,但值得注意的是,字符类型和整型类型从某种程度上,也就是ASCII表,来说可以对应起来,也就是之前所说的,表现形式不同而已。


总结

本小节主要讲了if与switch语句中基本的用法,难度不大。但细节很多。

本站未完,欲知后事,请看下节

相关文章
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
75 5
|
2月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
33 8
|
2月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
44 6
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
2月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
2月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
17 0
|
2月前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
C语言 SDN
《C语言及程序设计》程序阅读——用循环累加
返回:贺老师课程教学链接  写出下面程序运行的结果。(1) #include &lt;stdio.h&gt; int main( ) { int i,m=1; for(i=5; i&gt;=1; i--) { m=(m+1)*2; printf("m=%d\n",m); } return 0; } (2)#include
797 0
|
C语言
《C语言及程序设计》实践项目——用循环累加
返回:贺老师课程教学链接  【项目1:分数的累加】编程序,输出1/3-3/5+5/7-7/9…+19/21的结果提示:如果直接解决上面的问题有困难,可以设计一条“由易到难”的路线,逐渐解决其中要解决的问题,让自己的思路明朗起来。(1)1+2+...+20  ——这个应该会(2)1+1/2+1/3+…+1/20  ——分数的累加,注意两个整型相除,商也为整型,而显然求和结果应该是小数(3)1/2
986 0
|
C语言
C语言及程序设计初步例程-34 用循环累加
贺老师教学链接  C语言及程序设计初步 本课讲解 求1+1/2+1/3+…+1/20? #include &lt;stdio.h&gt; int main() { int i=1; double sum=0.0, t; while (i&lt;=20) { t=1.0/i; sum=sum+t; i++;
917 0