C语言基础Day04流程控制

一、流程控制

(一)分支结构

  1. if分支语句:
  • 格式一:
//若表达式为真,则执行语句块;若表达式为假,则不执行语句块。
if(表达式)
{
    语句块//语句块只有一行时,可以省略{}
}
  • 格式二:
//若表达式为真,则执行语句块1;若表达式为假,则不执行语句块2。
if(表达式)
{
    语句块1
}
else
{
    语句块2
}

vim编辑器全选对其命令:在命令模式下使用:ggvG=。ggvG:全选,=:对齐。

  • 格式三:if的嵌套
if(表达式1)
{
    语句块1//表达式1为真,语句块1执行
    if(表达式2)
    {
        语句块2//表达式1和表达式2为真,语句块1和语句块2执行
    }
    else
    {
        语句块3//表达式1为真,表达式2为假,语句块1和语句块3执行
    }
}
else
{
    语句块4//表达式1为假,表达式4执行
}

练习:使用循环嵌套,判断输入的成绩的等级。

#include <stdio.h>                                     

int main()
{
    int grades;
    printf("请输入你的成绩:");
    scanf("%d",&grades);
    if(grades >= 90 && grades <= 100)
    {   
        puts("优");
    }   
    else
    {   
        if(grades >= 80 && grades < 90) 
        {
            puts("良");
        }
        else
        {
            if(grades >= 60 && grades < 80) 
            {
                puts("中");
            }
            else
            {
                puts("差");
            }
        }
    }   
    return 0;
}
  • 格式四:对格式三if语句嵌套的精简。
if(表达式1)
{
    语句块1//只有表达式1为真时,语句块1执行
}
else if(表达式2)
{
    语句块2//表达式1为假,且表达式2为真时,语句块2执行
}
else
{
    语句块3//表达式1和表达式2为假时,语句块3执行
}

练习:elseif语句,判断输入的成绩的等级。

#include <stdio.h>                                     

int main()
{
    int grades;
    printf("请输入一个成绩:");
    scanf("%d",&grades);
    if(grades >= 90 && grades <= 100)
    {   
        puts("优");
    }   
    else if(grades >= 80 && grades < 90) 
    {   
        puts("良");
    }   
    else if(grades >= 60 && grades < 80) 
    {   
        puts("中");
    }   
    else
    {   
        puts("差");
    }   
    return 0;
}
  1. 多分支结构——switch()语句:
  • 格式:
switch(表达式)//表达式的结果只能是常量
{
    case 常量表达式1://常量表达式,表达式中不能有变量
        语句块1;
        break;//语句块1执行后,退出switch case结构。
    case 常量表达式2:
        语句块2;
        break;//若case确实break,则继续执行后面的case
    ...
    case 常量表达式n:
    	语句块n;
        break;
    default://表达式的值,不是前面所有的常量表达式时执行
        语句块n+1;
        break;
}

练习:使用switch语句,判断输入的成绩的等级。

#include <stdio.h>

int main()
{
    int grades;
    printf("请输入一个成绩:");
    scanf("%d",&grades);
    switch(grades / 10) 
    {   
        case 10: 
        case 9:
            puts("优");
            break;
        case 8:
            puts("良");
            break;
        case 7:
        case 6:
            puts("中");
            break;
        default:
            puts("差");
            break;
    }   
    return 0;
}

(二)循环结构

  1. 循环:指在程序实现过程中,有动作是重复的,则可以使用循环结构,复用这部分代码,有条件的循环或退出循环。
  2. while循环语句:
  • 格式:
//先判定表达式的真假,若真执行一次语句块,执行完毕后回到表达式,判定步骤重复执行;若假,跳过语句块的执行,往后继续执行。
while(表达式)
{
	语句块
}

练习:使用while循环求输入数的阶乘。

#include <stdio.h>

int main()
{
    int n,ret = 1;
    printf("请输入一个数:");
    scanf("%d",&n);
    while(n)
    {   
        ret *= n;
        n--;
    }   
    printf("ret = %d\n",ret);
    return 0;
}
  1. do-while循环语句:
  • 格式:
//先执行一次语句块,再判定表达式,若表达式为真,则再一次执行语句块;若表达式为假,则跳过语句块,继续往后执行。
do
{
	语句块
}while(表达式);
  • 应用:输入时,输入错误,重新输入。
#include <stdio,h>

int main()
{
    int a,flag = 0;
    printf("请输入一个学号:\n");
    do
    {
        flag = scanf("%d",&a);
    }while(flag == 1);
    printf("%d\n",a);
    return 0;
}
  1. for循环:
  • 格式:
//执行表达式1,
for(表达式1:表达式2:表达式3)
{
	语句块
}

练习:打印图形。

#include <stdio.h>  

int main()
{
    int n;
    printf("请输入打印的层数:");
    scanf("%d",&n);
    int row,column;
    for(row = 0; row < n; row++)
    {   
        for(column = 0; column < 2*n-1; column++)
        {
            if(column == n-row-1 || column == n+row-1)
            {
                printf("*");
            }
            else if(row == n-1)
            {
                printf("*");
            }
            else
            {
                printf(" ");
            }
        }
        printf("\n");
    }   
    return 0;
}

程序运行结果:
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值