从大到小排序,为啥我的结果是错的
#include<stdio.h>void main()
{
int a={15,34,6,27,48,4,20},i,j,k,t;
printf("排序前的数列:");
for(i=0;i<7;i++)
printf("%5d",a);
for(i=0;i<7;i++)
{ k=i;
for(j=i+1;j<7;j++)
if(a>a) k=j;
if(k!=i)t=a;a=a;a=t;}
printf("\n从大到小排序后(选择法)\n");
for(i=0;i<7;i++)
printf("%5d",a);
printf("\n");
}
修改如下,供对照:
#include<stdio.h>
void main()
{
int a={15,34,6,27,48,4,20},i,j,k,t;
printf("排序前的数列:");
for(i=0;i<7;i++)
printf("%5d",a);
for(i=0;i<7-1;i++)
{
k=i;
for(j=i+1;j<7;j++)
if(a>a) k=j;
if(k!=i)
{
t =a;
a=a;
a=t;
}
}
printf("\n从大到小排序后(选择法)\n");
for(i=0;i<7;i++)
printf("%5d",a);
printf("\n");
} 把你的内层for循环里第二个if后交换的部分,三个语句加上花括号,那是个整体
if(k!=i){
t=a;a=a;a=t;
}
页:
[1]