| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 769 人关注过本帖, 1 人收藏
标题:一段小程序中对getchar()函数的困惑,求解!
只看楼主 加入收藏
南国迦叶
Rank: 2
等 级:论坛游民
帖 子:46
专家分:20
注 册:2010-7-9
结帖率:88.24%
收藏(1)
已结贴  问题点数:10 回复次数:6 
一段小程序中对getchar()函数的困惑,求解!
请看下面两个getchar()函数位置不一样:
1.                                                               2.
#include <stdio.h>                                            #include <stdio.h>     
main()                                                        main()
{                                                             {
    int n;                                                        int n;
    for(n=100;n<=200;n++)                                         for(n=100;n<=200;n++)            
    {                                                             {
        {                                                             {
         if (n%3==0)                                                    if (n%3==0)
         continue;                                                      continue;                        
         printf("%d\n",n);                                              printf("%d\n",n);
        }                                                               getchar();
    }                                                                 }  
    getchar();                                                    }
}                                                             }
上面两种写法的代码都能得到要的答案(即输出100到200之间不能被3整除的整数),不同的是第一种写法是一次性输出所有的符合要求的整数,第二种是每按一次回车键才会输出一个,显然第一种是我们想要的,这样的区别就是由于我对getchar()函数没有很好的理解造成的,教材上以及网上都说getchar()函数表示从标准输入设备读取下一个字符,这样的讲法我不是很理解,需要说明的是我最开始接触这个函数的时候是由于输出函数printf()输出的答案无法在屏幕上显示出来,所以后来就在输出函数printf()后加一个getchar()以便直观的看见结果。
所以哪位大侠能结合我上面的实例以通俗的说下两种写法代码最后输出结果区别的原因(是否是我上面说的由getchar()函数不同位置造成的)?
搜索更多相关主题的帖子: include 困惑 
2012-10-27 12:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
你这个不是不理解getchar()的用法,而是忽略了循环的作用。你把getchar()放在循环体内部,它当然要执行那么多次,而第一种只执行一次。

授人以渔,不授人以鱼。
2012-10-27 13:00
天剑山
Rank: 4
等 级:业余侠客
威 望:3
帖 子:119
专家分:266
注 册:2012-8-3
收藏
得分:2 
getchar()放到循环里是一个问题,还有一个问题是关于输出缓冲的问题,printf()可能不会立即输出,直至缓冲区满了为止,可以试试用fflush
2012-10-27 14:22
枫叶飘落
Rank: 2
等 级:论坛游民
帖 子:35
专家分:66
注 册:2012-10-27
收藏
得分:2 
getchar是一个输入一个字符函数;在第一个程序中getchar在循环体以外,当运行时输出不能被3整除的数后你再输入任意字符(回车),才会出现press.........程序才算运行完,第二个程序getchar再循环体内,每循环一次就要运行一次getchar(输入任意字符包括回车),如果不输入字符将不能进行下一次循环,你可以输入其他字符摁回车试一下

[ 本帖最后由 枫叶飘落 于 2012-10-27 15:03 编辑 ]
2012-10-27 14:59
c语言DYY
Rank: 2
等 级:论坛游民
帖 子:51
专家分:44
注 册:2012-10-21
收藏
得分:2 
学习。。
2012-10-27 23:10
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:2 
getchar()函数表示从标准输入设备读取下一个字符 你不操作怎么读取
你输入一个数不按回车 应该不执行一样
for循环的运算结果就是输入
#include <stdio.h>                                          
#include <stdlib.h>
 main()                                                        
 {                                                            
     int n;                                                        
     for(n=100;n<=200;n++)                                                   
     {                                                            
         {                                                            
          if (n%3==0)                                                   
         continue;                                                                           
          printf("%d\n",n);   
           //getchar();  
           system("PAUSE");                                             
         }                                                            
    }                                                   
}   
我感觉要实现这个 用这个库函数更好一点   

马马虎虎 不吝赐教 我是路过蹭分滴
2012-10-28 09:45
茯苓
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2013-9-20
收藏
得分:0 
可是没有getchar不是也能正确输出么
2013-09-21 16:48
快速回复:一段小程序中对getchar()函数的困惑,求解!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019515 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved