C语言基础(三)

C语言基础(三)

C语⾔有三种基本程序控制结构:顺序结构(默认)、选择结构(分⽀)、循环结构

顺序结构

代码从头到尾一句接着一句顺序执行,直到结束,被称为顺序结构

选择结构(分支)

根据具体的条件来决定程序下一步执行哪些代码被称为选择结构

常见:

单分支

双分支

多分枝

具体使用就是if-else选择和switch选择

switch代码更少更简洁

if-else选择

格式:

c 复制代码
if(选择条件){
	代码块;
}
else {
	代码块;
}

上面是if-else的基本结构,其中else不是必须的,else主要包括了除if给定条件外的所有其他情况

eg:判断一个两个数谁比较大

c 复制代码
#include <stdio.h>

int main(){

    int a, b;

    printf("请输入a和b的值:");
    scanf("%d %d", &a, &b);

    if (a > b){
        printf("a比b大\n");
    }
    else {
        printf("b比a大\n");
    }

    return 0;

}

运行结果:

当我们输入1 和2的时候,程序将1赋值给a,将2赋值给b,因为2>1,不符合if里的a>b,所以执行else里面的代码块,输出b比a大

当我们输入2和1的时候,程序将2赋值给a,将1赋值给b,这时候a>b符合if里面的条件,所以执行if里面的代码块,输出a比b大

当不使用else的时候就是一个单分支选择,符合if条件就执行,不符合就跳过。

使用if和else就是一个双分支选择

当需要判断的分支不止2条时,就可以使用else if 来增加分支,有几条多出的分支就加几个else if代码块

eg:

在上面我们只有a>b和b>a两个分支,但实际上还有一种情况a等于b,修改代码如下

c 复制代码
#include <stdio.h>

int main(){

    int a, b;

    printf("请输入a和b的值:");
    scanf("%d %d", &a, &b);

    if (a > b){
        printf("a比b大\n");
    }
    else if (a == b){
        printf("a等于b\n");
    }
    else {
        printf("b比a大\n");
    }

    return 0;

}

运行结果:

输入相同的数,a和b相等,这时候执行else if里面的代码块,输出a等于b

ps:使用多个if和else if区别:

else if 是一个选择结构的一个分支,当前面if或else if满足条件时,这个else if并不会执行,但是多个if在条件符合时会都执行

如下一个判断两种分支:

c 复制代码
#include <stdio.h>

int main(){

    int a, b;

    printf("请输入a和b的值:");
    scanf("%d %d", &a, &b);

    if (a >= b){
        printf("a大于等于b\n");
    }
    else if (a == b){
        printf("a等于b\n");
    }
   
    return 0;

}

运行结果:

使用else is 当if的条件满足时,只会执行if的代码块,然后就跳过其他的,即使符合else if条件也不会去执行,而多if就会多次判断,因为他们属于不同的选择

c 复制代码
#include <stdio.h>

int main(){

    int a, b;

    printf("请输入a和b的值:");
    scanf("%d %d", &a, &b);

    if (a >= b){
        printf("a大于等于b\n");
    }
    if (a == b){
        printf("a等于b\n");
    }
   
    return 0;

}

switch分支

switch是一种分支结构,类似if,能够对一个或两个或多个分支进行判断,比执行相应代码

适用场景:当判断条件为某个固定的值的时候

语法结构:

c 复制代码
switch (变量)
    {
    case 值1:
        代码块;
        break;

    case 值2:
        代码块;

    default:
        break;
    }

其中default为默认执行,即当输入的变量不匹配下面任何一个case时执行的

eg:

c 复制代码
#include <stdio.h>

int main(){

    int a;

    printf("请输入一个数:");
    scanf("%d", &a);

    switch (a)
    {
    case 1:
        printf("输入为1\n");
        break;

    case 2:
        printf("输入为2\n");

    default:
        printf("输入既不是1也不是2\n");
        break;
    }

    return 0;
}

执行结果:

case需要在代码块结尾添加一个break,否则switch会一直执行下面的内容

循环结构

循环是程序中重复执⾏,直到某个条件不满⾜才停⽌的⼀段代码。

循环有for循环和while循环,此外还有一个do while循环

for循环

for 循环常用于执行指定数量的循环

语法结构:

c 复制代码
for (循环变量; 判断条件; 变量操作){
        代码块;
    }

因为需要执行有量的循环,所以需要定义个变量用于判断循环的值并初始化,判断条件就是判断什么时候停止循环,变量操作就是将循环变量向判断条件靠近的操作

eg:

c 复制代码
#include <stdio.h>

int main(){

    for (int i = 0; i < 10; i++){
        printf("%d\n", i);
    }

    return 0;
}

执行结果:

这里定义的i为循环变量,并初始化值为0,判断条件为i<10,即i为从0到10之间的0 1 2 3 4 5 6 7 8 9这10个值,i++为操作,每执行一次代码块中代码,i的值就会加1

如果想要for为死循环可以省略变量和操作直接将判断条件定为一个为真的判断

eg:

c 复制代码
#include <stdio.h>

int main(){

    int i = 1;
    for (; i = 1; ){
        printf("%d\n", i);
    }

    return 0;
}

执行结果:

因为i恒等于1,所以for会一直执行下去

while循环

当不知道需要循环多少次是可以使用while循环来根据条件判断是否应该停止循环

语法结构:

c 复制代码
while(判断条件){
        代码块;
    }

判断条件为真时while执行代码块代码,执行完一次后在进行判断,直到判断条件为假时停止

eg:

c 复制代码
#include <stdio.h>

int main(){

    int i = 0;
    while(i < 10){
        printf("%d\n", i);
        i++;
    }

    return 0;
}

执行结果:

当i<10时会输出i,然后i自加1,当i=10时不符合i<10的条件,循环结束

如果while想死循环,只需要将判断条件设定为恒真,例如直接为1。

while和for的死循环区别为,while可以直接设置值例如while(1),但是for需要判断过程,例如i<10;

do while

do while和while类似,但是do while会先执行一次代码再进行判断

语法格式:

c 复制代码
		do{
    		代码块;
    }while(判断条件);

eg:

c 复制代码
#include <stdio.h>

int main(){

    int i = 0;
    do{
        printf("%d\n", i);
        i++;
    }while(i < 10);

    return 0;
}

执行结果:

break和continue

break 为结束,例如在while循环内,使用break会直接停止执行,跳出循环

continue为跳过当前循环,开始下一次循环

eg:

c 复制代码
#include <stdio.h>

int main(){

    int i = 0;

    while(i < 6){
        i++;
        if (i == 3) break;
        printf("%d\n", i);
    }
    printf("循环结束i的值为:%d\n", i);
    i = 0;
    while(i < 6){
        i++;
        if (i == 3) continue;
        printf("%d\n", i);
    }
    printf("循环结束i的值为:%d\n", i);
    return 0;
}

执行结果:

可以看出,当第一个while执行到i=3的时候符合if条件,执行break停止循环然后跳出循环此时ide值为3,在第二个循环里面执行到为3的时候,continue跳过了当前循环的printf函数,直接开始下一轮循环。

相关推荐
郝学胜-神的一滴2 小时前
深入epoll反应堆模型:从libevent源码看高性能IO设计精髓
linux·服务器·开发语言·c++·网络协议·unix·信息与通信
XS0301062 小时前
Java 基础(十)异常
java·开发语言·oracle
和小潘一起学AI2 小时前
Python导入私有模块(企业级方案)
开发语言·python
!停2 小时前
C++入门STL容器Vector使用基础,深挖 Vector替代 C 语言繁琐容器的利器
开发语言·c++
小何code2 小时前
【Python零基础入门】第4篇:Python变量与数据类型详解
开发语言·python
渡己之道2 小时前
笔记-lvgl移植到stm32f407
c语言·笔记·stm32
xiaoshuaishuai82 小时前
C# 数字资源分发
开发语言·c#
techdashen2 小时前
用自家产品构建自家产品:Cloudflare Images 的工程架构解析
开发语言·架构·rust
笑不语2 小时前
从共病网络到可解释 AI:同济医院 10 分 SCI 全流程复现(R 语言)
开发语言·人工智能·r语言