问题 填空题

下列给定程序中,函数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[F]) 正确: void fun(char *pstr[F])
(B) 错误: if(strcmp(*(pstr+i),pstr+j)>0 正确: if(strcmp(*(pstr+i),*(pstr+j))>0
(C) 错误: *(pstr+i)=pstr+j; 正确: *(pstr+i)=*(pstr+j);

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

单项选择题
判断题