只是想知道这个错误信息的真正含义!

时间:2009-11-12 00:29:28

标签: c++ arrays

  

在'{'

之前预期的不合格ID

我的代码在哪里出错?谢谢大家!

#include <iostream>

using std::cout;
using std::endl;

//function prototypes
void findsmallest (int[], int &); 
void findsmallest  (int scores [], int & min);

int main()
{
    //declare variables
    int smallest = 0;
    int scores[20] = { 90, 54, 23,  75, 67,
                       89, 99, 100, 34, 99, 
                       97, 76, 73,  72, 56, 
                       73, 72, 65,  86, 90 };
    findsmallest(scores, smallest);                   
    return 0;

    //call function find smallest
    findsmallest (scores, smallest);                   

    cout << "Minimum value in the array is " << smallest << endl;

    system ("pause");
    return 0;
}

//function definition

void findsmallest(int scores [], int & min);
{

    min = scores[0];
    int i;

    for(i = 0; i < 20; i++)
    {
        if(scores[i] < min)
        {
            min = scores[i];
        }
    }
}


//end display findsmallest
system ("pause");
return 0;

5 个答案:

答案 0 :(得分:7)

错误位于findsmallest()函数定义的第一行。摆脱分号,它应该工作(除了代码中的其他错误 - 我没有检查它的正确性。)

void findsmallest(int scores [], int & min); <-------semicolon
{

VS

void findsmallest(int scores [], int & min) <--------no semicolon
{

错误告诉你分号后面的开括号({)缺少前面的类/结构/联合/函数声明,因此编译器不知道如何处理它。删除分号,现在编译器知道它是函数定义的主体。

答案 1 :(得分:0)

以下代码声明了一个长度为5的int数组。

int billy [5] = { 16, 2, 77, 40, 12071 }; 

Here是一个很好的用C ++学习数组的教程。

答案 2 :(得分:0)

你想做什么?第一行看起来像是以评论

开头
//declare array

然后继续进行数组声明。你还想做什么?

答案 3 :(得分:0)

嗯,你想找到最小的并打印出来,对吧?

为此,您必须考虑数组的每个成员,并跟踪您找到的最小成员。在考虑了所有数组值后,您将知道哪一个是最低的,因此您可以打印它。在伪代码中:

var smallestSoFar = aBigNumber

for i in array loop
    if array[i] < smallestSoFar then
        smallestSoFar = array[i]
    end if
end loop
print smallestSoFar

希望它有所帮助;)

答案 4 :(得分:0)

要查找数组中的最小值,您可以执行以下操作:

//declare array:
int scores[20] = {90, 54, 23, 75, 67, 89, 99, 100, 34, 99, 
    97, 76, 73, 72, 56, 73, 72, 65, 86, 90};

/* give the variable 'smallest' a high value -
   higher than any in the array:
*/
int smallest = 9999;

/* inspect each value in the array and if it is greater than
   the value of 'smallest', set smallest to that value:
*/
int i;
for (i = 0; i < 20; ++i)
    if (scores[i] < smallest)
        smallest = scores[i];

哦看看这个问题已经彻底改变了,现在我的答案看起来完全疯了: - /