| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6827 人关注过本帖
标题:if-else语句为什么会同时执行
只看楼主 加入收藏
勿乱
Rank: 2
等 级:论坛游民
帖 子:21
专家分:58
注 册:2017-2-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
if-else语句为什么会同时执行
一个简单的题目:从键盘输入6位仅由数字0~9组成的密码。用户每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示"error",并让用户继续输入下一位密码。直到用户输入的密码全部是数字为止。为什么用这个程序做这道题if和else语句会同时执行?

#include<stdio.h>
int main()
{
    char a;
    int counter=0;
    printf("Please input a:\n");
    do
    {
        scanf("%c",&a);
        if(a>='0'&&a<='9')
        {
            counter++;
            printf("%c,you have inputed %d bits number\n",a,counter);

        }
        else
        {
            printf("error!\n");
        }
    }while(counter<=6);
    return 0;
}
 下面是运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: counter include 键盘 
2017-02-25 14:10
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:10 
这主要是scanf的问题,scanf格式为单个字符时会残留一个换行符在缓冲区里,而换行符又不是scanf的控制符(残留的回车符可在下次进入scanf吃掉),这样你如果输入一个字符‘4’时实际上会读入一个字符‘4’和一个换行符LF(ASCII码为10),所以‘4’会执行if,而LF则执行else,修改方法有两个,代码分别如下:
方法一:
程序代码:
#include<stdio.h>
int main()
{
    char a;
    int counter=0;
    printf("Please input a:\n");
    do
    {
        scanf(" %c",&a);   //在%c前加一个空格可吃掉换行符
        if(a>='0'&&a<='9')
        {
            counter++;
            printf("%c,you have inputed %d bits number\n",a,counter);

        }
        else
        {
            printf("error!\n");
        }
    }while(counter<=6);
    return 0;
}

方法二:
程序代码:
#include<stdio.h>
int main()
{
    char a;
    int counter=0;
    printf("Please input a:\n");
    do
    {
        scanf("%c",&a);
        if(a>='0'&&a<='9')
        {
            counter++;
            printf("%c,you have inputed %d bits number\n",a,counter);

        }
        else
        {
            if(a!=10)printf("error!\n");  //判断不是换行符则输出
        }
    }while(counter<=6);
    return 0;
}
2017-02-25 14:30
勿乱
Rank: 2
等 级:论坛游民
帖 子:21
专家分:58
注 册:2017-2-7
收藏
得分:0 
回复 2楼 xzlxzlxzl
谢谢大神,懂了
2017-02-25 14:45
快速回复:if-else语句为什么会同时执行
数据加载中...
 
   



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

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