字符串操作
?–
[align=left]用数组和函数实现如下程序
[/align][align=left]–函数1:从键盘输入10个字符串(长度均不超过10)
[align=left]-函数2:对上述10个字符串用“选择法”依字典序进行排序(按从小到大)
[/align][align=left]–函数3:用“折半查找”在10个字符串中检索给定字符串
[/align][align=left]–主程序:调用函数1--调用函数2--循环接收键盘输入的字符串(长度不超过10)直到输入为空串,每接收到一个字符串就调用函数3进行查找并打印查找结果
[/align][align=left]我的代码是
#include<string.h>
int
main()
{
char a[10][10];
void getstring(char (*p)[10]);
void electsort(char (*p)[10]);
void find(char (*p)[10],char *stri);
//调用函数从键盘中输入10个字符串
printf("please input 10 strings:\n");
getstring(a);
//对上述10个字符串采用选择法排序
electsort(a);
//循环输入需要检索的字符
char string[10];
do
{
printf("please input the string you want to find:\n");
gets(string);
//采用折半查找法找到该字符并输出查找结果
find(a,string);
}while((gets(string))!=0);
return(0);
}
void
getstring(char (*p)[10])
{
int i;
for(i=0;i<10;i++)
scanf("%s",*(p+i));
}
//采用选择法对字符串进行排序
void
electsort(char (*p)[10])
{
int i,j;
int k;
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(strcmp(p[ i ],p[j])>0)
k=j;
if(k!=i)
{
char * temp;
temp=p[ i ];
p[ i ]=p[j];
p[ j ]=temp;
}
}
}
//采用折半查找法查找指定的字符串,并输出查找结果
void
find(char (*p)[10] ,char * stri)
{
int i;
for(i=0;i<10;i++)
{
if(strcmp(p[i],stri)=0)
printf("%s is the %d of the string array!\n",stri,i+1);
else
printf(" we can't find the %s in the string array!\n",stri);
}
}
编译时一直无法通过,请大家看一下问题处在哪里?