C语言程序设计——第四章 程序控制结构

目录

4.1算法

4.2顺序结构

4.3选择结构

if语句

else语句

if...else if语句

switch多路分支语句

条件运算符和条件运算表达式:(?:)

4.4循环结构

while语句

do...while语句

for语句

4.5中断语句


4.1算法


算法:解决问题的方法(结构)

算法的三种基本结构:顺序结构、选择结构(分支结构)、循环结构

4.2顺序结构


按照语句书写的先后顺序依次执行的语句

复合语句:由大括号{}中的0个或多个声明和语句列表共同构成

#include<stdio.h>

int main() {
    int a = 0;
    a = 10;
    printf("%d\n",a);
    return 0;
}

4.3选择结构


根据条件判断来选择执行哪一条语句

选择结构的语句有:if条件语句和switch多路分支语句

if语句

if(条件表达式)

        语句1;

执行过程:如果条件表达式的值为真,则执行语句1,否则不执行语句1

#include<stdio.h>

int main() {
    int a = 0;
    int b = 0;
    int max = 0;
    printf("请依次输入a和b的值:");
    scanf("%d%d", &a, &b);
    max = a;
    if (max < b)
        max = b;
    printf("max:%d\n", max);
    return 0;
}

运行结果

if条件语句中的语句1不是只有一条语句的意思,可以是多条语句用{}括起来的复合语句

练习题:

1.定义一个变量a,写出判断a为奇数的表达式

if(a%2 !=0){

        printf("a是奇数,a=%d",a);

}

2.定义一个变量b,写出判断b为偶数的表达式

if(b%2 ==0){

        printf("b是偶数,b=%d",b);

}

3.定义一个变量c,写出判断c同时能被3和5整除的表达式

if(c%3 ==0&&c%5==0){

        printf("c,c=%d",c);

}

4.定义一个变量d,写出判断d能够被3整除或者能够被5整除的表达式

if(d%3 ==0||d%5==0){

        printf("d,d=%d",d);

}

else语句

if(条件表达式)

        语句1;

else:

        语句2;

执行过程:如果条件表达式的值为真,则执行语句1,否则执行语句2

#include<stdio.h>

int main() {
    int a = 0;
    int b = 0;
    int max = 0;
    printf("请依次输入ab的值:");
    scanf_s("%d%d", &a, &b);
    if (a < b)
        max = b;
    else
        max = a;
    printf("max:%d\n", max);

    return 0;
}

运行结果

if...else if语句

if(条件表达式1)

        语句1;

else if(条件表达式2)

        语句2;

...

else

        语句n;

执行过程:依次判断条件表达式的值,当某个值为真时,则执行相应的语句,然后跳出整个if语句之外,继续执行后面的程序。如果所有的表达式都为假,则执行语句n,然后继续执行后面的程序。

#include<stdio.h>

int main() {
    int score = 0;
    scanf_s("%d", &score);
    if (score >= 90 && score <= 100)
        printf("等级:A\n");
    else if (score >= 80 && score <= 89)
        printf("等级:B\n");
    else if (score >= 70 && score <= 79)
        printf("等级:C\n");
    else if (score >= 60 && score <= 69)
        printf("等级:D\n");
    else
        printf("等级:不合格\n");
    return 0;
}

运行结果

switch多路分支语句

switch(表达式)

{

        case 常量表达式1:语句1(集合);

        case 常量表达式2:语句2(集合);

        ...

        case 常量表达式n:语句n(集合);

        default:语句n+1;

}

执行过程:首先计算表达式的值,与常量表达式i进行比较,如果与其中一个常量表达式i的值相等,就执行其后面的语句直到遇到break语句才结束switch语句,如果case后无break语句,则继续执行随后所有的case后的语句。如果没有找到与表达式的值相匹配的常量表达式,则执行default后的语句n+1

#include<stdio.h>

int main() {
    int week = 0;
    printf("今天星期几:");
    scanf_s("%d", &week);
    switch (week)
    {
        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;
        default:printf("输入数据有误!\n");
    }
    return 0;
}

运行结果

条件运算符和条件运算表达式:(?:)


表达式1?表达式2:表达式3

求值过程:如果表达式1的结果为真,则以表达式2的值作为条件表达式的值,否则以表达式3 的值作为条件表达式的值

#include<stdio.h>

int main() {
    int a = 0;
    int b = 0;
    int max = 0;
    printf("请依次输入ab的值:");
    scanf_s("%d%d", &a, &b);
    max = a > b ? a : b;
    printf("max:%d\n", max);
    return 0;
}

运行结果

4.4循环结构


处理复杂问题时用到循环结构

循环结构三大语句:while语句、do while语句、for语句

while语句

while(循环条件表达式){

        循环体语句;

}

执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行

#include<stdio.h>

int main() {
    int i = 0;
    int n = 0;
    printf("请输入n的值:");
    scanf_s("%d", &n);
    while (i <= n)
    {
        printf("%d\n", i);
        i++;
    }
    return 0;
}

运行结果

do...while语句

do

{

        循环体语句;

}while(循环条件表达式);

执行过程:先执行循环体语句,在检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环

#include<stdio.h>

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

运行结果

for语句

for(表达式1;表达式2;表达式3)

        循环体语句

表达式1:设置初始条件,只执行一次,为0个或多个变量设置初值。

表达式2:是循环条件的表达式,用来判定是否继续循环,在每次执行循环体之前要先执行表达式2,然后决定是否继续执行循环

表达式3:作为循环的调整,比如是循环体变量增值,他是执行循环体语句之后在执行

#include<stdio.h>

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

    return 0;
}

运行结果

4.5中断语句


break语句:跳出本层循环,执行循环后的语句

continue语句:跳出本次循环,执行下一次循环

goto语句:跳到指定的标号位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值