for 语句里面有时候要跟{},在嵌套结构里有时候又不用加,求解释!

以C语言教程讲义(谭浩强)中7.5为例:
main() {
int i,j,p,q,s,a[10];
printf("\n input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++){
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) { p=j;q=a[j]; }
if(i!=p)
{s=a[i];
a[i]=a[p];
a[p]=s; }
printf("%d",a[i]);
}}

第1个回答  2011-11-13
楼主你知道花括号用来干嘛吗?如果你理解了花括号的用法,那么你就知道为什么有些地方没写有些地方写了。代码里面每一个分号结束一行,但是如果要多行代码绑定一起那么就使用花括号,这样就表示一个代码段,括号里面的是一个整体。括号的使用就要按需使用,当你for里面(或者其它条件语句)只需要运行一行代码,那么你的括号加不叫效果一样,但如果是要运行多行的代码,那么就需要用括号把它们形成一个代码段,一起受到上层条件的约束。
第2个回答  2011-11-13
这是因为for循环的循环体为for后的第一个语句 也就是for语句到分号结束
所以如果要循环很多功能 就要把所有要循环的语句放在一个大括号里 作为一条复合语句来使用

如果循环的内容只有一个 那么一个语句紧跟在for后面就可以了 不需要大括号本回答被提问者采纳
第3个回答  2011-11-13
同上