2017-03-04 62 views
0

所有我只想说声对不起,如果我看起来像在这篇文章的白痴首先,我是完全新的C.不管怎么说,我的问题是,而下面是我得到这个奇怪的错误一个YT教程,我试图让一个程序由具有玩家ID的阵列来计算曲棍球最好的球员,他们有多少个进球,他们有多少目标和发挥每个球员的场分球打出。最后我打印出来的最好成绩和玩家的ID,但由于某种原因,我得到一个错误,这里是我的代码:订阅值既不是数组,也不指针

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int i; 
    int players[5] = {5, 3, 4, 2, 1}; 
    int goals = {3, 2, 5, 4, 5}; 
    int gamesPlayed = {1, 1, 3, 2, 2}; 
    float ppg[5]; 
    float bestPPG = 0.0; 
    int bestPlayer; 

    for (i=0; i<5; i++) 
    { 
     ppg[i] = (float)goals[i]/(float)gamesPlayed[i]; 
     if (ppg[i] > bestPPG) 
     { 
      bestPlayer = players[i]; 
      bestPPG = ppg[i]; 
     } 
    } 

    printf("The best player was %d", bestPlayer); 

    return 0; 
} 

输出:

line: 16 
error: subscripted value is neither array nor pointer nor vector 

回答

4

输出(假设为编译器输出,而不是运行时)告诉你错误。问题在于你声明了一个整数,但试图将它用作数组。错误说“下标值既不是数组也不是指针也不是向量”。 下标这里意味着你访问一个变量与[]操作,其可以在C仅在数组,指针(或载体和类超载[]在C++)来完成。因此

int goals = {3, 2, 5, 4, 5}; 

必须

int goals[] = {3, 2, 5, 4, 5}; 

int gamesPlayed = {1, 1, 3, 2, 2}; 

必须

int gamesPlayed[] = {1, 1, 3, 2, 2}; 

即修正后,我得到的结果是:

最好的球员是5

+0

在OP的这些代码行是错误的 - 如果看到没有错误,则OP需要改变编译器设置。 –

+0

我明白,OP提到的输出实际上是计算机错误。我更新了我的答案以反映这一点。 – reindeer

+0

我知道'诠释目标= {3,2,5,4,5};'是错误的,是没有意义的,但它是不确定的行为?如果不是,“目标”保证是“3”吗? –

相关问题