选择排序 小迷惑
- C/C++ code
//题目:题目:对10个数进行排序#define N 10#include<stdio.h>void main(){ int i,j,min,tem,a[N]; //输出数据 printf("please input ten num:\n"); for(i=0;i<N;i++) { printf(" a[%d]=",i); scanf("%d",&a[i]); } // printf("\n"); printf("输出前的:"); for(i=0;i<N;i++) printf("%5d",a[i]); printf("\n"); [color=#FF0000]//排序 for(i=0;i<N-1;i++) { min=i; for(j=i+1;j<N;j++) if(a[min]>a[j]) min=j; tem=a[i]; a[i]=a[min]; a[min]=tem; }[/color] printf("shu chu hou de :\n"); for(i=0;i<N;i++) printf("%5d",a[i]);printf("\n"); }
我给弄成这样就不对了 就加了一个{ }
- C/C++ code
for(i=0;i<N-1;i++) { min=i; for(j=i+1;j<N;j++) [color=#FF0000] {[/color] if(a[min]>a[j]) min=j; tem=a[i]; a[i]=a[min]; a[min]=tem; [color=#FF0000] }[/color] }
小弟对于排序里面的代码,没很好的理解,我知道for()后面的语句,只能执行一条语句(分号 ;结束),但是这个后面有好几条。
我想知道如果 if(a[min]>a[j]) 成立,那么下面的四条语句会执行吗?
如果if(a[min]>a[j]) 不成立 那么下面又指行几条语句,是交换的那三条吗?
真的给迷惑了。
[解决办法]
你都知道for之后只执行一句。。在for之后加{}执行的就是整个{}里面的句子了
大括号加在if之前就不关if的事,if还是执行到;结束
[解决办法]
成立确实只执行第一条,但顺序结构(即从上到下执行)也会执行后面三句,if不成立只执行后三句。
[解决办法]
写for循环的话,还是要把大括号加上的
for()
{
// 语句
}
你的程序,不管怎样,那三条语句都会执行的,要注意编码规范啊