【发布时间】:2013-04-30 22:15:20
【问题描述】:
我看到很多关于如何搜索数组以查找特定实例的示例我想做的是找到所有实例并打印它们,例如我有这个结构
struct BookInfo
{
char title[50];
int numAuthors;
char authors[50][50];
int year;
int checkedout;
};
struct BookInfo library[500];
而且我有一个功能可以在几年内搜索,但它只给我它找到的第一个实例我如何让它给我机器人实例??? 这是函数
int yearsearch()
{
int target, i, l, r, mid;
l = 0;
r = 14-1;
printf("type a year to search for book");
scanf("%d", &target);
while(l <= r)
{
mid = (l+r)/2;
if(library[mid].year == target)
{
printf("\n%s",library[mid].title);
printf(" %d",library[mid].year);
printf("These are all the books with that year");
break;
}
else if (library[mid].year < target)
{
l = mid + 1;
}
else
{
r = mid - 1;
}
if(l > r)
printf("The target is not in the array.\n");
}
menu();
}
【问题讨论】:
-
(响应删除的评论建议删除“中断”)删除中断将导致此循环永远循环而在某些情况下不会终止。这不是正确的解决方案,因为如果“mid”恰好落在给定年份的条目中间,它可能会错过某些元素。
-
当我这样做时,程序永远不会停止打印它找到的第一个实例,哈哈