我正试图为家庭作业编写一个简单的拼写检查程序,基本上是将一本包含80000个单词的词典放入一个数组中,然后进行二进制搜索,看看这个单词是否在数组中。
我相信问题在于第一个if语句,以及我的break和return 1行,但我可能错了。我想做的是,如果数组中点的单词与字符串相同,那么它应该跳出if语句和while循环并返回1,如果不相同,我希望它继续搜索。
目前,每当我运行该程序时,它都会说找不到这个词,无论这个词是否真的在字典里。
我们非常感谢在我出错的地方提供任何帮助。
int binarySearch(char string[9]) {
int low = 0;
int high = NUMBEROFDICTIONARYWORDS;
int midPoint;
char midPointWord[9];
while(high > (low + 1)) {
midPoint = (low + high) / 2;
midPointWord[9] = dictionary[midPoint];
if(strcmp(string, midPointWord) == 0) {
return 1;
break;
break;
} else
if(strcmp(string, midPointWord) < 0) {
high = midPoint;
} else
low = midPoint;
}
return 0;
}
midPointWord[9] = dictionary[midPoint];
只分配midPointWord的索引9,在这种情况下,这样做是无效的,因为它已经超过了数组的末尾。我猜dictionary
有点像char**
,在这种情况下,您希望将midPointWord声明为char*
。