标题:说不出的问题!!!
只看楼主
小青龙
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-8-2
结帖率:80%
已结贴  问题点数:20 回复次数:17 
说不出的问题!!!
以下是我自己写的一个简单的小小计算器,只能计算简单加减乘除,我预想中出现的结果应该是:
choose +, -, *, /:+
First number:     6
Second number:    3
Answer:   6 + 3 = 9

choose +, -, *, /:

为什么实际上运行时,出现的结果却是:
choose +, -, *, /:+
First number:     6
Second number:    3
Answer:   6 + 3 = 9

choose +, -, *, /:
Error:Only +, -, *, / are available.Try again!   (注明:为什么就多了这一行呢?这不是我想要的结果啊!原因何在?我总感觉是,当我输入第二个数字3的时候,按下回车键后,回车键的输入值被运用到了  printf("Choose +, -, *, or /:\t");  
                                    scanf("%c", &operator);
                                                                      这两个个语句上,求高人给指点指点!)

以下是我自己写的一个雏形代码,估计有点难看!初学者,还望不要见笑:

#include<stdio.h>

int main ( void )
{
    long a, b;
    char operator;
    long answer;  
   
    while (1)
    {
          printf("Choose +, -, *, or /:\t");
          scanf("%c", &operator);      
         
          switch (operator)
          {              
                       
                 case '+':     
                      {
                          printf("First number:\t\t");
                          scanf("%ld", &a);
                          printf("Second number:\t\t");
                          scanf("%ld", &b);
                          printf("Answer:\t\t%ld %c %ld = %ld\n\n\n", a, operator, b, a+b);
                          break;
                      }  
                 case '-':
                      {
                          printf("First number:\t\t");
                          scanf("%ld", &a);
                          printf("Second number:\t\t");
                          scanf("%ld", &b);
                          printf("Answer:\t%ld %c %ld = %ld\n\n\n", a, operator, b, a-b);
                          break;
                      }
                 case '*':  
                      {
                          printf("First number:\t\t");
                          scanf("%ld", &a);
                          printf("Second number:\t\t");
                          scanf("%ld", &b);
                          printf("Answer:\t%ld %c %ld = %ld\n\n\n", a, operator, b, a*b);
                          break;
                      }
                 case '/':
                      {
                          printf("First number:\t\t");
                          scanf("%ld", &a);
                          printf("Second number:\t\t");
                          scanf("%ld", &b);
                          printf("Answer:\t%ld %c %ld = %ld\n\n\n", a, operator, b, a/b);
                          break;
                      }                                         
                 default:
                         {
                             printf("\nError: Only +, -, *, / are available. Try again!\n\n\n");
                         }
                        
                           
          } /*End of switch */
                     
    }  /* End of while */
}
搜索更多相关主题的帖子: 计算器 number 
2013-08-02 05:35
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:10 
话说 增加一个getchar 用来吸收你多敲的 回车 键
程序代码:
    } /*End of switch */
          getchar();
                    
    }  /* End of while */
} 

另外 你的是啥编译器啊

 char operator ;  这句在vs2010里不可编译
收到的鲜花
  • 小青龙2013-08-02 13:29 送鲜花  3朵   附言:我很赞同

DO IT YOURSELF !
2013-08-02 08:09
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
回复 2楼 wp231957
高端啊
VS2010
我还是08咧

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-02 08:16
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用peach5460在2013-8-2 08:16:02的发言:

高端啊
VS2010
我还是08咧
   哎呀  不知道08啥样啊  2010实在是消耗资源啊  太庞大了

DO IT YOURSELF !
2013-08-02 08:18
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
得分:10 
加个清空键盘缓冲区的函数试试,感觉这是比较常见的解决办法

fflush(stdin);

把它加到合适位置(接收想要的键盘输入字符之前)就可以了

收到的鲜花
  • 小青龙2013-08-02 13:29 送鲜花  3朵   附言:我很赞同

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-02 08:51
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
得分:0 
回复 4楼 wp231957
让我这个手一抖,

在C盘里装了VS2012的情何以堪呐~


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-08-02 08:52
谢跃锋
Rank: 2
等 级:论坛游民
威 望:2
帖 子:50
专家分:77
注 册:2013-4-14
得分:0 
放到vc++中一大堆错误啊!类型不明确
。。
2013-08-02 11:20
小青龙
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-8-2
得分:0 
回复 2楼 wp231957
我目前用的是DEV-C + +,因为之前对c几乎不了解,就随便用了个。
2013-08-02 12:58
小青龙
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-8-2
得分:0 
回复 5楼 蚕头燕尾
谢谢解答!像我这样的初学者,还是自学者,每走一步,估计都是荆棘满路。
2013-08-02 13:02
小青龙
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-8-2
得分:0 
回复 2楼 wp231957
另外有一疑问:初学者,用什么编译器好?用高端的好?还是……?
2013-08-02 13:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-418448-1-1.html




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

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