四则运算出题器(c++)

一、设计思路

这次版本加入了一下功能:

可定制题目的数量:修改循环次数;

可以定制每行打印的题目数和行间距的大小(当前题目序号可以整除定制数时输出输入的行间距个换行符);

可以定制算式的范围(修改随机数的最大值);

可以选择有无乘除法(没有乘除法即修改符号的情况,有四种改为两种);

可以选择减法中得数是否可以为负(不要负数的情况即比较减式中俩数大小,大数放前面)。

二、代码

  1 #include<iostream.h>
  2 #include<stdlib.h>
  3 #include<time.h>
  4 int main()
  5 {
  6     int Ques1=1;
  7     int Ques2=1;
  8     int Ques3=100;
  9     char Ques4='y';
 10     int Ques5=1;
 11     char Ques6='n';
 12     char Ques7='n';
 13 Again:
 14     cout<<"请输入题目数量:";
 15     cin>>Ques1;
 16     cout<<"请输入每行打印题目数(1-5):";
 17     cin>>Ques2;
 18     cout<<"请输入算式中数值的最大值:";
 19     cin>>Ques3;
 20     while(1)
 21     {
 22         cout<<"运算中需要乘除法吗?y:需要;n:不需要";
 23         cin>>Ques4;
 24         cout<<"减法运算需要有负数吗?y:需要;n:不需要";
 25         cin>>Ques7;
 26         cout<<"行间距(正整数):";
 27         cin>>Ques5;
 28         srand(time(NULL));
 29         if(Ques4=='y')
 30         {
 31             while(1)
 32             {
 33                 if(Ques1<1)
 34                 {
 35                     cout<<"输入有误,请重新输入:";
 36                     cin>>Ques1;
 37                 }
 38                 else
 39                 {
 40                     for(int j=0;j<Ques1;j++)
 41                     {
 42                         if(j!=0&&j%Ques2==0)
 43                         {
 44                             for(int i=0;i<Ques5;i++)
 45                             {
 46                                 cout<<endl;
 47                             }        
 48                         }
 49                         int num1=rand()%Ques3;
 50                         int num2=rand()%Ques3;
 51                         int sign=rand()%4;
 52                         switch(sign)
 53                         {
 54                         case 0:
 55                             cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"	";
 56                             break;
 57                         case 1:
 58                             if(Ques7=='y')
 59                             {
 60                                 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
 61                             }
 62                             else
 63                             {
 64                                 if(num1>num2)
 65                                 {
 66                                     cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
 67                                 }
 68                                 else
 69                                 {
 70                                     cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"	";
 71                                 }
 72                             }
 73                             break;
 74                         case 2:
 75                             cout<<j+1<<":"<<" "<<num1<<"*"<<num2<<"="<<"	";
 76                             break;
 77                         case 3:
 78                             if(num2!=0)
 79                             {
 80                                 cout<<j+1<<":"<<" "<<num1<<"/"<<num2<<"="<<"	";
 81                             }
 82                             else
 83                             {
 84                                 j--;
 85                             }
 86                             break;
 87                         }
 88                     }
 89                     break;
 90                 }
 91             }
 92             break;
 93         }
 94         if(Ques4=='n')
 95         {
 96             while(1)
 97             {
 98                 if(Ques1<1)
 99                 {
100                     cout<<"输入有误,请重新输入:";
101                     cin>>Ques1;
102                 }
103                 else
104                 {
105                     for(int j=0;j<Ques1;j++)
106                     {
107                         if(j!=0&&j%Ques2==0)
108                         {
109                             for(int i=0;i<=Ques5;i++)
110                             {
111                                 cout<<endl;
112                             }
113                         }
114                         int num1=rand()%Ques3;
115                         int num2=rand()%Ques3;
116                         int sign=rand()%2;
117                         switch(sign)
118                         {
119                         case 0:
120                             cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"	";
121                             break;
122                         case 1:
123                             if(Ques7=='y')
124                             {
125                                 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
126                                 break;
127                             }
128                             else
129                             {
130                                 if(num1>num2)
131                                 {
132                                     cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"	";
133                                     break;
134                                 }
135                                 else
136                                 {
137                                     cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"	";
138                                     break;
139                                 }
140                             }
141                             break;
142                         }
143                     }
144                 }
145                 break;
146             }
147             break;
148         }
149         
150         else
151         {
152             cout<<"输入有误,请按要求输入!"<<endl;
153         }
154     }
155     cout<<endl;
156     while(1)
157     {
158         cout<<"还需要继续出题还是退出?(y:继续出题;n:退出)";
159         cin>>Ques6;
160         if(Ques6=='y')
161         {
162             goto Again;
163         }
164         if(Ques6=='n')
165         {
166             goto Exit;
167         }
168         else
169         {
170             cout<<"输入有误,请重新输入:";
171         }
172     }
173 Exit:
174     return 0;
175 }

三、运行结果

四、实验总结

  在这次试验中,我发现了我不会使用函数,导致所有的代码都是在主函数中完成的,看上去很乱,还有对文件的读写也不明白,要想把这个程序做得更好,我接下来还要继续看课本,找资料。

原文地址:https://www.cnblogs.com/zglsh/p/4340014.html