| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 452 人关注过本帖
标题:一个空格闹的???求解释。
只看楼主 加入收藏
李轩主
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-9-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
一个空格闹的???求解释。
我是新手,在做一道练习题,做个小计算器程序。要求用到goto实现循环。下面是我的程序:#include<stdio.h>

int main(void)
{
    double Number1 = 0.0;
    double Number2 = 0.0;
    char Operation = 0;
    char Answer = 0;
start:
    printf("\n请输入运算式:\n\t");
    scanf("%lf %c %lf",&Number1,&Operation,&Number2);
    /*********检测数据的可靠性并输出计算结果********/
     switch(Operation)
     {
             case '+':
                 printf("\t= %lf\n",Number1 + Number2);
                 break;
                 
             case '-':
                 printf("\t= %lf\n",Number1 - Number2);
                 break;
                 
             case '*':
                 printf("\t= %lf\n",Number1 * Number2);
                 break;
                 
             case '/':
                 if (Number2 == 0)
                 printf("\a\nERROR!除数不能为0!!\n");
                 else
                 printf("\t= %lf\n",Number1 / Number2);
                 break;
                 
             case '%':
                 if ((long)Number2 == 0)
                 printf("\a\nERROR!除数不能为0!!\n");
                 else
                 printf("\t= %ld\n",(long)Number1 % (long)Number2);
                 break;
                 
             default :
                 printf("\a\nERROR!错误的运算符号\n");
                 break;
     }
choose:
       printf("\n继续计算?Y/N\n");
       scanf(" %c",&Answer);                       /**********求解释********就是这行里的%前的那个空格*******去掉就不能循环了*****/
       switch(Answer)
       {
                     case 'Y':case 'y':
                          goto start;
                          break;
                          
                     case 'N':case 'n':
                          printf("\n谢谢使用,再见!\n");
                          break;
                          
                     default:
                             printf("\n输入错误,请重新选择。(Y/N)\n");
                             goto choose;
                             break;
       }
   
 return 0;   
}

搜索更多相关主题的帖子: 可靠性 练习题 include double 
2012-09-05 17:40
ldzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:64
专家分:339
注 册:2012-7-30
收藏
得分:20 
scanf(" %c",&Answer);空格的意义是跳过输入的空字符(空格,换行。。)至第一个非空字符。当用键盘输入的时候,会按ENTER产生换行符,可能是为了滤除这些空字符吧。
2012-09-05 18:21
李轩主
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-9-5
收藏
得分:0 
回复 2楼 ldzy
啊哈哈,就是的!因为前面输入运算式子的时候结尾用的是回车。呵呵,多谢你了!
2012-09-06 09:23
ldzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:64
专家分:339
注 册:2012-7-30
收藏
得分:0 
共同进步吧。scanf(" %c",&Answer); ,scanf("%c ",&Answer);以及scanf("%1c",&Answer);之类的知道就好办了。不然,有时代码的功能实现就会和预料的有些差异,让人纠结。
2012-09-06 09:37
快速回复:一个空格闹的???求解释。
数据加载中...
 
   



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

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