一、設計思路
這次版本加入了一下功能:
可定制題目的數量:修改循環次數;
可以定制每行列印的題目數和行間距的大小(目前題目序号可以整除定制數時輸出輸入的行間距個換行符);
可以定制算式的範圍(修改随機數的最大值);
可以選擇有無乘除法(沒有乘除法即修改符号的情況,有四種改為兩種);
可以選擇減法中得數是否可以為負(不要負數的情況即比較減式中倆數大小,大數放前面)。
二、代碼
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 }
三、運作結果
四、實驗總結
在這次試驗中,我發現了我不會使用函數,導緻所有的代碼都是在主函數中完成的,看上去很亂,還有對檔案的讀寫也不明白,要想把這個程式做得更好,我接下來還要繼續看課本,找資料。