一、设计思路
这次版本加入了一下功能:
可定制题目的数量:修改循环次数;
可以定制每行打印的题目数和行间距的大小(当前题目序号可以整除定制数时输出输入的行间距个换行符);
可以定制算式的范围(修改随机数的最大值);
可以选择有无乘除法(没有乘除法即修改符号的情况,有四种改为两种);
可以选择减法中得数是否可以为负(不要负数的情况即比较减式中俩数大小,大数放前面)。
二、代码
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 }
三、运行结果
四、实验总结
在这次试验中,我发现了我不会使用函数,导致所有的代码都是在主函数中完成的,看上去很乱,还有对文件的读写也不明白,要想把这个程序做得更好,我接下来还要继续看课本,找资料。