我在這個程序的輸出中遇到了一些麻煩。我需要在一行上打印動詞,如果沒有動詞,我需要打印一個單獨的語句。例如。在C中使用printf格式化二進制搜索的輸出?
"talk and walk"
應打印"The verbs are: talk walk"
而"hello there"
應打印"There are no verbs"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int binary_search(char *list_of_words[], int size, char *target){
int bottom= 0;
int mid;
int top = size - 1;
int found = 0;
while(bottom <= top && !found){
mid = (bottom + top)/2;
if (strcmp(list_of_words[mid], target) == 0){
//printf("%s found at location %d.\n", target, mid+1);
found = 1;
} else if (strcmp(list_of_words[mid], target) > 0){
top = mid - 1;
} else if (strcmp(list_of_words[mid], target) < 0){
bottom = mid + 1;
}
}
if (found == 1)
return mid;
else
return -1;
}
int main(int argc, char* argv[]){
char *input = strtok(argv[1], " \"\n");
char *verbs[5] = { "do", "make", "take", "talk", "walk" };
int position;
int check = 0;
while (input != NULL) {
//printf("%s\n", input);
position = binary_search(verbs, 5, input);
if (position != -1)
printf("The verbs are: %s\n", verbs[position]);
check = 1;
input = strtok(NULL, " ");
}
if (check == 0){
printf("There are no verbs\n");
}
return 0;
}
任何想法?
如何使用二分查找搜索字符串中的單詞?二進制搜索需要對字段進行排序。 – Dipto
而不是打印'printf(「動詞是:%s \ n」,動詞[position]);',將'verbs [position]'存儲到數組中並在循環後打印。 – Dipto