程序设计思路:

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 }

 

 posted on 2016-03-06 15:40  呼噜~呼噜  阅读(649)  评论(3编辑  收藏  举报