【发布时间】:2021-12-05 03:18:21
【问题描述】:
编程新手,所以我敢肯定这是一团糟,但我的代码似乎没有更新我的数组中的值,或者至少它没有打印适当的值,我不确定我哪里错了 我不确定是我的循环需要更新,还是我的主要功能或我的功能,我的老师提供的讲座对我没有太大帮助,所以我希望这里有人可以提供一些见解
#include <stdio.h>
#include <math.h>
#include <stddef.h>
#define SENTINEL -1
void updateLevel (int playerPoints, int b[]);
int main(void)
{
int updateLevel;
int displayLevels;
int levelArray[6];
for (size_t i = 0; i < 6; ++i)
{
levelArray[i] = 0;
}
int playerPoints;
printf ("Player points (-1 to quit): ", SENTINEL);
scanf ("%d", &playerPoints);
while (playerPoints != SENTINEL)
{
fflush(stdin);
printf ("Player points (-1 to quit): ", SENTINEL);
scanf ("%d", &playerPoints);
void updateLevel(playerPoints, levelArray);
}
printf ("\n");
printf ("T O T A L S\n");
printf ("\n");
printf ("Level 1\t");
printf ("%d\n", &levelArray[1]);
printf ("Level 2\t");
printf ("%d\n", &levelArray[2]);
printf ("Level 3\t");
printf ("%d\n", &levelArray[3]);
printf ("Level 4\t");
printf ("%d\n", &levelArray[4]);
printf ("Level 5\t");
printf ("%d\n", &levelArray[5]);
printf ("Level 6\t");
printf ("%d\n", &levelArray[6]);
}
void updateLevel(int playerPoints, int b[])
{
int updateLevel;
if ((playerPoints > -1) && (playerPoints < 10))
{
b[1]++;
}
if ((playerPoints > 9) && (playerPoints < 20))
{
b[2]++;
}
if ((playerPoints > 19) && (playerPoints < 30))
{
b[3]++;
}
if ((playerPoints > 29) && (playerPoints < 40))
{
b[4]++;
}
if ((playerPoints > 39) && (playerPoints < 50))
{
b[5]++;
}
if (playerPoints > 49)
{
b[6]++;
}
}
【问题讨论】:
-
拥有一个名为
updateLevel的函数和一个同名的局部变量是个坏主意。 -
听说过
else吗?或for?SENTINEL的混乱在 1989 年在 8 位嵌入式系统上是有意义的,但是这些天......叹息。 -
您有几个问题。请在打开警告的情况下编译。如果使用 GCC,请传递
-Wall标志。这将被证明是最有启发性的。 -
fflush(stdin);没有意义