zoukankan      html  css  js  c++  java
  • 简单的四则运算

    程序介绍:

    这个程序比较人性化,每做完一道题都可以进行选择,接下来是要做什么。

    程序刚开始进入的是选择页面,这个页面是选择要进行什么运算:

    =========目录==========
    1.加法运算
    2.减法运算
    3.乘法运算
    4.除法运算
    0.结束运算
    请输入你想进行运算的序号

    接下来要进行选择具体要进行什么运算,是整数的四则运算还是真分数的四则运算:

    ----选择目录----
    1.整数运算
    2.真分数运算
    请输入你的选择

    接下来就是进行具体的运算,每做一道题,就会进行存储,然后可以选择继续做题,还是结束做题:

    ----判断目录----
    1.继续运算
    0.结束运算
    请输入你的选择

    以上就是此程序的主要功能,还有不足之处,请多多指教,将在以后进行改进,有关多运算字符和有括号的运算将会在接下来的博客中改进。

    感想:

    这是老师留的第一个个人项目~四则运算,刚开始想的时候并没有想太多,感觉只是写几个函数,包括加减乘除就可以了,当开始动手编写程序时,问题就一个接着一个的来了,首先就是题要用什么保存,一开始想到了数组,但是一维数组并不能够包含一个四则运算的各项数值,二维数组也不太好,最后想到了结构体,里面可以保存四则运算的各个参数,而且还可以使用数组,组成结构体数组,这样就可以保存原先做过的题了,储存的问题解决了;接下来就是参数如何获取,而且还是要随机的获取,通过上网搜索,查到函数rand()可以获取一个随机值,rand()%m就是在0到m之间随机获取一个值;后来看到老师的博客,发现还要有真分数的四则运算,发现原先定义的结构体数组并不能够完成这项工作,就又建了一个结构体数组,这样就可以通过获取多个参数,来完成真分数的构建,然后再进行运算,写完代码后发现有很多重复引用的东西,就将这些代码单独定义成了一些函数,并在其他函数中进行引用;虽然写的并不是很完美,有一些地方自我感觉还是有缺陷的,但是感觉还是很开心的,通过这次的程序编写,发现程序并不是一步能够完成的,需要在编写过程中不断的改善,感觉自己原先知道的还是太少了,写的代码还是不够多的,不然有些地方不会无从下手,接下来的学习中要继续努力的学习,提高自己的水平。

    #include<stdio.h>
    int sum = 0;
    int sum1 =0;
    struct NUM
    {
    int first;
    int second;
    int result;
    }stu[400];
    struct NUM1
    {
    int first;//第一个数的分子
    int first1;//第一个数的分母
    int second;
    int second1;
    int result;
    int result1;
    }stu1[400];
    int add();//
    int add1();
    int dec();//
    int dec1();
    int mul();//
    int mul();
    int div();//
    int div();
    int num();//目录
    int decide();//显示判断目录
    void show();//显示题数
    void result(int a);//判断结果
    int choice();//显示选择结束还是继续做题
    void main()
    {
    int a = 1, c, m;
    
    while (a != 0)
    {
    m = num();
    switch (m)
    {
    case 1: {c = choice();
    if (c == 1)a = add();
    if (c == 2)a = add1(); }
    break;
    case 2: {c = choice();
    if (c == 1)a = dec();
    if (c == 2)a = dec1(); }
    break;
    case 3: {c = choice();
    if (c == 1)a = mul();
    if (c == 2)a = mul1(); }
    break;
    case 4: {c = choice();
    if (c == 1)a = div();
    if (c == 2)a = div1(); }
    break;
    default:
    printf("输入的数字有误");
    break;
    }
    }
    printf("-------谢谢使用--------\n");
    }
    int num()
    {
    int a;
    printf("=========目录==========\n");
    printf("1.加法运算\n");
    printf("2.减法运算\n");
    printf("3.乘法运算\n");
    printf("4.除法运算\n");
    printf("0.结束运算\n");
    printf("请输入你想进行运算的序号\n");
    scanf_s("%d", &a);
    return a;
    }
    int decide()//选择接下来做什么的目录
    {
    int a;
    printf("----判断目录----\n");
    printf("1.继续运算\n");
    printf("0.结束运算\n");
    printf("请输入你的选择");
    scanf_s("%d", &a);
    return a;
    }
    int choice()//选择具体算什么的目录
    {
    int a;
    printf("----选择目录----\n");
    printf("1.整数运算\n");
    printf("2.真分数运算\n");
    printf("请输入你的选择");
    scanf_s("%d", &a);
    return a;
    }
    void show()
    {
    printf("现在是第%d题\n", sum + sum1);
    }
    void result(int a)
    {
    int b;
    printf("请输入正确答案:\n");
    scanf_s("%d", &b);
    if (b == stu[a].result)
    printf("答案正确是:%d\n", stu[a].result);
    else
    printf("答案错误,正确答案是:%d\n", stu[a].result);
    }
    void result1(int a)
    {
    int c, b;
    printf("请输入正确答案的分子:\n");
    scanf_s("%d", &b);
    printf("请输入正确答案的分母:\n");
    scanf_s("%d", &c);
    if (b == stu1[a].result || c == stu1[a].result1)
    printf("答案正确是:%d/%d\n", stu1[a].result, stu1[a].result1);
    else
    printf("答案错误,正确答案是:%d/%d\n", stu1[a].result1, stu1[a].result);
    }
    int add()
    {
    int a, b;
    sum = sum + 1;
    show();
    stu[sum].first = rand() % 10;
    stu[sum].second = rand() % 10;
    stu[sum].result = stu[sum].first + stu[sum].second;
    printf("%d + %d =\n", stu[sum].first, stu[sum].second);
    result(sum);
    a = decide();
    return a;
    }
    int dec()
    {
    int a, b;
    sum = sum + 1;
    show();
    stu[sum].first = rand() % 10+10;
    stu[sum].second = rand() % 10;
    stu[sum].result = stu[sum].first - stu[sum].second;
    printf("%d - %d =\n", stu[sum].first, stu[sum].second);
    result(sum);
    a = decide();
    return a;
    }
    int mul()
    {
    int a, b;
    sum = sum + 1;
    show();
    stu[sum].first = rand() % 10;
    stu[sum].second = rand() % 10;
    stu[sum].result = stu[sum].first * stu[sum].second;
    printf("%d * %d =", stu[sum].first, stu[sum].second);
    result(sum);
    a = decide();
    return a;
    }
    int div()
    {
    int a, b, m, n;
    sum = sum + 1;
    show();
    stu[sum].first = rand() % 10;
    stu[sum].second = rand() % 10;
    stu[sum].result = stu[sum].first / stu[sum].second;
    printf("%d / %d =", stu[sum].first, stu[sum].second);
    result(sum);
    a = decide();
    return a;
    }
    int add1() //接下来是真分数的运算
    {
    int a;
    int m, n, p, q;
    sum1 = sum1 + 1;
    show();
    m = rand() % 10 + 1;
    n = rand() % 5 + m;
    p = rand() % 10 + 1;
    q = rand() % 10 + p;
    stu1[sum1].result = m*q + n*p;
    stu1[sum1].result1 = n*q;
    printf("%d/%d+ %d/%d =\n", m, n, p, q);
    result1(sum1);
    a = decide();
    return a;
    }
    int dec1()
    {
    int a;
    int m, n, p, q;
    sum1 = sum1 + 1;
    show();
    m = rand() % 10 + 1;
    n = rand() % 5 + m;
    p = rand() % 10 + 1;
    q = rand() % 10 + p + n;
    stu1[sum1].result = m*q - n*p;
    stu1[sum1].result1 = n*q;
    printf("%d/%d - %d/%d =\n", m, n, p, q);
    result1(sum1);
    a = decide();
    return a;
    }
    int mul1()
    {
    int a;
    int m, n, p, q;
    sum1 = sum1 + 1;
    show();
    m = rand() % 10 + 1;
    n = rand() % 5 + m;
    p = rand() % 10 + 1;
    q = rand() % 10 + p;
    stu1[sum1].result = m*p;
    stu1[sum1].result1 = n*q;
    printf("%d/%d+ %d/%d =\n", m, n, p, q);
    result1(sum1);
    a = decide();
    return a;
    }
    int div1()
    {
    int a;
    int m, n, p, q;
    sum1 = sum1 + 1;
    show();
    m = rand() % 10 + 1;
    n = rand() % 5 + m;
    p = rand() % 10 + 1;
    q = rand() % 10 + p;
    stu1[sum1].result = m*q;
    stu1[sum1].result1 = n*p;
    printf("%d/%d+ %d/%d =\n", m, n, p, q);
    result1(sum1);
    a = decide();
    return a;
    }
  • 相关阅读:
    ubuntu之路——day8.4 Adam自适应矩估计算法
    ubuntu之路——day8.3 RMSprop
    ubuntu之路——day8.2 深度学习优化算法之指数加权平均与偏差修正,以及基于指数加权移动平均法的动量梯度下降法
    ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法
    ubuntu之路——day7.4 梯度爆炸和梯度消失、初始化权重、梯度的数值逼近和梯度检验
    redis作为mysql的缓存服务器(读写分离)
    阿里云服务器上配置并使用: PHP + Redis + Mysql 从配置到使用
    小程序开发测试教程
    使用PHP并发执行任务–curl_multi应用
    PHP返回变量或数组的字符串表示:var_export()
  • 原文地址:https://www.cnblogs.com/shenpfei/p/5268387.html
Copyright © 2011-2022 走看看