下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

admin2009-02-15  40

问题 下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。
   请改正程序中的错误,使它能得到正确结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:
      #include  <conio.h>
      #include  <stdio.h>
      #define  N  20
      void fun(int *a,int n)
      {
      int  i,  m,t,k;
      /*************found**************/
      for(i=O;  i<n;  i++)
        {
         m==i;
         for(k=i;  k<n;  k++)
         if(a[k]<a[m])
      /*************found**************/
           k=m;
         t=a
         a=a[m];
         a[m]=t;
        }
     }
     main()
     {
      int x,b[N]={11,5,12,0,3,6,9,7,10,8},
                   n=10,i;
      clrscr();
      for(i=0;  i<n;  i++)
        printf("%d",b);
      printf("\n");
      fun(b,n);
      for(i=0;  i<n;  i++)
        printf("%d",b);
      printf("\n");
    }

选项

答案(1) 错误: for(i=0;i<n;i++) 正确:for(i=0;i<2;i++) (2) 错误:k=m; 正确:m=k;

解析 错误1:由于题目要求将最小数和次最小数分别与a[0]和a[1]中的数对调,因此这层循环只需循环两次。错误2:赋值语句的执行方向是从右向左,即把右边的值赋给左边的变量。
转载请注明原文地址:https://kaotiyun.com/show/WTID777K
0

最新回复(0)