CS50 helpers.c,代码没有找到值(针)?有任何想法吗?

时间:2015-09-30 06:53:35

标签: c cs50

不确定为什么它无法在数组中找到值。每当我运行代码时它返回“没有在大海捞针中找到针头。”

 /**
 * 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;


}

问题解决了!似乎我不小心在文件夹外面创建了一个同名的第二个文件。我正在更改错误的文件!!!

3 个答案:

答案 0 :(得分:2)

问题在于这一部分:

while (n > 0)

这会让你陷入无休止的循环中。 你应该用if语句替换它:

if(n<=0){
    return false;
}

答案 1 :(得分:2)

您无需检查n是否为正。 for循环已经这样做了。当你写一个循环

for (int i = 0; i < n; i++)

首先发生的是变量i设置为0。第二件事是将in进行比较。如果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;