古筝萨克斯合奏曲目:下面的这个用来排序的程序。

来源:百度文库 编辑:高校问答 时间:2024/04/29 04:51:01
为什么在第一个if前面加一个“{”,在第二个if语句末加“}”,这个程序就不能正确执行了。
main()
{int a[11],i,j,k,x;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
{k=i;for(j=i+1;j<=10;j++)

if(a[j]<a[k])k=j;
if(i!=k){x=a[i];a[i]=a[k];a[k]=x;}}

printf("The sorted numbers:\n");
for(i=1;i<11;i++)
printf("%5d",a[i]);
getch();
}
这两个if语句我顾意空开了一些位置!请给我解释清楚点?谢谢!

意思就改变了
for(j=i+1; j<=10; j++) if(a[i]<a[k]) k = j;
这是一个整个的语句。
它从a[i]后面的元素中, 选出一个比a[i]小, 并且是后面几个元素中最小的一个元素。 接下来的if(i!=k){x=a[i];a[i]=a[k];a[k]=x;}, 就是把这个元素和a[i]进行交换。

关键是你没有把程序完全读懂。 自己再考虑一下吧:)

现在的语句中
if(a[j]<a[k])k=j; 是for(j=i+1;j<=10;j++)的循环体,
if(i!=k){x=a[i];a[i]=a[k];a[k]=x;}是fr(i=1;i<10;i++)的循环体,
如果你加了{}的话,这两句就都变成了
for(j=i+1;j<=10;j++)的循环体,当然不正确了。