Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deitel C书中的示例:如何编程-需要建议_C - Fatal编程技术网

Deitel C书中的示例:如何编程-需要建议

Deitel C书中的示例:如何编程-需要建议,c,C,好的,基本上,我需要找出学生组的平均分数,而不知道他们的确切数字 以下代码如下所示: #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: " ); s

好的,基本上,我需要找出学生组的平均分数,而不知道他们的确切数字

以下代码如下所示:

#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;
}
#包括
内部主(空)
{
无符号整数计数器;
国际等级;
整数合计;
浮动平均;
总数=0;
计数器=0;
printf(“%s”,“输入等级,-1到结尾:”);
scanf(“%d”、&grade);
而(等级!=-1)
{
总数=总数+等级;
计数器=计数器+1;
printf(“%s”,“输入等级,-1到结尾:”);
scanf(“%d”、&grade);
}
如果(计数器!=0)
{
平均值=(浮动)总计/计数器;
printf(“类平均值为%.2f\n”,平均值);
}
其他的
{
看跌期权(“未输入任何等级”);
}
返回0;
}
基本上,这一个应该给我任何数量的输入等级的班级平均数。但每当我输入随机分数,然后打印“-1”以停止循环时,它就会打印消息“班级平均值为0”。不管你输入了多少数字。唯一可以正常工作的条件是,如果您不打印任何成绩并立即打印“-1”,则“未输入任何成绩”在此处工作

请帮帮我。因为这要么是我瞎了眼,要么是我看不见的严重错误。第三种变体包括书中的错误


期待您的帮助

非常适合我:

Enter grade, -1 to end: 5
Enter grade, -1 to end: 5
Enter grade, -1 to end: 4
Enter grade, -1 to end: 3
Enter grade, -1 to end: -1
Class average is 4.25



$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

非常适合我:

Enter grade, -1 to end: 5
Enter grade, -1 to end: 5
Enter grade, -1 to end: 4
Enter grade, -1 to end: 3
Enter grade, -1 to end: -1
Class average is 4.25



$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
#包括
内部主(空){
无符号整数计数器;
国际等级;
整数合计;
浮动平均;
总数=0;
计数器=0;
等级=-2;
fflush(stdin);
而(等级!=-1){
printf(“%s”,“输入等级,-1到结尾:”);
scanf(“%d”、&grade);
总数=总数+等级;
计数器=计数器+1;
};
如果(计数器!=0){
平均值=(浮动)总计/计数器;
printf(“类平均值为%.2f\n”,平均值);
} 
否则{
看跌期权(“未输入任何等级”);
}
返回0;
}
#包括
内部主(空){
无符号整数计数器;
国际等级;
整数合计;
浮动平均;
总数=0;
计数器=0;
等级=-2;
fflush(stdin);
而(等级!=-1){
printf(“%s”,“输入等级,-1到结尾:”);
scanf(“%d”、&grade);
总数=总数+等级;
计数器=计数器+1;
};
如果(计数器!=0){
平均值=(浮动)总计/计数器;
printf(“类平均值为%.2f\n”,平均值);
} 
否则{
看跌期权(“未输入任何等级”);
}
返回0;
}

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

如果你还不能熟练地使用调试器,一个很好的开始就是添加一些调试代码来响应你正在使用的图形。例如,退出循环后,添加以下内容:

printf("counter = %d, total = %d\n", counter, total);
一个可能的问题是在分区中,特别是如果您使用的是一个可疑的编译器,正如您对另一个回复的评论所提示的那样)。强制转换的优先级应高于除法,但您可以尝试将两个数字强制转换为浮动:

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

您也可以在结果打印上尝试常规的
%f

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

如果你还不能熟练地使用调试器,一个很好的开始就是添加一些调试代码来响应你正在使用的图形。例如,退出循环后,添加以下内容:

printf("counter = %d, total = %d\n", counter, total);
一个可能的问题是在分区中,特别是如果您使用的是一个可疑的编译器,正如您对另一个回复的评论所提示的那样)。强制转换的优先级应高于除法,但您可以尝试将两个数字强制转换为浮动:

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

您也可以在结果打印上尝试常规的
%f

在UNIX/Linux环境中,将初始化STDIN键盘映射文件IO。因此,在GCC/G++中,它可能会工作

在visualc/C++中,它可能无法工作

问题:

  • 首先,在严格编码中,C变量grade应该在while循环块之前首先获得grade值。这可能会导致问题,具体取决于您的操作系统环境

要使其在每个标准C环境中运行,您将能够首先清除标准输入文件系统

在UNIX/Linux环境中,STDIN键盘映射文件IO将被初始化。因此,在GCC/G++中,它可能会工作

在visualc/C++中,它可能无法工作

问题:

  • 首先,在严格编码中,C变量grade应该在while循环块之前首先获得grade值。这可能会导致问题,具体取决于您的操作系统环境

要使其在每个标准C环境中运行,您将能够首先清除标准输入文件系统

我假设问题可能在初始化“average”的“float”类型中。只是因为我在“average”为int时尝试过这个程序,它工作正常。无法复制:对我来说很好。请给出一个生成输出的输入示例。好的,那么可能是我使用的IDE中的问题,那就是虚拟C IDE,我想它是基本的。你能推荐一些好的IDE让MAC和C一起使用吗?除了Xcode of c。我将不胜感激!谢谢大家的帮助!我第一次来这里,对人们的贡献感到惊讶。谢谢我假设问题可能在初始化“average”的“float”类型中。只是因为我在“average”为int时尝试过这个程序,它工作正常。无法复制:对我来说很好。请举例说明您的输入