gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:44:23 25 4
gpt4 key购买 nike

有人看到我似乎错过的错误吗?它只是继续打印 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;
}

`

最佳答案

如果没有提示和使用 scanf() 尾随 '\n',用户输入会变得困惑。其他代码确实可以工作,尽管一些想法可能会有所帮助。

奇怪的是,将输入数字输入限制为 1 个字符, - 建议删除说明符之前的 1

还可以针对 == 1 而不是 != EOF 进行测试,以应对非数字输入。

// while (scanf("%1d", &numStudents) != EOF)
while (puts("Enter students (0 to quit)", scanf("%d", &numStudents) == 1)

检查用户输入结果的好主意。删除 scanf() 尾随 '\n'

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

关于c - 我的代码继续打印出零,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28330426/

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