gpt4 book ai didi

c - C 编程语言教科书 Joy of C 中的 "grading"练习问题

转载 作者:行者123 更新时间:2023-12-02 08:33:39 26 4
gpt4 key购买 nike

我尝试使用 C 编程语言教科书 Joy of C 中的给定代码进行编码,我完全按照书上的输入。这段代码对我来说似乎很完美并且工作正常,除了 avg_score 无法正确计算和显示。

一直显示0,所以我觉得问题可能是

total_score = total_score + next_score;

无法正常工作。

我想提前感谢任何帮助我的人,尤其是知道原因是什么的人。

编辑1。我为我的错误感到非常抱歉。我打算要求 avg_score,而不是总分。我确实检查了原因,它似乎是 total_score 总是 0。

编辑2。我的预期结果类似于以下内容(可能不准确)

示例输入:

Score? 91
91 - PASS
Score? 70
70 - PASS
Score? 69
69 - FAIL
Score? h
3 score entered, 2 pass
average score is 76.67

源代码:

#include<stdio.h> 
#include<stdlib.h>
#define PASSING_SCORE 70

int main()
{
int next_score;
int n;
int score_count;
int pass_count;
int fail_count;
int avg_score;
int total_score;

score_count = 0;
pass_count = 0;
fail_count = 0;
total_score = 0;

printf("Score?");
n = scanf("%i",&next_score);

while(n==1)
{
score_count = score_count + 1;
total_score = total_score + next_score;
if (next_score >= PASSING_SCORE)
{
printf("%i - PASS\n",next_score);
pass_count = pass_count + 1;
}
else
{
printf("%i - FAIL\n",next_score);
fail_count = fail_count + 1;
}
printf("Score?");
n = scanf("%i",&next_score);
}

if (score_count == 0)
avg_score = 0;
else
avg_score = total_score/score_count;

printf("\n%i score entered, %i pass, %ifail.\n",
score_count,pass_count,fail_count);
printf("average score is %.2f\n",avg_score);
return EXIT_SUCCESS;
}

最佳答案

查看您的编译器警告:avg_score 被声明为整数,但您使用 %.2f 打印。

您可能打算将其声明为 float :double 可以。或者使用 %d 将其打印为整数,我不确定您的代码示例是关于什么的。

编辑:

要正确计算平均值(正如@Mike 所评论的),您应该将商操作数之一转换为 double :

avg_score = total_score/(double)score_count;

如果不是,您将得到整数商。

关于c - C 编程语言教科书 Joy of C 中的 "grading"练习问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24027698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com