谁能告诉我为什么我的数组不能使用该功能?

时间:2018-10-25 03:56:47

标签: c

我正在尝试创建该程序,但是我仍然遇到错误,表明函数调用中的参数太少。我做错了吗?如果有人可以解释我要去哪里错,我想我可以设法解决。谢谢

#include <stdio.h>
// global declarations of arrays and variables
int levels[];
int pts;
void update_level (int pts, int levels[]);
void display_level (int k, int levels[]);
int main (void)
{
while (pts != -1) {
    printf("Enter a number (-1 to end) ");
    scanf("%d", &pts);
update_level(pts,levels[]);

}   
display_level(k,levels[]);
return 0;
} 

void update_level (int pts, int levels[]) {
if (pts >0 || pts <=9) {
    levels[0]++;
}
if (pts>9 || pts<=19) {
    levels[1]++;
} 
if (pts>19 || pts<=29) {
    levels[2]++;
}
if (pts>29 || pts<=39) {
    levels[3]++;
}
if (pts>39 || pts<=49) {
    levels[4]++;
}
else if (pts>49) {
    levels[5]++;
}

}

void display_level (int k, int levels[]) {
for (int i=0; i<5; i++) {
    k = 1;
    printf("Level %d %10d", k, levels[i]);
    k++;
}

}

error msgs:
12  26  C:\Users\yuman\OneDrive\Fall2018\CIS 236 C++\.c files\Program 4.c   [Error] expected expression before ']' token

15  16  C:\Users\yuman\OneDrive\Fall2018\CIS 236 C++\.c files\Program 4.c   [Error] 'k' undeclared (first use in this function)

15  25  C:\Users\yuman\OneDrive\Fall2018\CIS 236 C++\.c files\Program 4.c   [Error] expected expression before ']' token

2 个答案:

答案 0 :(得分:1)

更新:这是预编辑,其中levels[5]更改为levels[],但这不能解决问题。您仍然在数组及其元素之间感到困惑。下面的另一个更新。

此行:

update_level(pts,levels[5]);

第二个参数是levels数组的第六个元素,而不是数组本身。您的函数定义为需要数组,而不是标量,并且您要传递标量。

请尝试将函数定义为:

void update_level (int pts, int a_level) {

或在调用中传递整个数组,例如:

update_level(pts,levels); //更新:注意缺少“ []”

此行:

display_level(k,levels[5]);

同样的问题。

请注意,这仅解决了紧迫的问题。我尚未分析您的代码以找到“正确的”解决方案。

答案 1 :(得分:1)

int levels[];的声明应为int levels[6];

display_level(k,levels[]);语句中,未定义k。需要在int k;函数中放入类似main的东西。

您可以像update_leveldisplay_level这样呼叫display_level(k, levels)update_level(pts, levels)。使用levels[]是语法错误。