A-A+

下列给定程序中 函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。 请改

2022-08-05 20:29:02 问答库 阅读 171 次

问题详情

下列给定程序中,函数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("%sn ",pstr[i]);
}请帮忙给出正确答案和分析,谢谢!

参考答案

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

考点:字符串,函数