程序实现自动生成30道四则运算题目(1)

课堂上老师要求我们做这样一个题目,题目要求是自动生成30道四则运算题目,要求除整数加减乘除外,还有真分数加减乘除。刚开始听到这个题目一头雾水,有点复杂,但仔细拆分这个题目不难发现,这个题目可以简化成三个小问题,分别是随机数自动生成两个数,自动生成符号,还有输出结果。对于随机数自动生成两个数可以简化为随机数生成整数,随机数生成真分数,生成真分数可以简化到随机数生成分子和分母。对于自动生成符号,也可以简化为随机数生成1,2,3,4,分别代表+,—,*,/,输出结果可以用一个for循化,实现输出30道题,另外还有几个小问题,例如第一是,真分数分子小于分母,第二是,生成的数中有0存在,不能做分母,需要用if语句做判断。

下面是实现问题的代码:

 1 //课堂练习,题目自动生成四则运算题目,题目要求除整数加减乘除外,还有真分数加减乘除。2016.3.3,杨超群
 2 #include<iostream>
 3 #include<time.h>
 4 using namespace std;
 5 float num[6];
 6 void sort(){                      //生成随机数
 7     num[0]=rand()%100;
 8     num[1]=rand()%100;
 9     num[2]=rand()%100;
10     num[3]=rand()%100;
11     for(int i=0;i<4;i++){
12         for(int j=0;j<i;j++){ 
13             if(num[i]>num[j])
14             {
15                 int temp=0;
16                 temp=num[i];
17                 num[i]=num[j];
18                 num[j]=temp;
19             }
20         }
21     }    
22 }
23 void main(){               
24     srand((unsigned)time(NULL));
25     for(int i=0;i<30;i++){
26         sort();
27         num[4]=rand()%4+1;
28         num[5]=rand()%2+1;
29         if(num[4]==1){
30             if(num[5]==1)
31                 cout<<num[1]<<"+"<<num[2]<<"="<<endl;
32             else{
33                 for(;;){
34                     if(num[0]==0||num[1]==0)
35                         sort();
36                     else{
37                         cout<<"("<<num[2]<<"/"<<num[0]<<")"<<"+"<<"("<<num[3]<<"/"<<num[1]<<")"<<"="<<endl;
38                         break;
39                     }
40                 }
41             }
42         }
43         else if(num[4]==2){
44             if(num[5]==1)
45                 cout<<num[1]<<"-"<<num[2]<<"="<<endl;
46             else{
47                 for(;;){
48                     if(num[0]==0||num[1]==0)
49                         sort();
50                     else{
51                         cout<<"("<<num[2]<<"/"<<num[0]<<")"<<"-"<<"("<<num[3]<<"/"<<num[1]<<")"<<"="<<endl;
52                         break;
53                     }
54                 }
55             }
56         }
57         else if(num[4]==3){
58             if(num[5]==1)
59                 cout<<num[1]<<"*"<<num[2]<<"="<<endl;
60             else{
61                 for(;;){
62                     if(num[0]==0||num[1]==0)
63                         sort();
64                     else{
65                         cout<<"("<<num[2]<<"/"<<num[0]<<")"<<"*"<<"("<<num[3]<<"/"<<num[1]<<")"<<"="<<endl;
66                         break;
67                     }
68                 }
69             }
70         }
71         else if(num[4]==4){
72             if(num[5]==1){
73                 for(;;){
74                     if(num[2]==0)
75                         sort();
76                     else{
77                         cout<<num[1]<<"/"<<num[2]<<"="<<endl;
78                         break;
79                     }
80                 }
81             }
82             else{
83                 for(;;){
84                     if(num[0]==0||num[1]==0||num[3]==0)
85                         sort();
86                     else{
87                         cout<<"("<<num[2]<<"/"<<num[0]<<")"<<"/"<<"("<<num[3]<<"/"<<num[1]<<")"<<"="<<endl;
88                         break;
89                     }
90                 }
91             }
92         }
93     }
94 }
原文地址:https://www.cnblogs.com/linumy/p/5244363.html