随机30道小学计算题01

一开始我是想直接把整数和分数写成两个函数再随机调用的,后来发现存在问题:
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 }




代码测试:

原文地址:https://www.cnblogs.com/linanil/p/5247612.html