| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4466 人关注过本帖
标题:怎样在接收字符的时候忽视‘回车键’的干扰
只看楼主 加入收藏
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
结帖率:97.26%
收藏
已结贴  问题点数:20 回复次数:11 
怎样在接收字符的时候忽视‘回车键’的干扰
程序代码:
#include<stdio.h>
main()
{
    int n,m,s,i,j,k;
    char ch1,ch2;
    for(k=0;;k++)
    {
        printf("please input n:");
        scanf("%d",&n);
       
        j=1;s=0;
        m=n*n;
        printf("平  方m=%d\n",m);
       
        for(i=1;i<=n;i++)
        {
             s+=j;
            j+=2;
        }
       
        printf("奇数和s=%d\n",s);
       
        printf("若果向继续请输入a,想中断程序请输入b\n");
        ch2=getchar();
        if((ch1=getchar())==98)
            break;
    }
     return 0;
}
这是一个“验证自然数n的平方等于n个连续的奇数之和”的程序,但我改动一下,想让它循环验证,并根据选择‘a’‘b’来决定是否中断程序。下有图片,现在纠结的就是ch2=getchar();这段代码,因为之前输入n之后还要按一下回车键才能“键入”,回车键这个字符就会传入ch1,所以不得不定义一个ch2开接收“回车”,想在就是有没有更简化的方法。
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 韶志 于 2013-3-22 18:39 编辑 ]
搜索更多相关主题的帖子: color 
2013-03-22 18:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
不需要多用ch2,用ch1接收两次跟你这个也是等效的,但实际上这种办法仍然无法满足你的要求,用户并不总是按一下a之后就按回车,他可以按任意个字符之后再回车。

授人以渔,不授人以鱼。
2013-03-22 19:17
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 2楼 TonyDeng
不是,是在输入n的时候再按回车会被ch1接收,然后就不会执行输入字符而直接再循环,所以就无法终止程序,我是被迫定义一个ch2来接受数据的,难道真没有其它解决办法吗?

三十年河东,三十年河西,莫欺少年穷!
2013-03-22 20:51
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
哪位会啊?有解决办法的吱个声,也感谢一下TonyDeng了

三十年河东,三十年河西,莫欺少年穷!
2013-03-22 21:34
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
fflush(stdin)


[fly]存在即是合理[/fly]
2013-03-22 21:39
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 5楼 azzbcc
这是什么函数?

三十年河东,三十年河西,莫欺少年穷!
2013-03-22 21:52
qwe885167759
Rank: 4
等 级:业余侠客
威 望:5
帖 子:148
专家分:259
注 册:2013-3-12
收藏
得分:5 
那你应该用一个“指向函数的指针作函数参数”:printf("pleast choose a,b,c:")
scanf("%d",&n);
if (n==a)调用一个函数;
if(n==b)调用另一个函数;
if(n==c)调用另一个函数;
房主你试一试

我本楚狂人,凤歌笑孔丘
2013-03-22 23:07
gikieng
Rank: 2
等 级:论坛游民
帖 子:19
专家分:14
注 册:2013-3-7
收藏
得分:5 
五楼正解。。。
 #include<stdio.h>
 main()
 {
     int n,m,s,i,j,k;
     char ch1;
     for(k=0;;k++)
     {
         printf("please input n:");
         scanf("%d",&n);

         j=1;s=0;
         m=n*n;
         printf("平  方m=%d\n",m);

         for(i=1;i<=n;i++)
         {
              s+=j;
             j+=2;
         }

         printf("奇数和s=%d\n",s);

         printf("若果向继续请输入a,想中断程序请输入b\n");
         fflush(stdin);
         if( ( ch1=getch ( ) ) ==98)
             break;
     }
      return 0;
 }
fflush(stdin)使用getch前清除缓存。。。

来的是新手,请多多包涵。。。
2013-03-22 23:27
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 8楼 gikieng
谢啦!   呵呵   又学到一个函数...  嘿嘿

三十年河东,三十年河西,莫欺少年穷!
2013-03-23 00:38
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 7楼 qwe885167759
恩恩   豁然开朗!

[ 本帖最后由 韶志 于 2013-3-23 00:51 编辑 ]

三十年河东,三十年河西,莫欺少年穷!
2013-03-23 00:39
快速回复:怎样在接收字符的时候忽视‘回车键’的干扰
数据加载中...
 
   



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

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