为什么这个代码的答案在每个数字上打印3次,直到它是正确的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么这个代码的答案在每个数字上打印3次,直到它是正确的?相关的知识,希望对你有一定的参考价值。

这个代码的结果真的有问题.基本上,我想打印数字除以3的总和,直到20.它正在做我要求它做的事情,但它正在打印每个加法3次,因为某些原因,而我想要的是它打印一次最终结果!帮助我,请谢谢你!。

#include <stdio.h>
int main() 
    int i=1;
    int sum=0;
    for(i=1;i<21;i++)
        if(i%3 == 0)
        sum += i;
        printf("%d\n", sum);
    
    return 0;

答案

也许你忘了""和"",因为有标签。这是有道理的。

另一答案

if语句没有大括号,所以它只影响下一行。你只有在sum被3整除时才会累计,但printf在循环的所有实例中都在执行。

你应该用大括号包围if块。

#include <stdio.h>
int main() 
    int i=1;
    int sum=0;
    for(i=1;i<21;i++)
        if(i%3 == 0)
            sum += i;
            printf("%d\n", sum);
        
    
    return 0;

另一答案

适当缩进以显示流程

#include <stdio.h>
int main() 
    int i=1;
    int sum=0;
    for(i=1;i<21;i++)
        if(i%3 == 0)
            sum += i;
        printf("%d\n", sum);
    
    return 0;

这样可以更好地显示出只有你的 sum += i 属于 if.

为了解决你问题的第一部分,用大括号去掉了每个数字的附加打印。

#include <stdio.h>
int main() 
    int i=1;
    int sum=0;
    for (i=1;i<21;i++) 
        if (i%3 == 0) 
            sum += i;
            printf("%d\n", sum);
        
    
    return 0;

如果一个... if 语句中包含多条语句,需要使用大括号来包围该块。一般情况下,省略大括号后的 if, for, while等块是很危险的,因为添加一个语句不会导致它被包含。

始终正确地缩进你的代码,这有助于在错误发生之前捕捉到这样的错误。


你问题的第二部分涉及到只打印最终结果。你在循环中进行了打印,所以每次条件为真时都会发生。

#include <stdio.h>
int main() 
    int i=1;
    int sum=0;
    for (i=1;i<21;i++) 
        if (i%3 == 0) 
            sum += i;
        
    
    printf("%d\n", sum);
    return 0;

另一答案

printf 在for循环的外面。

另一答案

"......我只想让它打印一次最后的结果!"

你为什么要用 printf("%d\n", sum); 那么在循环的内部?

for (i = 1; i < 21; i++) 
    if (i % 3 == 0)
    sum += i;
    printf("%d\n", sum);

应该是

for (i = 1; i < 21; i++) 
    if (i % 3 == 0)
    sum += i;


printf("%d\n", sum);
另一答案

另外,把所有的正整数相加,除以 k小于或等于 n*k 可以做封闭式的 k*n*(n + 1)/2.

以上是关于为什么这个代码的答案在每个数字上打印3次,直到它是正确的?的主要内容,如果未能解决你的问题,请参考以下文章

python一个脚本循环两次

牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。 变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80. 问题是,要做多少次变换,使得这个数变成个位

如何理解这个答案中“q = i - 4;”的代码?

Java数组打印出奇怪的数字和文本[重复]

有人可以向我解释为什么返回语句应包含在此代码中?

如何检查NSString中的每个字符? [重复]