gpt4 book ai didi

c - Deitel Book C : How to program - Need advice 中的示例

转载 作者:太空宇宙 更新时间:2023-11-04 00:11:13 25 4
gpt4 key购买 nike

好吧,基本上,我需要在不知道学生确切人数的情况下找到学生组的平均成绩。

下面给出如下代码:

#include <stdio.h>

int main (void)
{
unsigned int counter;
int grade;
int total;

float average;

total = 0;
counter = 0;

printf( "%s", "Enter grade, -1 to end: " );
scanf( "%d", &grade);

while (grade != -1)
{
total = total + grade;
counter = counter + 1;

printf( "%s", "Enter grade, -1 to end: " );
scanf( "%d", &grade );
}

if ( counter != 0 )
{
average = (float) total / counter;

printf( "Class average is %.2f\n", average);
}

else
{
puts( "No grades were entered" );
}

return 0;
}

基本上,这个应该给我任意数量的输入成绩的类(class)平均分。但是每当我输入随机数的成绩然后打印“-1”以停止循环时,它都会打印消息“Class average is 0”。无论您输入了多少数字。唯一正常工作的条件是当您不打印任何成绩并立即打印“-1”时,“未输入成绩”在这里起作用。

请帮帮我。因为它要么让我失明,要么是我看不到的一些严重错误。第三种变体包括书中的错误。

期待您的帮助!

最佳答案

如果您知道如何使用调试器,您可以尝试一下。有时调试器和交互式程序相处得不好,因此您可以从文件而不是标准输入中读取输入,以使调试器满意。

如果您还不熟悉调试器,一个好的开始是添加一些调试代码来回显您正在使用的数字。例如,退出循环后,添加:

printf("counter = %d, total = %d\n", counter, total);

一个可能的问题是在除法中,特别是如果你使用的是可疑的编译器,正如你对另一个回复的评论暗示的那样)。转换的优先级应该高于除法,但您可以尝试将两个数字都转换为 float :

average = (float) total / (float) counter;

您也可以在结果打印上尝试一般的 %f

关于c - Deitel Book C : How to program - Need advice 中的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224623/

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