怎么能忘了!!!

导航

第一次课上作业——编写程序,输出30道四则运算题

一、设计思路

1、首先完成一个四则运算的出题程序,其次运用循环的方式完成30道题
2、首先使用随机函数生成四则运算中的第一个数的随机数,随机数要求是整数和真分数,其他的数不支持

     2.1、首先生成一个随机数,取值为1或2,以此来确定四则运算中第一个随机数应该是整数还是真分数。若随机数为1则为整数,若随机数为2则为真分数。。

     2.2、若为四则运算中的数为真分数,则随机生成两个数,作为分子和分母,并使得分母大于分子。


3、使用随机函数生成四则运算中的第二个数的随机数,此随机数的要求以及操作同第二步

4、运用一定的方法完成运算符的选择:使用四个数字来代表不同的运算符,生成一个随机数,然后用这个随机数整除4取余数,通过case语句选择不同的运算符进行运算,并将四则运算中的所有元素(被加数、运算符、加数)组合起来构成四则运算并打印输出。

二、源代码展示

  1 #include<iostream>
  2 #include<stdlib.h>            //调用随机函数void rand(void)时需要调用此库
  3 #include<time.h>              //调用随机函数void time()时需调用此库
  4 #define MIN 1
  5 #define MAX 99
  6 using namespace std;
  7 
  8 int main()
  9 {
 10  srand((int)time(0));
 11  int num1=1, num2=1;               //存储生成的随机变量
 12  int num1_1, num1_2;
 13  int num2_1, num2_2;
 14  int i = 0;                    //设置循环
 15  for (i = 0; i < 30; i++)
 16  {
 17   int true_false_num;      //生成随机数,用来判断是真分数还是假分数
 18   true_false_num = 1 + rand() % (2);       //为1则为整数,为2则为真分数
 19   if (1 == true_false_num)        //判断第一个数是什么类型的数
 20   {
 21    num1 = MIN + rand() % (MAX + 1);
 22   }
 23   else
 24   {
 25    
 26    num1_1 = MIN + rand() % (MAX-1);    //若为真分数,则分子必须小于99,所以应该%(MAX-1)
 27    num1_2 = num1_1 + rand() % (MAX - num1_1) + 1;        //此处应当注意分母不能为0,注意(MAX-num1_1)不能为0
 28    num1 = 0;
 29   }
 30   
 31   true_false_num = 1 + rand() % (2);
 32   if (1 == true_false_num)        //判断第一个数是什么类型的数
 33   {
 34    num2 = MIN + rand() % (MAX);
 35   }
 36   else
 37   {
 38    num2_1 = MIN + rand() % (MAX-1);
 39    num2_2 = num2_1 + rand() % (MAX - num2_1) + 1;
 40    num2 = 0;
 41   }
 42 
 43   int sign;        //设置四则运算符号的代号
 44   sign = 1 + rand() % (4);      //1,2,3,4分别代表不同的四则运算符号
 45 
 46   switch (sign)
 47   {
 48   case 1:
 49   {
 50       if (0 == num1)
 51        cout << "(" << num1_1 << "/" << num1_2 << ")";
 52       else
 53        cout << num1;
 54       cout << "+";
 55       if (0 == num2)
 56        cout << "(" << num2_1 << "/" << num2_2 << ")";
 57       else
 58        cout << num2;
 59       cout << "=" << endl;
 60       break;
 61 
 62   }
 63   case 2:
 64   {
 65       if (0 == num1)
 66        cout << "(" << num1_1 << "/" << num1_2 << ")";
 67       else
 68        cout << num1;
 69       cout << "-";
 70       if (0 == num2)
 71        cout << "(" << num2_1 << "/" << num2_2 << ")";
 72       else
 73        cout << num2;
 74       cout << "=" << endl;
 75       break;
 76 
 77   }
 78   case 3:
 79   {
 80       if (0 == num1)
 81        cout << "(" << num1_1 << "/" << num1_2 << ")";
 82       else
 83        cout << num1;
 84       cout << "*";
 85       if (0 == num2)
 86        cout << "(" << num2_1 << "/" << num2_2 << ")";
 87       else
 88        cout << num2;
 89       cout << "=" << endl;
 90       break;
 91 
 92   }
 93   case 4:
 94   {
 95       if (0 == num1)
 96        cout << "(" << num1_1 << "/" << num1_2 << ")";
 97       else
 98        cout << num1;
 99       cout << "/";
100       if (0 == num2)
101        cout << "(" << num2_1 << "/" << num2_2 << ")";
102       else
103        cout << num2;
104       cout << "=" << endl;
105       break;
106 
107   }
108   }
109  }
110 
111  //cout << "产生小数:" << 0+rand()/double(RAND_MAX);
112  
113 
114  return 0;
115 }

 

 

 

以上程序中需要注意除数不能为零,否则运算式不能成立。

posted on 2016-03-06 14:45  抬头看见阳光  阅读(570)  评论(2编辑  收藏  举报