首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Indefinite for循环在C中不起作用

Indefinite for循环在C中不起作用
EN

Stack Overflow用户
提问于 2013-06-28 03:19:21
回答 3查看 1.1K关注 0票数 4

我现在正在读Ivor Horton的“从C开始”。不管怎样,我的不确定for在继续之前会打印我的printf语句两次。我确信我做错了什么,但我从书中正确地复制了代码。如果重要的话,我会使用Dev-C++。这是代码。谢谢

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-28 03:24:44

如果我们简单地浏览一下您的程序,将会发生以下情况:

  1. 它提示用户键入数字。
  2. 用户输入数字并按enter.
  3. scanf键读取数字,但将换行符留在队列中。

它提示用户键入Y或N。

  1. 它尝试读取字符,但不跳过任何空格/换行符,因此它最终使用队列中剩余的换行符。

显然,我们需要跳过换行符。幸运的是,这很简单,尽管不明显:在格式字符串的开头添加一个空格,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scanf(" %c", &answer);

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

票数 6
EN

Stack Overflow用户

发布于 2013-06-28 03:25:00

更改此行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scanf("%c", &answer);

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scanf(" %c", &answer);

空格将导致scanf忽略您输入的字符之前的空格。

空格是在提供数字后按Enter键的结果。

票数 2
EN

Stack Overflow用户

发布于 2013-06-28 03:41:42

代码很好,唯一遗漏的是在scanf函数之前的fflush(stdin);。它可以总是在scanf函数之前使用,以避免这些缺陷。按下'Enter‘键会将换行符'\n’作为标准输入缓冲区的输入。因此,循环中的第一个scanf函数假定它是输入,而不是等待用户输入值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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.");
while(1)
{
    printf("\nEnter a value: ");
    fflush(stdin);
    scanf("%lf", &value);
    total+=value;
    ++count;

    printf("Do you want to enter another value? (Y or N): ");
    fflush(stdin);
    scanf("%c", &answer);
    if(tolower(answer) == 'n')
        break;
}

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

如果您使用的是console,还要添加一个getch()函数来查看结果。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17356679

复制
相关文章
为什么 strace 在 Docker 中不起作用?
在编辑“容器如何工作”爱好者杂志的能力页面时,我想试着解释一下为什么 strace 在 Docker 容器中无法工作。
用户8639654
2021/09/18
6.4K0
在bootstrap中col-md-offset-* 偏移不起作用
在bootstrap中,使用col-md-offset-1、col-md-offset-2、col-md-offset-3、col-md-offset-4等来设置偏移量很常见,但最近就遇到一个问题了,在最新版的bootstrap4.5中,这个值不起作用了。
kirin
2020/10/27
12.6K1
在nodejs中事件循环分析
在上一篇文章在chromev8中的JavaScript事件循环分析中分析到,在chrome中的js引擎是通过执行栈和事件队列的形式来完成js的异步操作。然而在node中,事件循环表现出的状态与浏览器中大致相同。不同的是node中有一套自己的模型。node中事件循环的实现是依靠的libuv引擎。我们知道node选择chrome v8引擎作为js解释器,v8引擎将js代码分析后去调用对应的node api,而这些api最后则由libuv引擎驱动,执行对应的任务,并把不同的事件放在不同的队列中等待主线程执行。 因此实际上node中的事件循环存在于libuv引擎中。
Yerik
2022/04/11
4K0
List.append() 在 Python 中不起作用,该怎么解决?
Python 是一种强大而灵活的编程语言,它提供了许多方便的数据结构和操作方法,其中之一就是列表(List)。列表是一个有序的集合,可以包含不同类型的元素,并且可以进行添加、删除和修改等操作。在 Python 中,我们通常使用 List.append() 方法向列表末尾添加元素。然而,在某些情况下,你可能会遇到 List.append() 方法不起作用的问题。本文将详细讨论这个问题并提供解决方法。
网络技术联盟站
2023/06/01
2.7K0
C++核心准则ES.86:避免在基本for循环的循环体中修改循环控制变量​
ES.86: Avoid modifying loop control variables inside the body of raw for-loops
面向对象思考
2020/06/11
1.8K0
c# 中for和foreach循环的区别
    (2)效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查)
vv彭
2020/10/27
4.9K0
c# 中for和foreach循环的区别
EasyC++19,C++中的for循环
在编程当中我们经常会遇到需要重复执行的步骤,想要让计算机能够重复执行某些逻辑,就需要使用循环。
TechFlow-承志
2022/08/26
5130
如何提高C++中for循环的效率
1. 不假思索的写法(最为常见,且最耗时) 测试用时:0.000143s clock_t startTime,endTime; startTime = clock(); vector<double> row(100); double sum=0; for(unsigned int i=0;i<1000;i++) { for(unsigned int j=0;j<row.size();j++) {
用户9831583
2022/06/16
1.9K0
[常见问题]在Linux下执行Redis命令不起作用.
redis 127.0.0.1:6379> 这个后面无论输入什么命令都没有返回 ok 或者其他的信息,一直保持截图的状态: 解决方法: 在SecureCRT中设置Options-->SessionO
一枝花算不算浪漫
2018/05/18
1.9K0
C++核心准则ES.74:尽量在循环变量初始化表达式中定义循环变量​
Limit the loop variable visibility to the scope of the loop. Avoid using the loop variable for other purposes after the loop.
面向对象思考
2020/06/03
9540
C语言编程中复杂的循环结构,你被循环晕了吗?
当一段代码需要执行多次时,您可能会遇到这种情况。通常,语句按顺序执行:首先执行函数中的第一个语句,然后执行第二个语句,依此类推。
猫咪爱分享
2018/08/07
1.6K0
C++ 循环
有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
爱学iOS的小麦子
2023/04/12
4230
# C#学习 -循环结构-while循环-do ...while 循环-for循环
C#程序的三大结构 顺序结构:程序的入口都是Main函数,代码从上往下,从左往右,依次执行; 分支结构:当我们的程序执行到某个位置的时候,进行条件判断,根据判断的结果来执行不同的操作; 循环结构:在满足某个条件的时候反复执行一个语句序列(循环)。
呆呆敲代码的小Y
2021/08/12
3.2K0
在Python中,不用while和for循环遍历列表
s1=s.encode(encoding='utf-8').decode('unicode_escape')
用户2337871
2019/07/19
5.5K0
SpringCloudGateWay中跨域配置不起作用
👨‍💻个人主页: 才疏学浅的木子 🙇‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 🙇‍♂️ 📒 本文来自专栏: 问题(BUG)集合 🌈 每日一语:纯纯降智的我 🌈 问题描述 SpringCloudGateWay中跨域配置不起作用 使用filter @Component public class CORSFilter implements Filter{ @Override public void doFilter(ServletRequest request, Serv
才疏学浅的木子
2022/11/13
1.3K0
SpringCloudGateWay中跨域配置不起作用
c语言循环中按键跳出,C语言跳出循环
大家好,又见面了,我是你们的朋友全栈君。 C语言跳出循环 C语言在程序员中备受青睐,成为最近25年使用最为广泛的编程语言。那么大家知道C语言跳出循环是怎么回事呢?下面一起来看看! 使用while或fo
全栈程序员站长
2022/08/19
3.6K0
C++中fstream_在使用中
C++中处理文件类似于处理标准输入和标准输出。类ifstream、ofstream和fstream分别从类 istream、ostream和iostream派生而来。作为派生的类,它们继承了插入和提取运算符(以及其他成员函数),还有与文件一起使用的成员和构造函数。可将文件<fstream> 包括进来以使用任何fstream。如果只执行输入,使用ifstream类;如果只执行输出,使用 ofstream类;如果要对流执行输入和输出,使用fstream类。可以将文件名称用作构造函数参数。
全栈程序员站长
2022/10/02
5.5K0
C++中fstream_在使用中
在C++中调用Python
虽然现在Python编程语言十分的火爆,但是实际上非要用一门语言去完成所有的任务,并不是说不可以,而是不合适。在一些特定的、对于性能要求比较高的场景,还是需要用到传统的C++来进行编程的。但是C++的一个缺点是比较难找到很好的轮子,这也是很多人专用Python的一个重要原因。这篇文章我们要介绍的是一个比较特殊的场景——用C++的代码去调用Python函数中实现的一些功能。这样的话,如果代码的主体还是用C++完成的,而部分功能为了简便,引入一些Python中已经封装好的函数,这样就可以很好的结合两种语言各自的特点。而另一种工作方式:通过Python来调用一些C++或者Fortran中实现的高性能函数,可以参考这一篇博客。这两种不同的使用方法各有优劣,但是如果以Python为主导,就很难避开GIL的问题,这里我们就不过多的展开。
DechinPhy
2021/05/27
4.1K0
C++007-C++循环结构
在线练习: http://noi.openjudge.cn/ch0104/ https://www.luogu.com.cn/
用户2225445
2023/10/16
1590
C++007-C++循环结构
点击加载更多

相似问题

循环在C++中不起作用

20

“循环”在C#中不起作用

12

循环声音在C#中不起作用

11

嵌套循环GridView在C#中不起作用

12

中断在recv()循环linux c中不起作用

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文