下列给定程序中,函数fun()的功能是:读入一个字符串 (长度<20),将该字符串中的所有字符按ASCII码降序排序后输出。 例如:输入dafhc,则应输出hfdca。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数

admin2009-02-15  29

问题 下列给定程序中,函数fun()的功能是:读入一个字符串 (长度<20),将该字符串中的所有字符按ASCII码降序排序后输出。
   例如:输入dafhc,则应输出hfdca。
   请改正程序中的错误,使它能得到正确结果。
   注意:不要改动main函数,不得增行或删行,敢不得更改程序的结构。
  试题程序:
   #include <conio.h>
   #include <stdio.h>
   /*************found**************/
   int fun(char t[])
   {
     char c;
     int i,j;
     for(i=0;i<strlen(t)-1;i++)
        for(j=i+1;i<strlen(t);j++)
          if(t<t[j])
          {
          c=t[j];
   /*************found**************/
          t=t[i++];
          t=c;
          }
    }
    main()
   {
   char s[81];
   clrscr();
   printf("\nPlease enter a character
           string:");
   gets(s);
   printf("\n\nBefore sorting:\n%S",s);
   fun(s);
   printf("\nAfter sorting decendingly:\n
          %s",s);
   }

选项

答案(1)错误:int fun(char t[]) 正确:void fun(char t[]) (2)错误:t[j]=t[i++]; 正确:t[j]=t[i];

解析 错误1:该函数只是对一个字符串中的元素进行比较大小的操作,并没有具体的返回值,因此,函数的返回值类型应为void。错误2:本题的思路是利用选择法对数组元素进行比较。所谓选择法,是依次用当前取得的元素和它后面的元素进行比较,在第一个元素和它后面的元素顺次比较时,可以借助中间变量来对两数进行交换,要保证这第一个元素始终存放数组中的最大数,以后依次挑出次大数,这样最终的数组就是有序的。解答本题,只要理解了选择法的思想,找到并改正错误就容易了。
转载请注明原文地址:https://kaotiyun.com/show/gTID777K
0

最新回复(0)