C编程:帮助理解循环

时间:2011-03-24 03:55:53

标签: c loops for-loop

在练习测试中,我的教授给了我这个程序

#include <stdio.h>

int main (void)
{
    int i, sum;
    sum=0;
    for (i=1;i<=7;i++)
        sum=sum+i*i;
    printf("Rocky\n");
    printf("i is %d\n", i);
    printf("sum is %d\n",sum);

    return (0);
}

现在,我的问题是:为什么当我运行这个程序时输出是:

Rocky
i is 8
sum is 140

为什么岩石只打印一次?不应该打印多次我打印? 的理解。感谢所有帮助过的人:)

6 个答案:

答案 0 :(得分:8)

问题在于没有大括号{ },循环体只是for语句后面的单行。

因此,在此示例中,行sum=sum+i*i;执行7次,printf语句在循环结束后输出变量的状态。

答案 1 :(得分:5)

没有。 for循环不在大括号中,因此它只执行它下面的行。

这将打印括号内的所有内容,但循环运行多次

for (i=1;i<=7;i++)
{
    sum=sum+i*i;
    printf("Rocky\n");
    printf("i is %d\n", i);
    printf("sum is %d\n",sum);
}

答案 2 :(得分:3)

没有。如果没有括号{},则只在循环中执行for循环之后的语句。

for (i=1;i<=7;i++)  
    sum=sum+i*i;

与:

相同
for (i=1;i<=7;i++) {
    sum=sum+i*i;
}

答案 3 :(得分:1)

根据对帖子所做的编辑,Rocky printf行在for循环之外,因此不会重复。我想你想要这样的东西:

int main (void)
{
    int i, sum;
    sum=0;
    for (i=1;i<=7;i++)
    {
        sum=sum+i*i;
        printf("Rocky\n");
        printf("i is %d\n", i);
        printf("sum is %d\n",sum);
    }

    return (0);
}

答案 4 :(得分:1)

 for (i=1;i<=7;i++)
    sum=sum+i*i;
 // ....

相同
 for (i=1;i<=7;i++)
 {
    sum=sum+i*i;
 }
 //  ....

答案 5 :(得分:1)

for循环的默认范围是紧随其后的下一个语句。

因此,如果没有括号编写,for循环后面的语句将只执行一次(默认情况下)。 如果需要在for循环中执行多个语句,我们使用大括号{}, 所有语句都在这些大括号内,形成一个“代码块”。

E.g:

     for ( bla; bla; bla; )
     {
        do this;
        and this; 
        and this as well;
     }

您可以在程序中使用所需数量的代码块,包括循环,控制指令, 或者只是单独使用,它不重要,编译器也不会抛出错误。