| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1733 人关注过本帖
标题:请教一下关于计算器的编写
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
還有大小寫的問題呢?s和e,聰明的程序,是可以接受大寫和小寫的,而你們的判斷,衹有小寫。

授人以渔,不授人以鱼。
2015-02-01 22:55
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
回复 30楼 TonyDeng
单个数一般不会加个空格在前面吧。不过你那个输出检查代码书写对错倒是很有用。
2015-02-01 22:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
人家給的例子是在數字後面緊接字母,不是在前面。緊接和不緊接,這對scanf()來説,是致命的,所以你看到的代碼,用到string分析,道理就在這裏。

授人以渔,不授人以鱼。
2015-02-01 22:58
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
回复 31楼 TonyDeng
这我倒还没考虑到程序的完整性(聪明性),先弄懂那道题的大体代码书写思路先。
2015-02-01 22:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用Aliali在2015-2-1 22:58:46的发言:

这我倒还没考虑到程序的完整性(聪明性),先弄懂那道题的大体代码书写思路先。

把字母統一轉換成大寫或小寫再判斷,并不是難事,在前面的習題中也做過相關練習。

授人以渔,不授人以鱼。
2015-02-01 23:00
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
回复 33楼 TonyDeng
前面那个程序是数字后面接操作符啊。何为string分析? 我以后会多注意scanf()里的空格问题。
2015-02-01 23:02
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
以下是引用TonyDeng在2015-2-1 23:00:13的发言:


把字母統一轉換成大寫或小寫再判斷,并不是難事,在前面的習題中也做過相關練習。


让我走走先懂思路再细化操作这个过程。你怎么知道我做过相关练习~
2015-02-01 23:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你先試過各種輸入形式對讀數的影響再説吧。

授人以渔,不授人以鱼。
2015-02-01 23:07
Aliali
Rank: 2
等 级:论坛游民
威 望:1
帖 子:40
专家分:36
注 册:2015-1-31
收藏
得分:0 
回复 38楼 TonyDeng
嗯嗯,谢啦。
2015-02-01 23:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
/*
编写简单的计算器。该程序允许用户输入如下的格式算式:

数字 操作符

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

+ - * / 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 和未知的操作符这两种意外情况。
*/

#include <stdio.h>
#include <stdlib.h>

double Memory = 0.0;            // 寄存器

// 函數原型
void Show_Memory(void);

// 主程序入口函數
int main(void)
{
    double value;                // 操作數
    char   operate;                // 操作符

    printf_s("\nBegin calculations\n");                            // 非vc編譯器改用printf()
    do
    {
        fflush(stdin);                                          // 清空標準輸入流數據以備接收輸入,非標準函數,沒有有效的替代方法!
        if (scanf_s("%lf %c", &value, &operate, 1) != 2)        // 非vc編譯器改用scanf()
        {
            /* 注意scanf()的用法,格式控制符%lf和%c之間有空格,表示輸入應用空格分開。實際上不分開
               也可以,但由於題目要求用到e作操作符,與C的科學記數法衝突,則與前面的數字連在一起會
               造成輸入錯誤。*/
            printf_s("value = %f, operate = %c\n", value, operate);
            printf_s("ERROR\n");
            continue;
        }
        switch (operate)
        {
        case 's':
        case 'S':
        case 'e':
        case 'E':
            break;
        case '+':
            value = Memory + value;
            break;
        case '-':
            value = Memory - value;
            break;
        case '*':
            value = Memory * value;
            break;
        case '/':
            value = Memory / value;
            break;
        default:
            printf_s("ERROR\n");
            continue;
            break;
        }
        if ((operate != 'e') && (operate != 'E'))
        {
            Memory = value;
        }
        Show_Memory();
    } while ((operate != 'e') && (operate != 'E'));
    printf_s("\nEnd of calculations.\n");

    printf_s("\nPress any key to continue...");
    fflush(stdin);
    getchar();

    return EXIT_SUCCESS;
}

// 顯示寄存器内容
void Show_Memory(void)
{
    printf_s("= %f\n", Memory);
}


授人以渔,不授人以鱼。
2015-02-02 13:19
快速回复:请教一下关于计算器的编写
数据加载中...
 
   



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

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