#include<stdio.h>int main(){void sort(int arry[],int n);int a[10],i;printf("enter array:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);sort(a,10);printf("the sorted array:\n");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");return 0;}void sort (int array[],int n){int i,j,k,t,;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(array[j]<array[k])k=j;t=array[k];array[k]=array[i];array[i]=t;}}
程序是好的。正常运行:
#include<stdio.h>
int main()
{
void sort(int arry[],int n);
int a[10],i;
printf("enter array:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("the sorted array:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void sort (int array[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k])
k=j;
t=array[k];array[k]=array[i];array[i]=t;
}
}
追问我是想懂为什么把K改为d,运行结果就不一样了???
没有全部改,只是改了一部分,所以出错了。
还有,不需要d=k=i;
只要 d=i;
就行了。
程序23和30你这样子写是不对的你想想程序第28行if(array[j]<array[k]) 这里会在某个时刻拿k作为下标的哦 (在26行每次的循环过程中是需要k的值在改变的而你把j赋值给了d自然不行)这个跟你讲不清楚 总之了解程序的步骤吧 一步步照着程序走一遍
这个很重要相信我 因为人思考问题有时候一下想好几步 多数都是在这好几步中出错了。(你要做到于程序同步啊)哈哈
追问恩公!求指点迷津..................
“一步步照着程序走一遍”????怎样照着程序走一遍呢?
“你要做到于程序同步啊”?????怎样做到于程序同步?
如果我几句话你就明白了我就发财了!!
好好学吧 少年。