下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序: #include

admin2010-09-14  11

问题 下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
   请改正程序中的错误,使它能得出正确的结果。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.
   试题程序:
   #include  <conio.h>
   #include  <stdio.h>
   #define MAXLINE 20
   /*************found**************/
   fun(char *pstr[6])
   {int i, j;
     char *p;
     for(i=0;i<5;i++)
        {for(j=i+l;j<6;j++)
   /*************found**************/
          { if(strcmp(*(pstr+i),pstr+j)>0)
               {
               p=*(pstr+i);
   /*************found**************/
               * (pstr+i) -pstr+j;
               * (pstr+j)=p;
               }
           }
       }
   }
   main ( )
    { int i;
      char *pstr[6],str[6][MAXLINE];
      clrscr();
      for(i=0;i<6;i++) pstr=str;
      printf("\nEnter 6 string(1 string at each
            line):\n ");
      for(i=0;i<6;i++) scanf("%s",pstr);
      fun(pstr);
      printf("The strings after sorting:\n ");
      for(i=0;i<6;i++) printf("%s\n ",pstr);
   }

选项

答案(1)错误: fun(char *pstr[6]) 正确: void fun(char *pstr[6]) (2)错误: if(strcmp(*(pstr+i),pstr+j)>0 正确: if(strcmp(*(pstr+i),*(pstr+j))>0 (3)错误: *(pstr+i)=pstr+j; 正确: *(pstr+i)=*(pstr+j);

解析 冒泡法对字符串排序的方法是将相邻两个字符比较,将小的调到前面。令x等于字符串的第i位字符,若该字符的前一位字符大于x,则将该字符与x互换位置。从字符山中的第2位字符到字符串的最后一们字符重复以上过秆,即可完成排序。可用循环语句实现。
转载请注明原文地址:https://jikaoti.com/ti/XIkiFFFM
0

相关试题推荐
最新回复(0)