查看: 5668|回复: 6

请问这是怎么回事?

[复制链接]
  • TA的每日心情
    慵懒
    2017-2-8 17:45
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-3-15 15:25:54 | 显示全部楼层 |阅读模式
    这是我编写计算器,输入数字以外的东西就会刷屏,比如说k
    请问如何解决
    这是C语言源代码
    #include <stdio.h>
    int main ()
    {
            printf("请根据需要按数字选择1-5: \n加法:1\n减法:2\n乘法:3\n除法:4\n退出:0\n\n") ;
            int a=0,b,c,d;
            scanf ("%d",&a);
            while(a>5)
            {printf ("请输入正确的数字1-5:");
            scanf("%d",&a);
            }
            while(a<5)
            {
        printf("请输入两个整数:");
                scanf ("%d %d",&b,&c);
            switch(a)
            {
                    case 1:
                    printf("%d+%d=%d\n",b,c,b+c);
                    break;
           
                    case 2:
                    printf("%d-%d=%d\n",b,c,b-c);
                    break;
           
                    case 3:
                    printf("%d*%d=%d\n",b,c,b*c);
                    break;
           
                    case 4:
                    printf("%d÷%d=%d\n",b,c,b/c);
                    break;
                    }
             
            }   
             
    return 0;

    }
    搜狗截图20150315152217.png
    搜狗截图20150315152113.png
    回复

    使用道具 举报

  • TA的每日心情

    2015-6-7 09:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-3-15 18:04:45 | 显示全部楼层
    while(a<5) 改为if
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-6-7 09:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-3-15 18:05:58 | 显示全部楼层
    因为k的ascII码肯定大于5了,记得'a'就是65了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-6-7 09:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-3-15 18:10:59 | 显示全部楼层
    突然发现你外面还有一个
    scanf ("%d",&a);
            while(a>5)
    把这段也改了.






    总的来说是这样的流程:

    输入k后,k>5,所以这个while开始运行
        scanf ("%d %d",&b,&c);

    while (a<5) :
        if a>5:
           continue
        else:
           (a>5)
          
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-6-7 09:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-3-15 18:11:29 | 显示全部楼层
    本帖最后由 pyt_here 于 2015-3-15 18:13 编辑

    结论:
    应该是:

    while (a<5) :
        if a>5:
           continue
        else:
           scanf ...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-8-19 10:32
  • 签到天数: 80 天

    [LV.6]常住居民II

    发表于 2015-3-15 22:22:10 | 显示全部楼层
    这位同学,我觉得你应该注意一下缩进,虽然C语言没有说一定要缩进,但是我不知道这样的代码你想看第二遍吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2019-12-3 10:56:53 | 显示全部楼层
    a的ascII码是97,已经大于5了,还有你的while循环,你输一个和你下面条件没关系的字符,当然会这样啊
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-5-5 01:57 , Processed in 0.030798 second(s), 14 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部