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函数,直接开始下一轮循环。

相关推荐
郝学胜-神的一滴12 小时前
Qt 入门 01-01:从零基础到商业级客户端实战
开发语言·c++·qt·程序人生·软件构建
测试员周周12 小时前
【Appium 系列】第06节-页面对象实现 — LoginPage 实战
开发语言·前端·人工智能·python·功能测试·appium·测试用例
摇滚侠13 小时前
@Autowired 和 @Resource 的区别
java·开发语言
Wy_编程13 小时前
go语言中的结构体
开发语言·后端·golang
SeaTunnel13 小时前
(八)收官篇 | 数据平台最后一公里:数据集成开发设计与上线治理实战
java·大数据·开发语言·白鲸开源
大卡片14 小时前
C++的基础知识点
开发语言·c++
郑同学的笔记14 小时前
【Qt教程29】Qt5和Qt6版本对比
开发语言·qt
基德爆肝c语言14 小时前
Qt 主窗口全家桶:菜单栏、工具栏、状态栏与对话框完全指南
开发语言·qt
XMYX-015 小时前
28 - Go JSON 数据操作
开发语言·golang·json
三*一15 小时前
Mapbox GL JS 自研面要素整形工具开发实录
开发语言·javascript·arcgis·ecmascript