C语言学习之关系和逻辑的区别浅谈

我们在利用编程语言解决问题时,首先要思考问题如何解决,最重要的就是思考如何将一个问题分成多个小问题,然后各个击破。各个小问题之间的关系也是我们所要考虑的,这关系到如何将小问题的解决和最终问题的解决结合。
但是我们最终要将我们所想的解决办法,落实到程序的运行上,即如何使用代码来描述解决方案。这就关系到代码的逻辑问题。
观察下面两个栗子🌰
栗子1

#include <stdio.h>
int main()
{
    int x;
    int n = 1;
    scanf("%d", &x);
    if (x>999)
    {
        n = 4;
    }else if (x>99)
    {
        n = 3;
    }else if (x>9)
    {
        n = 2;
    }
    printf("%d", n);
}

栗子2

#include <stdio.h>
int main()
{
    int x;
    int n = 1;
    scanf("%d", &x);
    if (x>999)
    {
        n = 4;
    }
    if (x>99)
    {
        n = 3;
    }
    if (x>9)
    {
        n = 2;
    }
    if (x>0)
    {
        n = 1;
    }
    
    printf("%d", n);
}

通过观察,我们发现这两个栗子实际上是解决同一种问题,即判断小于10000的情况下,输入的数字的位数。二者的区别在于栗子1是利用了if(){}else if() {} else{}语句进行判断;而栗子而则只是一直利用if(){}语句。虽然在我们描述关系的时候,二者是一样的,即:如果x大于999,则n为4;如果x大于99,则n为3;如果x大于9,则n为2;如果x大于0,则n为1。说的有点啰嗦哎。。。
但是当描述逻辑,或者说计算机执行时,其运行的先后顺序就有所不同了。栗子1中的语句执行过程是一个逐渐排除的过程,即if的条件满足,则执行其后的命令,不满足则检验else if的条件是否满足,满足则执行其后的命令,否则就检验else的条件是否满足,满足则执行其后的命令。而栗子二中的各个if语句的关系则是并行的,如果输入的数字是1000,其满足x>999的条件,此时n=4,但此时并不输出n;程序继续执行,数字进入第二个if语句进行判断,此时n=3,一直到最后一个if语句,输出n=1。但是结果是不对的。
很明显,栗子1中的程序的写法是正确的,这就是描述关系和程序执行逻辑的不同。在有了解决问题的思路后,一定要明确程序执行的逻辑来写代码

说得有点儿啰嗦,初学者的逻辑还是有些不清楚哎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值