C语言学习笔记6

分支结构

if语句

在这里插入图片描述例:

#include <stdio.h>

int main()
{
    int i;

    printf("您老贵庚:");
    scanf("%d",&i);

    if (i >= 18)
    {
        printf("进门左拐!\n");
    }

    return 0;
}

运行结果

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

例子:

#include <stdio.h>

int main()
{
    int i;

    printf("您老贵庚:");
    scanf("%d",&i);

    if (i >= 18)
    {
        printf("进门左拐!\n");
    }
    else
    {
        printf("慢走,不送\n");
    }
    return 0;
}

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

在这里插入图片描述例子:

#include <stdio.h>

int main()
{
    int i;

    printf("分数:");
    scanf("%d",&i);

    if (i >= 90)
    {
        printf("A\n");
    }
    else if(i >= 80 && i < 90)
    {
        printf("B\n");
    }
    else if(i >= 70 && i < 80)
    {
        printf("C\n");
    }
    else if(i >= 60 && i < 70)
    {
        printf("D\n");
    }
    else
    {
        printf("E\n");
    }

    return 0;
}

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

switch语句

在这里插入图片描述例子:

#include <stdio.h>

int main()
{
    char ch;

    printf("请输入成绩:");
    scanf("%c", &ch);

    switch(ch)
    {
        case 'A':printf("你的成绩在90分以上!\n");
        case 'B':printf("你的成绩在80~90分之间!\n");
        case 'C':printf("你的成绩在70~80分之间!\n");
        case 'D':printf("你的成绩在60~70分之间!\n");
        case 'E':printf("你的成绩在60分以下!\n");
        default: printf("请输入有效的成绩\n");
    }

    return 0;
}

运行结果:
在这里插入图片描述
无法正确输出我们想要的结果,把后面的全部输出来了。

在这里插入图片描述修改上一个例子:

#include <stdio.h>

int main()
{
    char ch;

    printf("请输入成绩:");
    scanf("%c", &ch);

    switch(ch)
    {
        case 'A':printf("你的成绩在90分以上!\n");break;
        case 'B':printf("你的成绩在80~90分之间!\n");break;
        case 'C':printf("你的成绩在70~80分之间!\n");break;
        case 'D':printf("你的成绩在60~70分之间!\n");break;
        case 'E':printf("你的成绩在60分以下!\n");break;
        default: printf("请输入有效的成绩\n");break;
    }

    return 0;
}

运行结果:
在这里插入图片描述
运行正常;

分支结构的嵌套

在这里插入图片描述补充使用流程图来描述程序
流程图:

  1. 圆角矩形:表示开始和结束
  2. 矩形:表示过程,也就是整个流程中的一个环节
  3. 单项箭头线段:表示流程进行方向
  4. 菱形:表示判断、决策
  5. 圆形:表示链接。为避免流程过长或有交叉,可将流程切开,圆形即相当于切口处的连接头
  6. 图示方向:从上向下,从左向右

在这里插入图片描述根据流程图写代码
在这里插入图片描述

例子:

#include <stdio.h>

int main()
{
   int a,b;

   printf("请输出a的值大小:\n");
   scanf("%d",&a);
   printf("请输入b的值大小:\n");
   scanf("%d",&b);

   if(a != b)
   {
       if(a > b)
       {
           printf("a > b \n");
       }
       else
       {
           printf("a < b \n");
       }
   }
   else
   {
       printf("a = b \n");
   }

    return 0;
}

运行结果:
在这里插入图片描述
也可以直接这样写
在这里插入图片描述
改成
在这里插入图片描述

BUG

悬挂else

例子:

#include <stdio.h>

int main()
{
   char isRain,isFree;

   printf("是否有空?(Y/N)\n");
   scanf("%c",&isFree);

   printf("是否下雨?(Y/N)\n");
   scanf("%c",&isRain);

   if(isFree == 'Y')
        if(isRain == 'Y')
            printf("记得带伞!\n");
    else
    {
        printf("女神没空");
    }

    return 0;
}

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

  1. 还没有输入第二个就直接给了答案,因为我们在输入Y之后打了一个回车,所以我们要把回车过滤掉才可以

修改代码加入getchar()

注:getchar()

是读入函数的一种。它从标准输入里读取下一个字符,返回类型为int。
getchar()是stdio.h中的库函数,作用是从stdin流中读入一个字符,
也就是说,如果stdin有数据的话不用输入它就可以直接读取了,
第一次调用getchar()时,确实需要人工的输入,
但是如果你输了多个字符,
以后的getchar()再执行时就会直接从缓冲区中读取了。
当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符。
getchar函数的返回值是用户输入的字符的ASCII码。
若文件结尾(End-Of-File)则返回-1(EOF),
且将用户输入的字符回显到屏幕。
如用户在按回车之前输入了不止一个字符,
其他字符会保留在键盘缓存区中,
等待后续getchar调用读取。也就是说,
后续的getchar调用不会等待用户按键,
而直接读取缓冲区中的字符,直到缓冲区中的字符读完后,
才等待用户按键。

来源

修改代码:

#include <stdio.h>

int main()
{
   char isRain,isFree;

   printf("是否有空?(Y/N)\n");
   scanf("%c",&isFree);

   getchar();

   printf("是否下雨?(Y/N)\n");
   scanf("%c",&isRain);

   if(isFree == 'Y')
        if(isRain == 'Y')
            printf("记得带伞!\n");
    else
    {
        printf("女神没空");
    }

    return 0;
}

运行结果
在这里插入图片描述
还是有问题

  • 因为我们的else之和最近的if匹配,和缩进没有关系,除非打上大括号

修改:

#include <stdio.h>

int main()
{
   char isRain,isFree;

   printf("是否有空?(Y/N)\n");
   scanf("%c",&isFree);

   getchar();

   printf("是否下雨?(Y/N)\n");
   scanf("%c",&isRain);

   if(isFree == 'Y')
   {
        if(isRain == 'Y')
            printf("记得带伞!\n");
   }

    else
    {
        printf("女神没空");
    }

    return 0;
}

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

等于号带来的问题

例子:

#include <stdio.h>

int main()
{
   char hasBF;
   
   printf("小花你有男朋友吗?(Y/N)\n");
   scanf("%c",&hasBF);

   if(hasBF = 'Y')
   {
       printf("那祝福你们咯!\n");
   }
        
    else
    {
        printf("那我们在一起吧!");
    }

    return 0;
}

运行结果:
在这里插入图片描述
发现输出不是我们想要的
错误原因:
在这里插入图片描述一个等于号是赋值号,所以我们需要用==,修改后正常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值