一、设计思路
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 }
以上程序中需要注意除数不能为零,否则运算式不能成立。