当前位置 博文首页 > Jason's Blog:练习11—计算器实现

    Jason's Blog:练习11—计算器实现

    作者:[db:作者] 时间:2021-08-29 19:23

    题目

    解题步骤

    (1)分别定义不同功能变量;
    (2)输出主页面;
    (3)分功能实现;
    (4)使用系统函数;
    (5)分类输出计算结果;

    C语言

    #include <stdio.h>
    #include <stdlib.h> 
    
    void displayMenu()
    {
        system("cls");
        printf("       欢迎进入计算器\n ");
        printf("***************************\n ");
        printf("*          1.加法         *\n ");
        printf("*          2.减法         *\n ");
        printf("*          3.乘法         *\n ");
        printf("*          4.除法         *\n ");
        printf("*          5.求余         *\n ");
        printf("*          6.阶乘         *\n ");
        printf("*          7.累加         *\n ");
        printf("*          8.结束         *\n ");
        printf("***************************\n ");
        printf("请输入计算类型编号:");
    }
    
    int function(int e)
    {
        if (e == 1 || e == 0)
            return 1;
        else
            return e * function(e - 1);
    }
    
    int main()
    {
        char user, y;
        int input, a = 0, b = 0;
        printf("是否进入计算器,y/n(是/否):");
        scanf("%c", &user);
        if (user == 'y')
            displayMenu();
        else if (user == 'n') 
            exit(0);         
        else
        {
            printf("输入有误,请重新输入");
            exit(0);
        }
        scanf("%d", &input); //接收计算类型参数
        system("cls");
    
        switch (input)
        {
        case 1:
        {
            printf("请输入数据:");
            scanf("%d%d", &a, &b);
            printf("%d+%d=%d\n", a, b, a + b);
            break;
        }
    
        case 2:
        {
            printf("请输入数据:");
            scanf("%d%d", &a, &b);
            printf("%d-%d=%d\n", a, b, a - b);
            break;
        }
        case 3:
        {
            printf("请输入数据:");
            scanf("%d%d", &a, &b);
            printf("%d*%d=%d\n", a, b, a * b);
            break;
        }
        case 4:
        {
            printf("请输入数据:");
            scanf("%d%d", &a, &b);
            printf("%d/%d=%d\n", a, b, a / b);
            break;
        }
        case 5:
        {
            printf("请输入数据:");
            scanf("%d%d", &a, &b);
            printf("%d mold %d=%d\n", a, b, a % b);
            break;
        }
        case 6:
        {
            int e = 0;
            printf("请输入数据:");
            scanf("%d", &e);
            printf("%d!=%d\n", e, function(e));
            break;
        }
        case 7:
        {
            int result = 0;
            for (int i = 0; i < 1000; i++)
            {
                char input1;
                printf("退出请按任意键,计算请按M键:"); 
                scanf("%s", &input1);
                if (input1 == 'M' || input1 == 'm')
                {
                    int c, d;
                    printf("请输入数据:");
                    scanf("%d%d", &c, &d);
                    printf("result=%d\n", result += (c + d)); 
                }
                else
                    exit(0);
            }
            break;
        }
        case 8:
        {
            printf("谢谢使用,再见!");
            exit(0);
            break;
        }
    
        default:
            printf("error,please try again!!!");
        }
        system("pause");
        return 0;
    }
    

    实现图

    在这里插入图片描述

    说明

    1. 完整包含所使用函数的头文件;
    2. “阶乘” 功能使用递归思想解决,找到计算过程中的递归体 e * function(e - 1),并注意特殊位置的处理,如 0 和 1;
    3. 定义char类型变量时,若参与比较,本质是比较其 ASCII码 值大小,使用==符号判断是否相等时需要加单引号‘’
    4. “累加“ 功能实现中,第一次及第二次接收数据合并处理,都放入循环。否则输出结果和实际运算结果存在偏差,且差值为第一次数据计算结果,此处使用result += (c + d)保留上次计算结果。

    不知道机智的你有没有发现,如果按照题目的要求,我们只需要输出界面,很easy。额,后知后觉,写完才发现,权当练手啦!

    cs
    下一篇:没有了