CS50x pset3(为什么我的程序没有通过Check50?)

时间:2016-12-09 16:26:14

标签: c computer-science cs50

我完成了我的问题集3 helpers.c程序,它完美地工作到总共10个干草堆但是当我在大海捞针少于10时按Control-D时停止工作。相反,程序会跳过一行,我可以像在一个无垫中一样自由地写。因为,它不能在干草堆中传递3或4,我的程序无法通过Check50。有没有人能解决这个问题?

如果您需要我的代码,请点击此处:

bool search(int value, int values[], int n)
{
     if(value < 0)
     {
         return false;
     }

     for(int i = 0; i < n; i++)
     {
         if (value == values[i])
         {
            return true;
         }
     }

     return false;

 }

 /**
 * Sorts array of n values.
 */
 void sort(int values[], int n)
 {
     bool tf;
     do
     {
         tf = false;
         for(int i=0; i < n-1; i++)
         {
             if(values[i] > values[i+1])
             {
                 int temp = values[i];
                 values[i] = values[i+1];
                 values[i+1] = temp;
                 tf = true;
             }
         }
     }
     while(tf == false);
     return;
 }

1 个答案:

答案 0 :(得分:0)

您的排序算法存在缺陷。它只需要整个阵列的一轮,并按顺序排列,但不完全。

您可以使用冒泡排序(请参阅https://en.wikipedia.org/wiki/Bubble_sort或cs50的讲座),但我不能提供代码,因为它违反了课程的荣誉代码。