我正在尝试创建该程序,但是我仍然遇到错误,表明函数调用中的参数太少。我做错了吗?如果有人可以解释我要去哪里错,我想我可以设法解决。谢谢
#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
答案 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_level
,display_level
这样呼叫display_level(k, levels)
和update_level(pts, levels)
。使用levels[]
是语法错误。