C/C++单分支、双分支、多分支结构

187 阅读6分钟

1、单分支结构

if语句格式

if(表达式) 语句

执行描述:

其中表达式可以是任意表达式,语句可以是一条语句,也可以是复合语句,执行过程,先判断表达式是否为真,如果为真,那么执行语句,如果为假,那么跳过语句执行后面的程序。

流程图:

例题

编程实现,输入C语言课程的成绩 如果大于等于60分,则输出"成绩"。 算法设计: 1.定义一个成绩变量; 2.输入成绩; 3.如果成绩大于等于60分,则输出"成绩及格" 流程图: 语句编写:

#include<stdio.h>
int main()
{
    int score;
    scanf("%d",&score);
    if(score>=60)
    printf("C语言成绩及格\n");
    return 0;
}

输入:66 运行结果: 微信图片_20230204184431.jpg

例题2

编程实现,输入两个整数,将这两个数按照从小到大的顺序输出。

算法设计:

1.定义三个变量,其中一个用于交换;

2.输入两个整数;

3.如果第一个数大于第二个数,则交换;

4.输出两个整数;

语句编写:

#include<stdio.h>
int main()
{
    int a,b,t;
    scanf("%d%d",&a,&b);
    if(a>b)
    {
    t=a;a=b;b=t;
    }
    printf("a=%d,b=%d\n",a,b);
    return 0;
}

输入:3 2 运行结果 微信图片_20230204184550.jpg

2、双分支结构

if...else...语句格式:

if(表达式)

语句1

else

语句2
流程图:

执行描述:

其中表达式可以是任意表达式,语句1和语句2可以是一条语句,也可以是复合语句。执行中先判断表达式是否为真,如果为真,那么执行行语句1,如果为假,那么执行语句2,语句1和语句2 只能执行其中一个。

例题

编程实现,输入一个整数,判断是奇数还是偶数。

算法设计:

1.定义一个整型变量

2.输入一个整数

3.如果该整数除2取余等于0,则输出该数是偶数,否则输出该数是奇数。

流程图:

语句编写:

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    if(n%2==0)
    printf("该数是偶数\n");
    else
    printf("该数是奇数\n");
    return 0;
}

输入:215 运行结果

微信图片_20230204190854.jpg

例题2

编程实现:输入一个密码,判断这个密码是否正确。

算法设计:

1.定义一个整型变量

2.输入一个密码

3.如果该密码属于设定密码,则输出 "密码确定,登录成功!" 否则输出 "密码错误,无法登录!"

流程图: 语句编写:

#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    if(a=123456)
    printf("密码正确,登录成功!\n");
    else
    printf("密码错误,无法登录\n");
    return 0;
}

输入:123456 运行结果:

微信图片_20230204191238.jpg

3、多分支结构

语句格式

if(表达式1)

语句1

else if(表达式2)

语句2

...

else if (表达式n)

语句n

else

语句n+1

执行描述:

其中表达式可以是任意表达式,语句可以是 条语句,也可以是复合语句。执行过程:先判所 表达式1如果为真,那么执行语句1,否则判困新表达式2如果为真,那么执行语句2,…否则判断表达式n如果为真,那么执行语句n;否则执行语句n+1。语句1、语句2.….语句n和语句n+1只能执行其中一个。

流程图

例题:

编程实现,输入顾客购买商品的消费总额,输出顾客实际付款金额,某商场打折活动,具体细则如下:

(1)购买商品总额超过10000元(含10000元),打5折。

(2)购买商品总额超过8000元(含8000元),打6折。

(3)购买商品总额超过5000元(含5000元),打7折。

(4)购买商品总额超过3000元(含3000元),打8折。

(5)购买商品总额超过1000元(含1000元),打9折。

(6)购买商品总额小于1000元不打折。

算法设计:

1.定义两个实现变量

2.输入顾客购买商品的消费总额

3.利用多分支结构判断条件,执行相应语句

4.输出顾客实际付款金额

流程图 语句编写:

#include<stdio.h>
int main()
{
    float Amount,ActualAmount;
    scanf("%f",&Amount);
    if(Amount>=10000)
       ActualAmount=Amount*0.5;
    else if(Amount>=8000)
       ActualAmount=Amount*0.6;
    else if(Amount>=5000)
       ActualAmount=Amount*0.7;
    else if(Amount>=3000)
       ActualAmount=Amount*0.8;
    else if(Amount>=1000)
       ActualAmount=Amount*0.9;
    else 
       ActualAmount=Amount;
    printf("付款金额%f元\n",ActualAmount);
    return 0;
}

输入:5000 运行结果

微信图片_20230204193715.jpg

if...eles嵌套语句的格式:

if(表达式1)

if(表达式2)

 语句1

else

 语句2

else

if(表达式3)

 语句3

else

语句4
执行描述:

其中表达式可以是任意表达式,语句可以是一条英语句,也可以是复合语句。执行过程:如果表达式1为真,继续判断表达式2如果为真,那么抉执行语句1;如果表达式1为真,表达式2为假,那么执行语句2;如果表达式1为假,继续判断表表达式3如果为真,那么执行语句3;如果表达式1为假,表达式3为假,那么执行语句4。

例题

编程实现,输入一个点的x和y的坐标,输出改点属于哪个象限。

算法设计:

1.定义两个整型变量

2.输入两个整数

3.利用嵌套语句判断横坐标和纵坐标的大小

4.输出象限

语句编写:

#include<stdio.h>
int main()
{
    int x,y;
    scanf("%d%d",&x,&y);
    if(x>0)
      if(y>0)
        printf("该点属于第一象限!\n");
      else
        printf("该点属于第四象限!\n");
    else
      if(y>0)
        printf("该点属于第二象限!\n");
      else
        printf("该点属于第三象限!\n");
      
    return 0;
}

输入:20 –30 运行结果

微信图片_20230204193807.jpg

switch语句的格式:

switch(表达式)

{

case 常量表达式1:语句体1;[ break; ]

case 常量表达式2:语句体2;[break; ]

   ......
   

case 常量表达式n:语句体n;[break; ] default: 语句体n+1;

}

执行描述:

先计算表达式的值,然后依次与每一个case中的常量表达式的值进行比较,若有相等的,则从该case开始依次往下执行,若没有相等的,则从de fault开始往下执行。执行过程中遇到break语句就跳出该swtich语句,否则一直按顺序继续执行行下去,也就是会执行其它case 后面的语句,直到遇到“}”符号才停止。

例题

编程实现,输入考试成绩,其中90-100分属于A级别,80-89分属于B级别,70-79分属 于C级别,60-69分属于 D级别,低于60分属于E级别,将成绩转化为相应五级制级别并输出。

语句编写:

#include<stdio.h>
int main()
{
    int score;
    scanf("%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 if (score>0 && score<=60)
       printf("E\n");
    else 
       printf("错误输入!\n");
    return 0;
}

输入:66 运行结果:

微信图片_20230204193912.jpg

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情