改错问题
下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。(只改错误地方)
#include <stdio.h>
#define N 20
void fun(int *a,int n)
{
int i, m, t, k;
for(i=0; i<n; i++)
{
m=i;
for(k=i; k<n; k++)
if(a[k]<a[m])
k=m;
t=a[k]
a[k]=a[i];
a[i]=t;
}
}
int main()
{
int b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;
for(i=0; i<n; i++)
printf("%d ",b[i]);
printf("\n");
fun(b,n);
for(i=0; i<n; i++)
printf("%d ", b[i]);
printf("\n");
return 0;
}
答案
#include <stdio.h>
#define N 20
void fun(int *a, int n)
{
int i, m, t, k;
for (i = 0; i < 2; i++)
{
m = i;
for (k = i; k < n; k++)
if (a[k] < a[m])
m = k;
t = a[i];
a[i] = a[m];
a[m] = t;
}
}
int main()
{
int b[N] = {11, 5, 12, 0, 3, 6, 9, 7, 10, 8}, n = 10, i;
for (i = 0; i < n; i++)
printf("%d ", b[i]);
printf("\n");
fun(b, n);
for (i = 0; i < n; i++)
printf("%d ", b[i]);
printf("\n");
return 0;
}