| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1733 人关注过本帖
标题:请教一下关于计算器的编写
只看楼主 加入收藏
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:44 
请教一下关于计算器的编写
程序代码:
#include<stdio.h>

int main(void)
{
    float number1,number2,S=0;
    char opor, E;
    
    printf("Begin Calculation.\n");
    scanf("%f %c",&S,&opor);
    
    do{
        switch (opor)
        {
        case '+':
            printf("=%f %c",S, opor);
            break;
        case '-':
            printf("=%f %c",S, opor);
            break;
        case '*':
            printf("=%f %c",S, opor);
            break;
        case '/':
            if (S == 0)
              printf("Division by zero.\n");
            else
            printf("=%f %c",S, opor);
            break;
        default:
            printf("Unknow operator");        
        break;}        
    }while(opor == E);
    
    return 0;
}


转不动啊。。本人新手一枚,请各位帮忙看看哪里逻辑出问题了。
搜索更多相关主题的帖子: 计算器 
2015-02-01 16:33
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
题目是这样的。我才学到switch语句。 string 是什么表示看不懂,现在在做章节练习。


编写简单的计算器。该程序允许用户输入如下的格式算式:

数字 操作符

其中操作符 可以是下面的任意一个:

+ - * / S E
   操作符S将计算器中的“记忆数字”设置为输入的数值。操作符E告诉程序节结束执行。如果输入的是算术操作符,那么就把计算器中的“记忆数字”作为第一个操作数,用户输入的数字作为第二个操作数,计算结果作为“记忆数字”重新保存起来。下面是我们的计算器运行的一个示意过程:
Begin calculations
10 s         设置记忆数字为10
= 10.000000   显示记忆数字
2/            除以2
=5.000000     减去55
55-
-50.000000

100.25s       设置记忆数字为100.25
= 100.250000   
4 *            Multiply(乘以4)
= 401.000000   
0 E            结束运行
= 401.000000
End of calculations.
在程序中要求检查除数为 0 和未知的操作符这两种意外情况。
2015-02-01 16:36
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
另外,我这算是毫不思索的求作业行为么? 犹豫了老半天要不要发=。=
2015-02-01 16:38
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:10 
根据题意,E不是变量,而是给opor输入的值,while判断是为true时循环,所以你的opor==E判断由于E没有给任何值,opor很难和它相等,就循环不了了。根据你的题意,我帮你做了个,免得你失去学习的兴趣。用q退出,不要用e,因为e可能作为浮点数的指数符号。

#include<stdio.h>
int main()
{
    float m=0,o;//m为记忆的被操作数,o为操作数
    char opor;//opor为操作符
    do
    {
        printf("请输入:");
        scanf("%f %c",&o,&opor);
        if(opor==0)scanf("%c\n",&opor);//消除错误操作
        switch (opor)
        {
        case '+':
                printf("%f+%f=%f\n",m,o,m+o);
                break;
        case '-':
                printf("%f-%f=%f\n",m,o,m-o);
                break;
        case '*':
                printf("%f*%f=%f\n",m,o,m*o);
                break;
        case '/':
                printf("%f/%f=%f\n",m,o,m/o);
                break;
        case 's':
                m=o;
                break;
        case 'q':
                break;
        default:
            printf("Unknow operator\n");
            break;
        }
        if(opor!='q')opor=0;
    }while(opor!='q');
    return 0;
}

能编个毛线衣吗?
2015-02-01 18:32
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
回复 4楼 wmf2014
sigoyi!!!
谢谢哈,我好好研究研究。
不过就算没人帮我解决我还是会继续看后面的内容,等学多一点再回来看看能不能解决~ 学习兴趣这东西怎么能说失去就失去呢。
2015-02-01 18:49
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
回复 4楼 wmf2014
图片附件: 游客没有浏览图片的权限,请 登录注册

我运行了一下发现你写那个程序里面好像没有保存记忆数吧?
每次的运行与上一次的没有接续啊。
2015-02-01 18:57
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
5s:记住被操作数5
5+:操作数5,对被操作数和操作数相加,5+5=10
5q:退出循环,程序退出。
图片附件: 游客没有浏览图片的权限,请 登录注册

能编个毛线衣吗?
2015-02-01 21:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
題目是不錯的,也不要以爲上面的代碼可以交上去了,還有很多問題呢。

順便回答2樓的一個問題:string就是字符串,你是學英文,怎麽會不知道。

授人以渔,不授人以鱼。
2015-02-01 21:47
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
回复 8楼 TonyDeng
我是不知道这个代表了什么=。=不是不知道什么意思。。
2015-02-01 21:57
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
回复 7楼 wmf2014
原来是这样。
2015-02-01 21:59
快速回复:请教一下关于计算器的编写
数据加载中...
 
   



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

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