c语言初阶——分支和循环语句(运算符)

目录

前言

一.分支语言

1.if语句

单分支结构

双分支结构

多分支结构

技巧1:if(5 == num)

技巧2:else的就近原则

运行结果:

运行结果:

2.switch语句

二、循环语句

1.while循环语句

2.for循环语句

单变量循环

3.do...while循环语句

练习1:计算1!+2!+...+10!

练习2:从有序数列中查找数

补充知识点:逻辑运算符、增量赋值运算符、自增运算符

逻辑运算符

增量赋值运算符

自增运算符


补充知识点:逻辑运算符、增量赋值运算符、自增运算符

逻辑运算符

增量赋值运算符

自增运算符


前言

生活中的任何事情均可抽象为顺序结构,选择结构和循环结构的组合,c语言作为【结构化】的程序设计语言同样如此。控制语句用于控制程序的执行流程,实现程序的各种结构方式,c语言共有三类九种控制语句:

1.条件判断语句也叫分支语句:if语句、switch语句;

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

3.转向语句:break语句、goto语句、continue语句、return语句。

一.分支语言

1.if语句

if语句的语法结构:

单分支结构

if(表达式)
    语句1;

双分支结构

if(表达式)
    语句1;
else
    语句2;

多分支结构

if(表达式)
    语句1;
else if
    语句2;
else if
    语句3;
...
else
    语句n;

举例:

#include<stdio.h>
int main()
{
    int age = 10;
if (age < 18)
    printf("青少年\n");
else if(age >=18 && age <40)
    printf("青年\n");
else if(age >=40 && age <60)
    printf("中年\n");
else 
    printf("老年\n");
return 0;
}

运行结果:

技巧1:if(5 == num)

表达式 num == 5 和表达式 5 == num完全相同,但当漏掉一个=时,num=5会变成赋值表达式,系统不会报错,因此,尽量使用 5 == num。

技巧2:else的就近原则

else会与它上方最近的if配对,不会被缩进格式影响,例如:

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

运行结果:

而当第一个if的表达式为真时:

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

运行结果:

显然else绑定了第二个if,这就是else的就近原则。
同时页说明了,c语言不是很在乎缩进格式,和python存在区别。

为了防止就近原则影响代码运行,要多使用花括号区分代码段。

2.switch语句

swith(整形表达式)
{
case 整形常量表达式:
    语句1;
    break;
case 整形常量表达式:
    语句2;
    break;
...
}

case语句的工作原理:case决定了switch语句的工作入口,当表达式匹配case的值,将从case开始,执行case后所有语句,因此需要使用break;跳出switch语句,不执行后续的case,举例:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
        printf("星期一\n");
    case 2:
        printf("星期二\n");
    case 3:
        printf("星期三\n");
    case 4:
        printf("星期四\n");
    case 5:
        printf("星期五\n");
    }
    return 0;
}

运行结果:

当不使用break;时,输入day为3,将从case 3开始,执行switch中后续所有语句。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    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;
    }
    return 0;
}

运行结果:

二、循环语句

1.while循环语句

while(循环条件)
{
    语句;
    if(表达式)
        语句;
        break;//continue;
}

使用break;可跳出整个while循环,使用continue;跳出本次循环,继续执行下一次循环。

2.for循环语句

单变量循环

for(表达式1;表达式2;表达式3)
{
    循环语句;
}

多变量循环

#include<stdio.h>
int main()
{
    int x, y, i = 0;
    for (x = 0, y = 0; x < 5 && y <= 7; x++, y = y+2)
    {
        i++;
        printf("%d ",i);
    }
    return 0;
}

表达式1是初始化部分

表达式2是条件判断部分

表达式3是调整部分

注:表达式省略,代表表达式部分为真。但是要注意,初始化部分尽量不要省略,当出现循环嵌套时,内循环将无法初始化,导致代码错误运行。

举例:

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

3.do...while循环语句

do
    循环语句;
while(表达式);

需要注意两点,首先,do...while语句的while(表达式)后需要加分号;,其次是所有分支循环语句都要注意的,当执行语句超过两句,最好都加上{},形成语句块,特别是do... while中,不加{}将无法执行。

注意点:调整部分(i++)的执行时机是在单次循环之后

练习1:计算1!+2!+...+10!

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

练习2:从有序数列中查找数

#include<stdio.h>
int main()
{
    int reg ,i = 0;
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int arr_size = sizeof(arr) / sizeof(arr[0]);
    printf("请输入你要查找的数:");
    scanf_s("%d", &reg);
    for (i = 0; i < arr_size; i++)
    {
        if (arr[i] == reg)
        {
            printf("%d\n", i);
            break;
        }
    }
    if (i == arr_size)
        printf("抱歉,数组中没有你要查找的数");
    return 0;
}

注意:arr_size = sizeof(arr) / sizeof(arr[0]);用于返回数组中元素的个数,由于sizeof()得到的是位数,除以每个元素的位数即是数组的元素个数。

补充知识点:逻辑运算符、增量赋值运算符、自增运算符

运算符和操作符是一个东西,在英文中写为”operator“

逻辑运算符

在c语言中的逻辑运算符共四种:|、||、&、&&

|是按位或运算符,它的位数等于两个运算数的位数,当两个数的数据类型不同时,会进行类型提升,取更高位数。

||是逻辑或,有短路特性,当第一个运算结果为真,第二个结果将不会影响逻辑运算符的运行结果,此时将不进行后续计算。

&与&&同理。

增量赋值运算符

增量赋值运算符共五种,对应加、减、乘、除、取模,以加为例:

i += 2;//和i = i + 2;完全相同

即实现将 i+2 赋值给 i 。

自增运算符

前置自增运算符++x;先对x执行x+1操作,再返回x。

后置自增运算符x++,先返回x,再执行x+1。


本文为学习b站视频比特鹏哥c语言教学的随笔39. 【C语言初阶】分支和循环语句_do-while循环练习完+函数_哔哩哔哩_bilibili

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值