不确定为什么它无法在数组中找到值。每当我运行代码时它返回“没有在大海捞针中找到针头。”
/**
* helpers.c
*
* Computer Science 50
* Problem Set 3
*
* Helper functions for Problem Set 3.
*/
#include <cs50.h>
#include "helpers.h"
/**
* Returns true if value is in array of n values, else false.
*/
bool search(int value, int values[], int n)
{
//Makes sure the input value is positive
while (n > 0)
{
//Searches until value is found
for (int i = 0; i < n; i++)
{
if (value == values[i])
{
printf("Found it!\n");
return true;
}
}
}
return false;
}
尚未开始排序
/**
* Sorts array of n values.
*/
/*void sort(int values[], int n)
{
// TODO: implement an O(n^2) sorting algorithm
return;
}*/
我已经改变了它并且使用了if语句,它仍然是相同的。
#include <cs50.h>
#include "helpers.h"
/**
* Returns true if value is in array of n values, else false.
*/
bool search(int value, int values[], int n)
{
/* if (n >= 0)
{
return false;
}*/
for (int i = 0; i < n; i++)
{
if (value == values[i])
{
printf("Found it!\n");
return true;
}
}
return false;
}
问题解决了!似乎我不小心在文件夹外面创建了一个同名的第二个文件。我正在更改错误的文件!!!
答案 0 :(得分:2)
问题在于这一部分:
while (n > 0)
这会让你陷入无休止的循环中。 你应该用if语句替换它:
if(n<=0){
return false;
}
答案 1 :(得分:2)
您无需检查n
是否为正。 for
循环已经这样做了。当你写一个循环
for (int i = 0; i < n; i++)
首先发生的是变量i
设置为0
。第二件事是将i
与n
进行比较。如果n
为负数,则i
将不会小于n
,因此循环体将永远不会运行。
答案 2 :(得分:0)
// Makes sure the input value is positive
// Okay donot loop just return, not sure how you deal with zero though
if (n < 0)
return false;