• 程序输出小学四则运算表达式,支持真分数四则运算


    程序设计思路:

    1.运算式的输出格式可以为 数字 运算符 数字,也可以为 数字 运算符 数字 运算符 数字,还可以是更复杂的式子,在此只实现了2-3个数字的运算式。

    2.将式子分为两类,第一类为20个,第二类为10个,分别用FOR循环控制输出。

    3.第一类式子稍简单,只需通过随机函数将两个数字赋值,中间运算符通过数组下标的随机赋值实现随机性,再通过格式输出即可

    4.此时还要考虑运算符为 ‘/’,并且除数为0的情况,这时用if语句设置条件排除即可

    5.计算第一类式子结果可以参考计算器的功能代码,用switch语句实现判断运算并存储结果。

    6.第二类式子参考第一类式子的输出方式,结果需要考虑 运算符优先级,运算计算顺序,因时间关系,计算结果暂未实现,以后再添加。

    附上代码:

     1 //练习一,要求实现输出小学四则运算表达式,能支持一个真分数的四则运算
     2 //赵承圣 2016.3.5
     3 #include<iostream>
     4 #include<ctime>
     5 using namespace std;
     6 
     7 void exchange(int &a, int &b)          //定义一个交换函数
     8 {
     9     int temp = a;
    10     a = b;
    11     b = temp;
    12 }
    13 
    14 void main()
    15 {
    16     srand((int)time(NULL));            //每次执行种子不同,生成不同的随机数
    17     int num1, num2,num3,snum,snum1;    //定义变量通过随机函数来获得随机数字num1,num2,num3和随机符号snum,snum1
    18     double result;                     //用result保存计算结果
    19     char symbol[4];                    //随机计算符号数组
    20     symbol[0] = '+';
    21     symbol[1] = '-';
    22     symbol[2] = '*';
    23     symbol[3] = '/';
    24     for (int sexp=0; sexp < 20;sexp++) //控制简单表达式的个数为20个
    25     {
    26         num1 = rand() % 100;
    27         num2 = rand() % 100;
    28         snum = rand() % 4;
    29         if (num2 == 0 && snum == 3)    //除数为0的结果排除
    30             break;
    31         switch (snum)
    32         {
    33         case 0:result = num1 + num2; break;
    34         case 1:result = num1 - num2; break;
    35         case 2:result = num1 * num2; break;
    36         case 3:double dnum1 = (int)num1; double dnum2 = (int)num2; result = dnum1 / dnum2; break;  //将除的结果显示为double型
    37         }
    38         cout << num1 << symbol[snum] << num2 << "="<<result<<endl;
    39     }
    40     for (int fexp = 0; fexp < 10; fexp++)   //控制表达式的个数为10个
    41     {
    42         num1 = rand() % 100;
    43         num2 = rand() % 100;
    44         num3 = rand() % 100;
    45         snum = rand() % 4;
    46         snum1 = rand() % 4;
    47         if ((num2 == 0 && snum == 3)||(num3==0&&snum1==3))      //除数为0的结果排除
    48             continue;
    49         if (snum == 3 && num1 > num2)     //如为假分数,则分子分母交换,调用exchange函数
    50             exchange(num1,num2);
    51         if (snum1 == 3 && num2 > num3)
    52             exchange(num2, num3);
    53         cout << num1 << symbol[snum] << num2 <<symbol[snum1]<<num3<< "="<< endl;
    54     }
    55     system("pause");
    56 }
  • 相关阅读:
    google PR值突然调整,貌似出什么问题了
    【转自译言】在线劝说:7种说服人们网络购买的方法
    马化腾关于产品设计与用户体验的培训
    北京站售票人员倒票视频
    大型网站架构不得不考虑的10个问题
    在谈电子商务名词解释
    GridView
    CheckBoxList
    ShoppingCart
    MongoDB数据库简介及安装
  • 原文地址:https://www.cnblogs.com/zzcs/p/5247624.html
Copyright © 2020-2023  润新知