我想用C编写一个程序来计算用户输入的数字的平均值,用户可以输入任意数量的数字,即只有当用户想要时循环才会停止。
为了停止用户输入的循环,我尝试了以下方法:
while (true)
{
/* code here */
printf("\nContinue? (Y/N)");
char res;
scanf("%c", &res);
if (res == 'N') {
break;
}
}
我除了这样的输出:
输入号码:32 继续? (是/否)是 输入号码:78 继续? (是/否)否 55.0000
但是我得到了这个输出:
输入号码:32 继续? (是/否) 输入号码:78 继续? (是/否) 输入数字:N 继续? (是/否) 62.666668
这是我的完整代码:
#include <stdio.h>
#include <stdbool.h>
int main()
{
int sum = 0;
int count = 0;
while (true) {
printf("\nEnter number: ");
int a;
scanf("%d", &a);
sum += a;
count += 1;
printf("\nContinue? (Y/N)");
char res;
scanf("%c", &res);
if (res == 'N') {
break;
}
}
float avg = (sum*1.0)/count;
printf("\n%f", avg);
return 0;
}
我自己尝试了很多方法来解决这个问题,但没有成功。我仍然不确定我的错到底在哪里。请帮我解决这个问题。
您的终端是行缓冲的,所以您“Y " 并在循环的两次迭代中读取。更改格式字符串以通过在其前面添加空格 ' ' 来跳过空格:
scanf(" %c", &res);