【问题标题】:subscripted value is neither array nor pointer nor vector in cc中的下标值既不是数组也不是指针也不是向量
【发布时间】:2015-04-23 06:09:44
【问题描述】:

如何删除这个错误尝试了一切...... 这个程序是关于从一个数组中找到 5 个最接近的数字...... 在主要部分,我只是简单地获取数组、数字和大小并通过函数

void printclosest(int arr[], int x, int n)
{
int diff[30];
int i,j,k,p,a;
 for (i = 0; i < n; ++i)
    {
        for (j = i + 1; j < n; ++j)
        {
            if (arr[i] > arr[j])
            {
                a =  arr[i];
                arr[i] = arr[j];
                arr[j] = a;
            }
        }
    }

for(i=0;i<n;i++)
{
diff[i]=abs(a[i]-x);

}


for (k = 0; k < n; ++k)
    {
        for (p = k + 1; p < n; ++p)
        {
            if (diff[k] > diff[p])
            {
                a =  arr[k];
                arr[k] = arr[p];
                arr[p] = a;
            }
        }
    }
    for(i=0;i<5;i++)
  { printf("%d",arr[i]);
   }
    }

【问题讨论】:

  • 发布错误时请附上行号!
  • 请提供更多关于您期望发生的事情的详细信息。请正确格式化您的代码。
  • 首先,请格式化您的代码,使其可读。其次,编译器应该告诉你错误在哪一行。这是什么线?
  • @Martze 给你一个 N 个数字和一个数字 Num 的排序列表。编写一个程序,找出与 Num 最接近(在数值上)的五个数字。如果 |Num-x|,则数组中的数字 x 最接近 Num是所有可能的 x 中最小的。注意:如果 Num 存在于给定列表中,那么它应该在输出中。

标签: c arrays


【解决方案1】:

a 被声明为int,但您在这里尝试将其用作数组:

diff[i]=abs(a[i]-x);

【讨论】:

  • 感谢好友帮助编译,但我认为我的逻辑不正确我试图从数组中获取 5 个最接近的数字你能告诉我哪里出错了
  • @avenger 发布一个新问题,包括详细信息并格式化代码。并阅读:stackoverflow.com/help/how-to-ask
  • 给你一个 N 个数字和一个数字 Num 的排序列表。编写一个程序,找出最接近(在数值上)Num 的五个数字。如果 |Num-x|,则数组中的数字 x 最接近 Num是所有可能的 x 中最小的。
  • @2051 我现在没有限制发布问题请帮助
  • @avenger 抱歉时间限制,您只需要等待。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多