问答题 下列给定程序中,函数fun的功能是:用选择法对数组中的n个元素进行升序排列。 请修改程序中的错误,使它能得出正确的结果。 注意:不得增行和删行,也不得更改程序的结构! 试题程序: #include<stdio.h> #define N 20 void fun(int a[],int n) { int i,j,t,p; for(j=0;j<n一1;j++) { /******found******/ p=j for(i=j;i<n;i++) if(a[i]<a[p]) /******found******/ p=j; t=a[p];a[p]=a[j];a[j]=t; } } main() { int a[N]={9,6,8,3,一1},i,m=5; printf("排序前的数据:"); for(i=0;i<m;i++) printf("%d",a[i]); printf("\n"); fun(a,m); printf("排序后的数据:"); for(i=0;i<m;i++) printf("%d",a[i]); printf("\n"); }
【正确答案】正确答案: (1)p=j; (2)p=i;
【答案解析】解析:本题考查:选择法排序。 (1)这里是一个语法错误,缺少一个“;”号。 (2)p用来存放进行比较的两个数组元素中,较小元素的下标,因此此处应为p=i。