一开始我是想直接把整数和分数写成两个函数再随机调用的,后来发现存在问题: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 }
代码测试:
时间: 2024-10-20 04:53:08