设计思路
1,题目避免重复:
采用srand(time(NULL))实现
2,可定制:
a)定制数量:定义变量n,用户可以自己设置
b)打印方式:可以自己选择每行可以打印几个
3,可控制参数:
a)是否支持乘除:编写了两个函数,一个有乘除,一个没有乘除,在主函数里设置判断语句用户自己选择,然后调用相应的函数。
b)加减有无负数:设置判断语句,有负数为0,无负数为1.
c)除法有无余数:在有乘除的函数里设置条件语句,0为有余数,1为无余数,如果用户选择与随机产生的不一致,则再随机取一个被除数。
d)打印中每行的间隔:只要再换行时用一个循环语句,循环输出endl即可。
缺陷:由于编程能力不足,未能实现是否有括号和最多支持十个参数参与运算。
1 #include<iostream> 2 #include<stdlib.h> 3 using namespace std; 4 #include<time.h> 5 6 char get_oper(int n) 7 { 8 switch (n) 9 10 { 11 12 case 0:return '+'; 13 14 case 1:return '-'; 15 16 case 2:return '*'; 17 18 case 3:return '/'; 19 20 } 21 22 } 23 24 25 26 int main() 27 28 { 29 30 srand(time(NULL)); 31 32 int num1 = 0; 33 34 int num2 = 0; 35 36 int operators = 0; 37 38 int cpl; //定义每行输出题目个数 39 40 int range; //定义数值范围 41 42 int answer; //定义计算结果 43 44 int num; //定义题目个数 45 46 int JG; //定义每行间隔 47 48 char m; //是否有乘除法 49 50 char n; //加减有无负数 51 52 cout << "请输入输出题目个数:"; 53 54 cin >> num; 55 56 cout << "请输入数值范围:"; 57 58 cin >> range; 59 60 cout << "请输入每行题目个数:"; 61 62 cin >> cpl; 63 64 cout << "请输入每行间隔:"; 65 66 cin >> JG; 67 68 cout << "是否有乘除法(Y/N)?"; 69 70 cin >> m; 71 72 cout << "是否有负数(Y/N)?"; 73 74 cin >> n; 75 76 for (int i = 1; i <= num; i++) 77 78 { 79 80 //随机产生运算的数和运算符。 81 82 num1 = rand() % range; 83 84 num2 = rand() % range; 85 86 if (m == 'Y') 87 88 { 89 90 operators = rand() % 4; 91 92 switch (operators) 93 94 { 95 96 case 0:answer = num1 + num2; break; 97 98 case 1:answer = num1 - num2; break; 99 100 case 2:answer = num1*num2; break; 101 102 case 3:answer = num1 / num2; 103 104 } 105 106 } 107 108 else if (m == 'N') 109 110 { 111 112 operators = rand() % 2; 113 114 switch (operators) 115 116 { 117 118 case 0:answer = num1 + num2; break; 119 120 case 1:answer = num1 - num2; break; 121 122 } 123 124 } 125 126 if (answer<range) 127 128 { 129 130 if (n == 'Y') 131 132 { 133 134 cout << num1 << get_oper(operators) << num2 << "="; 135 136 for (int j = 0; j <= JG; j++) 137 138 cout << " "; 139 140 cout << "\t"; 141 142 if (i%cpl == 0) 143 144 { 145 146 cout << endl; 147 148 } 149 150 } 151 152 else if (n == 'N') 153 154 { 155 156 i--; 157 158 } 159 160 } 161 162 else 163 164 { 165 166 i--; 167 168 } 169 170 } 171 172 return 0; 173 174 }