下列给定程序中,函数fun()的功能是;利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入到前两个字符中,插入后前3个字符依然有序;再把第4个字符插入到前3个字符中,待排序的字

admin2010-09-14  15

问题 下列给定程序中,函数fun()的功能是;利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入到前两个字符中,插入后前3个字符依然有序;再把第4个字符插入到前3个字符中,待排序的字符串已在主函数中赋予。
   请改正程序中的错误,使它能得出正确的结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.
   试题程序:
       #include  <String.h>
        #include  <stdio.h>
       #define  N  80
       void insert(char *aa)
       { iht i, j, n; char ch;
       n=strlen (aa);
       for (i=1; i<n; i++)
       /**********************************/
      { c=aa;
        j=i-1;
        while ((j>=0) && (ch<aa [j] ))
            { aa [j+l]=aa[j];
                 j--;
            }
       aa [j+l]=ch;
      }
   }
   main ( )
   { char a [N] = "QWERTYUIOPASDFGHJKIMNBVCXZ";
     int i;
     printf("The original string:  %s\n",a);
     insert (a);
     printf("The string after sorting:
               %s\n\n", a);
   }

选项

答案错误:c=aa[i] 正确:ch=aa[i];

解析 对长度为n的数组元素进行排列,可先对数组的前m-1项进行排序,之后再对前m项进行排序,如此循环直到数组全部元素完成排序。对前m项的子数列进行排序的方法是,将该子数列的末尾元素与前m-1项的元素相比较,由于前m-1项已经完成排序,可以找到某一位置,使得将该末尾元素插入该位置之后,前m项仍然保持升序。这样循环后,就可以得到全部元素的排序。
转载请注明原文地址:https://kaotiyun.com/show/EWID777K
0

最新回复(0)