问题 填空题

下列给定程序中,函数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[i]<t[j]) { c=t[j]; /*************found**************/ t[i]=t[i++]; t[i]=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:本题的思路是利用选择法对数组元素进行比较。所谓选择法,是依次用当前取得的元素和它后面的元素进行比较,在第一个元素和它后面的元素顺次比较时,可以借助中间变量来对两数进行交换,要保证这第一个元素始终存放数组中的最大数,以后依次挑出次大数,这样最终的数组就是有序的。解答本题,只要理解了选择法的思想,找到并改正错误就容易了。

辨析题
填空题