Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.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
C 我的代码继续打印出零,我不知道为什么_C - Fatal编程技术网

C 我的代码继续打印出零,我不知道为什么

C 我的代码继续打印出零,我不知道为什么,c,C,有人看到我似乎错过的错误吗?它只是继续打印0.00而不停止,不知道它为什么这样做。它很早就开始工作了,我没有做任何会影响它的改变,所以我真的很困惑 int main (int argc, const char * argv[]) { int i, j, numStudents; double total, average, difference, lessThan, greater, exchange; total = 0; while (scanf("%1d", &num

有人看到我似乎错过的错误吗?它只是继续打印0.00而不停止,不知道它为什么这样做。它很早就开始工作了,我没有做任何会影响它的改变,所以我真的很困惑

 int main (int argc, const char * argv[])
   {
int i, j, numStudents;
double total, average, difference, lessThan, greater, exchange;

 total = 0;

while (scanf("%1d", &numStudents) != EOF)
{
    /* Ends program at zero */
    if (!numStudents)
    {
        return 0;
    }

    double amountSpent[numStudents];

    total = 0;
    greater = 0;
    lessThan = 0;

        for(i = 0; i < numStudents; i++)
        {
           scanf("%1lf\n", &amountSpent[i]);
            total += amountSpent[i];

        }


        /* cleans total, than calculates */

        average = total/numStudents;



    exchange = 0;

        for(i = 0; i < numStudents; i++)
        {
            difference = amountSpent[i] - average;

            if (difference < 0)
            {
                lessThan += difference;
            }
            else
            {
                greater += difference;
            }

        }

 /*   if (-lessThan > greater)
    {
            exchange = -lessThan;
    }

    else
    {
        exchange = greater;
    }
   */

    exchange = (-lessThan > greater)? -lessThan : greater;
    printf("$%.2f\n", exchange);

}
return 0;
}
`

 int main (int argc, const char * argv[])
   {
int i, j, numStudents;
double total, average, difference, lessThan, greater, exchange;

 total = 0;

while (scanf("%1d", &numStudents) != EOF)
{
    /* Ends program at zero */
    if (!numStudents)
    {
        return 0;
    }

    double amountSpent[numStudents];

    total = 0;
    greater = 0;
    lessThan = 0;

        for(i = 0; i < numStudents; i++)
        {
           scanf("%1lf\n", &amountSpent[i]);
            total += amountSpent[i];

        }


        /* cleans total, than calculates */

        average = total/numStudents;



    exchange = 0;

        for(i = 0; i < numStudents; i++)
        {
            difference = amountSpent[i] - average;

            if (difference < 0)
            {
                lessThan += difference;
            }
            else
            {
                greater += difference;
            }

        }

 /*   if (-lessThan > greater)
    {
            exchange = -lessThan;
    }

    else
    {
        exchange = greater;
    }
   */

    exchange = (-lessThan > greater)? -lessThan : greater;
    printf("$%.2f\n", exchange);

}
return 0;
}
int main(int argc,const char*argv[]
{
int i、j、NUM学生;
双倍合计、平均值、差额、小于、大于、交换;
总数=0;
while(scanf(“%1d”,&numStudents)!=EOF)
{
/*程序在零结束*/
如果(!numStudents)
{
返回0;
}
双倍金额[学生];
总数=0;
大于等于0;
lessThan=0;
对于(i=0;i更大)
{
交换=-小于等于1;
}
其他的
{
交换=更大;
}
*/
交换=(-lessThan>更大)?-lessThan:更大;
printf(“$%.2f\n”,交换);
}
返回0;
}

`

如果没有提示和使用
scanf()
尾部的
'\n'
,用户输入会被混淆。尽管有些想法可能会有所帮助,但Else代码确实有效

 int main (int argc, const char * argv[])
   {
int i, j, numStudents;
double total, average, difference, lessThan, greater, exchange;

 total = 0;

while (scanf("%1d", &numStudents) != EOF)
{
    /* Ends program at zero */
    if (!numStudents)
    {
        return 0;
    }

    double amountSpent[numStudents];

    total = 0;
    greater = 0;
    lessThan = 0;

        for(i = 0; i < numStudents; i++)
        {
           scanf("%1lf\n", &amountSpent[i]);
            total += amountSpent[i];

        }


        /* cleans total, than calculates */

        average = total/numStudents;



    exchange = 0;

        for(i = 0; i < numStudents; i++)
        {
            difference = amountSpent[i] - average;

            if (difference < 0)
            {
                lessThan += difference;
            }
            else
            {
                greater += difference;
            }

        }

 /*   if (-lessThan > greater)
    {
            exchange = -lessThan;
    }

    else
    {
        exchange = greater;
    }
   */

    exchange = (-lessThan > greater)? -lessThan : greater;
    printf("$%.2f\n", exchange);

}
return 0;
}
奇怪的是,将输入数字限制为1个字符,-建议将
1
放在说明符之前

 int main (int argc, const char * argv[])
   {
int i, j, numStudents;
double total, average, difference, lessThan, greater, exchange;

 total = 0;

while (scanf("%1d", &numStudents) != EOF)
{
    /* Ends program at zero */
    if (!numStudents)
    {
        return 0;
    }

    double amountSpent[numStudents];

    total = 0;
    greater = 0;
    lessThan = 0;

        for(i = 0; i < numStudents; i++)
        {
           scanf("%1lf\n", &amountSpent[i]);
            total += amountSpent[i];

        }


        /* cleans total, than calculates */

        average = total/numStudents;



    exchange = 0;

        for(i = 0; i < numStudents; i++)
        {
            difference = amountSpent[i] - average;

            if (difference < 0)
            {
                lessThan += difference;
            }
            else
            {
                greater += difference;
            }

        }

 /*   if (-lessThan > greater)
    {
            exchange = -lessThan;
    }

    else
    {
        exchange = greater;
    }
   */

    exchange = (-lessThan > greater)? -lessThan : greater;
    printf("$%.2f\n", exchange);

}
return 0;
}
也要针对
==1
而不是
进行测试EOF
用于处理非数字输入

 int main (int argc, const char * argv[])
   {
int i, j, numStudents;
double total, average, difference, lessThan, greater, exchange;

 total = 0;

while (scanf("%1d", &numStudents) != EOF)
{
    /* Ends program at zero */
    if (!numStudents)
    {
        return 0;
    }

    double amountSpent[numStudents];

    total = 0;
    greater = 0;
    lessThan = 0;

        for(i = 0; i < numStudents; i++)
        {
           scanf("%1lf\n", &amountSpent[i]);
            total += amountSpent[i];

        }


        /* cleans total, than calculates */

        average = total/numStudents;



    exchange = 0;

        for(i = 0; i < numStudents; i++)
        {
            difference = amountSpent[i] - average;

            if (difference < 0)
            {
                lessThan += difference;
            }
            else
            {
                greater += difference;
            }

        }

 /*   if (-lessThan > greater)
    {
            exchange = -lessThan;
    }

    else
    {
        exchange = greater;
    }
   */

    exchange = (-lessThan > greater)? -lessThan : greater;
    printf("$%.2f\n", exchange);

}
return 0;
}
// while (scanf("%1d", &numStudents) != EOF)
while (puts("Enter students (0 to quit)", scanf("%d", &numStudents) == 1)
检查用户输入的结果是个好主意。放下
scanf()
尾部的
'\n'

 int main (int argc, const char * argv[])
   {
int i, j, numStudents;
double total, average, difference, lessThan, greater, exchange;

 total = 0;

while (scanf("%1d", &numStudents) != EOF)
{
    /* Ends program at zero */
    if (!numStudents)
    {
        return 0;
    }

    double amountSpent[numStudents];

    total = 0;
    greater = 0;
    lessThan = 0;

        for(i = 0; i < numStudents; i++)
        {
           scanf("%1lf\n", &amountSpent[i]);
            total += amountSpent[i];

        }


        /* cleans total, than calculates */

        average = total/numStudents;



    exchange = 0;

        for(i = 0; i < numStudents; i++)
        {
            difference = amountSpent[i] - average;

            if (difference < 0)
            {
                lessThan += difference;
            }
            else
            {
                greater += difference;
            }

        }

 /*   if (-lessThan > greater)
    {
            exchange = -lessThan;
    }

    else
    {
        exchange = greater;
    }
   */

    exchange = (-lessThan > greater)? -lessThan : greater;
    printf("$%.2f\n", exchange);

}
return 0;
}
// scanf("%1lf\n", &amountSpent[i]);
puts("Enter amount spent");
if (1 != scanf("%lf", &amountSpent[i])) {
  return 1;
}