C 代码在执行几个步骤后无法按预期工作

问题描述 投票:0回答:2

我的代码在第二个分数后停止接受输入并结束执行。我想不出为什么会这样做 下面的代码接受我的第一个和第二个分数输入,跳过第三个,然后结束执行而不进一步。

下面的 C 代码在第二个之后停止接受输入并退出。它接受第一个和第二个输入,跳过第三个输入,然后退出。

如何解决此错误?以下是我提供的代码。

#include <stdio.h>
int main(void)
{
    int scores[3];
    int x;
    int y;
    int z;
    printf("first score is:\n");
    scanf("%i", x);
    scores[0] = x;
    printf("second score is:\n");
    scanf("%i", y);
    scores[1] = y;
    printf("third score is:\n");
    scanf("%i", z);
    scores[2] = z;
    printf("average is %f\n", (scores[0]+scores[1]+scores[2])/(float)3);
}
arrays c scanf
2个回答
0
投票

令我惊讶的是该程序甚至在编译时没有出现警告或错误。

scanf
将指向
int
的指针作为第二个参数。所以它应该是:

scanf("%i", &x);

0
投票

您需要将变量的地址传递给

scanf
才能使其正常工作。

#include <stdio.h>
int main(void)
{
    int scores[3];
    int x;
    int y;
    int z;
    printf("first score is:\n");
    scanf("%i", &x);
    scores[0] = x;
    printf("second score is:\n");
    scanf("%i", &y);
    scores[1] = y;
    printf("third score is:\n");
    scanf("%i", &z);
    scores[2] = z;
    printf("average is %f\n", (scores[0]+scores[1]+scores[2])/(float)3);
}

当然,

x
y
z
都是多余的。

#include <stdio.h>
int main(void)
{
    int scores[3];

    printf("first score is:\n");
    scanf("%i", &scores[0]);

    printf("second score is:\n");
    scanf("%i", &scores[1]);

    printf("third score is:\n");
    scanf("%i", &scores[2]);

    printf("average is %f\n", (scores[0]+scores[1]+scores[2])/(float)3);
}

您应该每次检查

scanf
返回
1
,表明它已成功读取一个值。如果没有,您应该采取一些措施,否则您正在使用初始化的数据,这意味着您的程序可以打印anything

© www.soinside.com 2019 - 2024. All rights reserved.