问题 填空题

下列给定程序中,函数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[i]=str[i]; printf("\nEnter 6 string(1 string at each line):\n "); for(i=0;i<6;i++) scanf("%s",pstr[i]); fun(pstr); printf("The strings after sorting:\n "); for(i=0;i<6;i++) printf("%s\n ",pstr[i]); }

答案

参考答案:错误: 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位字符到字符串的最后一们字符重复以上过秆,即可完成排序。可用循环语句实现。

单项选择题
单项选择题