gpt4 book ai didi

c - 无限期 for 循环在 C 中不起作用

转载 作者:太空狗 更新时间:2023-10-29 15:24:27 27 4
gpt4 key购买 nike

我目前正在阅读 Ivor Horton 的 Beginning C。无论如何,我不确定的 for 在继续之前打印了我的 printf 语句两次。我确定我做错了什么,但我直接从书中复制了代码。如果重要的话,我正在使用 Dev-C++。这是代码...谢谢

#include <stdio.h>
#include <ctype.h> // For tolower() function //

int main(void)
{
char answer = 'N';
double total = 0.0; // Total of values entered //
double value = 0.0; // Value entered //
int count = 0;

printf("This program calculates the average of"
" any number of values.");
for( ;; )
{
printf("\nEnter a value: ");
scanf("%lf", &value);
total+=value;
++count;

printf("Do you want to enter another value? (Y or N): ");
scanf("%c", &answer);

if(tolower(answer) == 'n')
break;
}

printf("The average is %.2lf.", total/count);
return 0;
}

最佳答案

如果我们简要地运行您的程序,将会发生以下情况:

  1. 它会提示用户输入一个数字。
  2. 用户输入一个数字并按下回车键。
  3. scanf 读取数字,但将换行符留在队列中。
  4. 它会提示用户输入 Y 或 N。
  5. 它会尝试读取一个字符,但不会跳过任何空格/换行符,因此它最终会使用留在队列中的换行符。

显然,我们需要跳过换行符。幸运的是,这很容易,如果不是显而易见的话:在格式字符串的开头添加一个空格,例如:

scanf(" %c", &answer);

格式字符串中的空格表示“在阅读下一个内容之前跳过尽可能多的空格”。对于大多数转换,这是自动完成的,但对于字符串或字符则不会。

关于c - 无限期 for 循环在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17356679/

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