| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1046 人关注过本帖
标题:这个的结果为什么不对呢。。。
只看楼主 加入收藏
xq328220454
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:23
专家分:42
注 册:2008-8-22
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
这个的结果为什么不对呢。。。
程序代码:
#include <stdio.h>
void main()
{
    char x;
    while (1)
    {
        printf("请输入一个小写字母\n");
        x=getchar();
        if (x>='a'&&x<='z')
        {
            printf("正确\n");
            break;
        }
        else   
            printf("错,重新输入\n");
        continue;
    }
}
执行程序,输入小写字母判断无误,输入大写字母结果就有误,不知道错在了哪里。。。。
搜索更多相关主题的帖子: 结果 
2010-11-07 00:08
gaochizhen33
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:114
专家分:101
注 册:2010-11-4
收藏
得分:2 
试验了下,当输入大写字母时,总是要多循环一次好像。
x的值是给定的大写字母 在第二轮循环里 x的值没变,至于为什么会停下来 我也不太明白 不过还是改对了 改的也不算太好
程序代码:
#include <stdio.h>
void main()
{
    char x;
    while (1)
    {
        printf("请输入一个小写字母\n");
        {
                x=getchar();
                if (x>='a'&&x<='z')
            {
                printf("正确\n");
                break;
            }
                else  
                printf("错,重新输入\n");
        }
                x=getchar();
                continue;
    }
}
在第一轮判断完以后,重新输入x的值,再转入第二次的判断。不过感觉还是挺麻烦的 太不简洁
2010-11-07 01:59
sianeal
Rank: 2
等 级:论坛游民
帖 子:12
专家分:16
注 册:2010-10-24
收藏
得分:2 
提示一下,问题在你那个x=getchar()语句上。getchar()是把所有的从键盘上敲入的字符都算做你的输入,也就是说,当你敲入一个不是小写的字符,再敲一下回车,相当于输入了两个错误的字符,所以会出现貌似循环了两次的结果,但实际上,这个时候,循环的确被执行了两次。
改成scanf()就没事了。
2010-11-07 07:47
sianeal
Rank: 2
等 级:论坛游民
帖 子:12
专家分:16
注 册:2010-10-24
收藏
得分:0 
刚刚的最后一句说错了,不是该输入语句,而是应该在错误输入后加一条语句来接受回车。
else{
    printf("错,...");
    getchar();
}
2010-11-07 08:06
gaochizhen33
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:114
专家分:101
注 册:2010-11-4
收藏
得分:0 
回复 3楼 sianeal
如果输入的是小写字母 再敲一次回车 那是不是输入的也算是2个字符啊
2010-11-07 11:26
sianeal
Rank: 2
等 级:论坛游民
帖 子:12
专家分:16
注 册:2010-10-24
收藏
得分:0 
回复 5楼 gaochizhen33
输入正确的字符后 即使敲回车也将不被x接收,因为执行了break语句,跳出了循环,也就没有再次执行x=getchar()语句
如果是错误的字符 该字符给了本次循环里的getchar(),回车将被送入下次循环里的getchar()中,这样就会出现两次显示“输入错误”的情况了
2010-11-07 11:47
xq328220454
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:23
专家分:42
注 册:2008-8-22
收藏
得分:0 
回复 6楼 sianeal
也就是说getchar是将你在键盘上输入的所有都按顺序输入到程序里。。然后一个个的循环比较吧?
2010-11-07 19:56
xq328220454
Rank: 2
来 自:天津
等 级:论坛游民
帖 子:23
专家分:42
注 册:2008-8-22
收藏
得分:0 
回复 6楼 sianeal
也就是说getchar是将你在键盘上输入的所有都按顺序输入到程序里。。然后一个个的循环比较吧?
2010-11-07 20:03
delong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:57
专家分:126
注 册:2010-6-9
收藏
得分:2 
3楼正解应该是~
2010-11-08 07:45
delong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:57
专家分:126
注 册:2010-6-9
收藏
得分:0 
程序代码:
#include <stdio.h>
void main()
{
    char x;
    while (1)
    {
        printf("请输入一个小写字母\n");
        x=getchar();
        getchar();   //添加以下这个吸收回车键即可            
        if (x>='a'&&x<='z')
        {
            printf("正确\n");
            break;
        }
        else  
            printf("错,重新输入\n");
        continue;
    }
}
2010-11-08 07:52
快速回复:这个的结果为什么不对呢。。。
数据加载中...
 
   



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

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