问答题
下列给定程序中,函数fun的功能是:将n个无序整数从小到大排序。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include < conio.h >#include < stdio.h >#include < stdlib.h >fun(int r1,int,* a){ int i,j,p,t; for(j=0 ; j < n一1;j++) { p=j;/*********found*********/ for(i=j+1;i < n一1;i++) if(a[p] >a[i])/*********found*********/ t=i; if(p!=j) {t=a[j];a[j]=a[p];a[p]=t;} }}putarr(int n,int*z){ int i; for(i=1;i < =n;i++,z++) { printf("%4 d",* z); if(!(i%10))printf("/n"); } printf("/n");}void main(){ int aa[2 0]={9,3,0,4,1,2,5,6,8,1 0,7),n=11; system("CLS"); printf("/nBefore sorting%dnumbers:/n",n), putarr(n,aa); fun(n,aa); printf("/nAiter sorting%dnumbers:/n",r1); putarr(n,aa);}
【正确答案】正确答案:(1)for(i=j+1;i < n;i++) (2)p=i;
【答案解析】解析:该程序是对n个无序数实现从小到大的排序,先找出整数序列的最小项,置于指针第1个元素的位置;再找出次小项,置于第2个元素的位置;之后顺次处理后续元素。 (1)数组的长度为n,所以最后一个元素的下标值为n一1,i的取值范围应该包括此下标值。 (2)p是中间变量,存放值较小的元素下标。