| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1655 人关注过本帖, 1 人收藏
标题:getchar函数与scanf函数的是怎么样读入的呢?
只看楼主 加入收藏
叶小毛
Rank: 1
等 级:新手上路
帖 子:27
专家分:2
注 册:2010-4-23
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:7 
getchar函数与scanf函数的是怎么样读入的呢?
#include<stdio.h>
int main()
{
    int i,n;
    printf("This program prints a table of squares.\n");
    printf("Enter number of entries in table:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("%10d%10d\n",i,i*i);
        if(i%24==0){
            printf("Press Enter to Continue......");
            if(getchar()!='\n')
               break;
            else continue;}
   
    }
    return 0;
}
此题目的要求是在每次输出24个平方数之后,就显示Press Enter to Continue......,然后按下enter键就继续输出,上面的程序是我写的,各位帮忙看一下哈!谢谢了!
搜索更多相关主题的帖子: 函数 getchar scanf 
2010-05-23 21:12
hanzhenddd
Rank: 5Rank: 5
等 级:职业侠客
帖 子:90
专家分:361
注 册:2010-3-4
收藏
得分:2 
scanf( X, Y) 用来读入X类型的数据到Y中。
getchar() 用来读入键盘输入数据 一般用getchar() = X 来判断 是否满足条件!
2010-05-23 21:21
lxqq1000
Rank: 2
等 级:论坛游民
帖 子:23
专家分:30
注 册:2010-5-19
收藏
得分:2 
回车所对应的AISC码 就是换行符吧!~
2010-05-23 21:37
Dzhfield
Rank: 2
等 级:论坛游民
帖 子:12
专家分:37
注 册:2010-5-19
收藏
得分:1 

你要明白
getchar和scanf函数并不是像直观上所理解的直接接受用户当前的输入作为所读取的数据(即我按一个键,它将这个键所对应的数据读取走);
实际上它所读取的是当前键盘缓存区中的数据;如果当前键盘缓存区不为空的话,它并不会读取当前的客户输入,而是读取键盘缓存
区中所残留的上一次输入的数据(如你上一次输入数据后按下的回车键),若不清空键盘缓存区的数据,
下面紧跟着的getchar();或scanf("%c",&a);会想当然的将这个回车字符送到相应的字符变量a中后,就进行下一条语句了,
也就是说,你不会看到getchar();或scanf("%c",&a);的作用,即不用你输入数据,程序将会继续进行;
除非键盘缓存区中的数据被读取完或为空

解决办法:在getchar();语句前加上fflush(stdin);语句。
fflush(stdin); 语句的作用:对键盘缓存区进行强制清空处理。


   OK? see?  真要不明白百度上搜“scanf”、“fflush”……
好好学习,天天向上!!!  

2010-05-25 12:41
simen1986
Rank: 2
等 级:论坛游民
帖 子:12
专家分:64
注 册:2010-5-25
收藏
得分:8 
   我总算看懂了题目了。。。饿。。。头昏眼花地说

[ 本帖最后由 simen1986 于 2010-5-25 16:54 编辑 ]
2010-05-25 16:47
simen1986
Rank: 2
等 级:论坛游民
帖 子:12
专家分:64
注 册:2010-5-25
收藏
得分:7 
  应该在最后一个else里面,包括一个i=1
否则,你即使时continue,它还是从24开始。而不会从for循环的第一部分开始。

还有最好加个4楼说的那个语句。fflush(stdin);


#include<stdio.h>
void main()
{
    int i,n;
    printf("This program prints a table of squares.\n");
    printf("Enter number of entries in table:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("%10d%10d\n",i,i*i);

        if(i%24==0)
        {
            printf("Press Enter to Continue......");
            fflush(stdin);
             if(getchar()!='\n')        
               break;
            else
            {
                i = 1;
               continue;
            }
        }
    }

}
2010-05-25 17:01
叶小毛
Rank: 1
等 级:新手上路
帖 子:27
专家分:2
注 册:2010-4-23
收藏
得分:0 
谢谢各位!
2010-05-26 12:50
叶小毛
Rank: 1
等 级:新手上路
帖 子:27
专家分:2
注 册:2010-4-23
收藏
得分:0 
啊,发现分数分配错误了,不好意思哈!恩,似乎明白了一点,我再想想,谢谢各位的指导!
2010-05-26 13:02
快速回复:getchar函数与scanf函数的是怎么样读入的呢?
数据加载中...
 
   



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

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