问题 问答题

给定程序MODI1.C中fun()函数的功能是:将n个无序整数从小到大排序。
请改正程序中的错误,使它能得出正确的结果。
#include<stdio.h>
#include<stdlib.h>
fun(int n,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("%4d",*z);
if(!(i%10))printf("\n");
printf("\n");

main()
int aa[20]=(9,3,0,4,1,2,5,6,8,
10,7,n=11;
printf("\n\nBefore sorting %d numbers:\q",n);putarr(n,aa);
fun(n,aa);
printf("\nAfter sorting %d numbers:\n",n);putarr(n,aa);

答案

参考答案:(1)for(i=j+1;i<n;i++) (2)p=i;

解析: 本题中函数的功能是将n个无序整数从小到大排序。题目中利用for循环对无序数进行了比较排序。
①排序功能是要对n个无序整数进行比较排序,内层for循环中的循环限制应该是小于n,所以第一个错误标识下的“for(i=j+1;i<n-1;i++)”应改为“for(i=j+1;i<n;i++)”。
②“for(j=0;j<n-1;j++)”循环中以j为下标的元素与其他元素进行比较,当“if(a[p]>a[i])”时,应该是将i的值赋值给p,而不是t,所以“t=i;”应改为“p=i;”。
[考点] 函数关系,逻辑关系。

单项选择题
判断题