一开始我是想直接把整数和分数写成两个函数再随机调用的,后来发现存在问题:
1.分数随机出来很可能成是假分数,假分数时调用了也不会输出。
2.如果这样那还得再来个时间,而且在试过之后发现再来一个随机出的数字也一样,就太冗余了。
综上:我选择了一个比较讨巧的方式,即:一个时间,当能生成真分数时就输出分数,不能的时候就用整数。
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<time.h>
4 #define random(x) (rand()%x)
5 #include <iostream>
6 using namespace std;
7
8 int suiji()
9 {
10 srand((int)time(0));
11 int a,b,c,d,i;
12 for(int j=0;j<30;j++)
13 {
14 i=rand()%4;
15 a=random(100);
16 b=random(100);
17 c=random(100);
18 d=random(100);
19
20 if (a<b && c<d && b!=0 && d!=0)
21 {
22 switch(i)
23 {
24 case 0:cout<<"("<<a<<"/"<<b<<")"<<"+"<<"("<<c<<"/"<<d<<")"<<"="<<endl;break;
25 case 1:cout<<"("<<a<<"/"<<b<<")"<<"-"<<"("<<c<<"/"<<d<<")"<<"="<<endl;break;
26 case 2:cout<<"("<<a<<"/"<<b<<")"<<"*"<<"("<<c<<"/"<<d<<")"<<"="<<endl;break;
27 case 3:cout<<"("<<a<<"/"<<b<<")"<<"/"<<"("<<c<<"/"<<d<<")"<<"="<<endl;break;
28 }
29 }
30 else
31 {
32 switch(i)
33 {
34 case 0:cout<<a<<"+"<<b<<"="<<endl;break;
35 case 1:cout<<a<<"-"<<b<<"="<<endl;break;
36 case 2:cout<<a<<"*"<<b<<"="<<endl;break;
37 case 3:cout<<a<<"/"<<b<<"="<<endl;break;
38 }
39
40 }
41
42
43 }
44 return 0;
45 }
46
47 void main()
48 {
49 suiji();
50 }
代码测试:

