在练习测试中,我的教授给了我这个程序
#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
为什么岩石只打印一次?不应该打印多次我打印? 的理解。感谢所有帮助过的人:)
答案 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;
}
您可以在程序中使用所需数量的代码块,包括循环,控制指令, 或者只是单独使用,它不重要,编译器也不会抛出错误。