数学上的困难

时间:2016-11-06 10:28:55

标签: c math

这里的新人,说实话,感觉有点像傻瓜。

基本上,我在大学,我的一个模块是编程入门(学习C)。我真的很喜欢学习编程,真的想进一步学习;但是,我真的在努力学习数学/逻辑。例如,每周我们都会得到这些我一直在做的小测试 - 除非它们涉及(对我来说很复杂但很容易,我确定)数学代码行。

以下是其中一个问题:

运行以下代码时输出以下内容:

#include<stdio.h>

void main()

{

    int a = 300, b = 100, c = 100;

    if(a >= 400)

        b = 300;

    c = 200;

    printf("%d, %d, %d\n", a, b, c);

}

所以我基本上回答了300,100,100(在多项选择答案中),但答案是300,100,200。并且(如果我对你完全诚实)如果选择300,300,200的选项存在于多选中,我会选择它。我似乎无法理解为什么 - 在结果中 - 只有c的值被改变了?

老实说,在这部分编程方面,我真的很挣扎。我决心继续努力。

我们将非常感谢您提供的任何提示或建议。

亲切的问候。

4 个答案:

答案 0 :(得分:4)

如果您查看代码,bc自初始化后就会分配值。

但如果条件b为真,则a >= 400会更改,如果b为真,则200设置为300 >= 400。真的吗?不,所以,b保持不变。

无论您的代码中是否有其他内容,

200都会分配给c

总之,由于a(= 300),b(= 100)和c(= 100)的声明:

a根本没有改变。

b在条件上发生了变化。但由于这种情况是错误的,它也没有改变。

c 始终已更改(已分配200)。

那么,你现在可以找出答案的原因吗?

答案 1 :(得分:3)

逐行执行,并根据需要控制分支。

最初,具有初始化的行运行:

int a = 300, b = 100, c = 100;

此时,值为a = 300b = 100c = 100

if(a >= 400)
    b = 300;

if语句的工作原理如下:

if(condition)
    then-statement;

如果condition 为真,则执行then-statement。否则,我们跳过它。在您的示例中,我们正在测试是否a >= 400,因为到目前为止a为300,300 >= 400 不正确,所以我们跳过语句{{ 1}}。

此时,值仍然 b = 300a = 300b = 100(因为我们没有更改任何内容)。

最后,你有一句话:

c = 100

此语句不受if的保护,因此始终将被执行。因此,我们更新c = 200; 的值并将其设置为200。

此时,值为ca = 300b = 100

因此,当我们进入print语句时,这些正是打印出的值。

答案 2 :(得分:1)

实际代码似乎是这样的。

 int a = 300, b = 100, c = 100;

    if(a >= 400)
       {
        b = 300;  
       }
    c = 200;

    printf("%d, %d, %d\n", a, b, c);
    }

如果是这样的话

 if(a >= 400)
        b = 300; 
        c= 200;

if之后的下一行只是它的一部分(如果)。  Foreg:

int c=10;
if(c==10)
printf("iam 10");
else
printf("iam not 10");

它的输出将是  &#39; iam 10&#39;  没有{}的条件语句(if,else ..)表示它仅适用于下一行。对于循环语句(for,while ..)也是如此。

答案 3 :(得分:0)

您从:

开始
int a = 300, b = 100, c = 100;

然后如果a(300)&gt; 400 - 某事发生在b,它变为300.

if(a >= 400)

        b = 300;

但是a不是&gt; 400,因此部分代码不会被执行。 所以你还是300,100,100 然后,代码的最后一部分:c = 200;是独立的。没有条件触发它。当达到该行代码时,c总是变为200。 所以现在你有 - a = 300,b = 100,c = 200