1.设计思路
上次博客已经写得很具体了,不再赘述。
2.源代码
1 #include<iostream.h> 2 #include<stdlib.h> 3 #include<time.h> 4 void choice2(); 5 void create(int m,int n){ 6 int a,b,c; 7 a=rand()%n; 8 b=rand()%n; 9 c=rand()%m; 10 switch(c){ 11 case 0: 12 cout<<a<<"+"<<b<<"="<<endl; 13 break; 14 case 1: 15 if(a>b) 16 { 17 cout<<a<<"-"<<b<<"="<<endl; 18 } 19 else 20 { 21 cout<<b<<"-"<<a<<"="<<endl; 22 } 23 break; 24 case 2: 25 cout<<a<<"*"<<b<<"="<<endl; 26 break; 27 case 3: 28 if(b!=0) 29 { 30 cout<<a<<"/"<<b<<"="<<endl; 31 } 32 else 33 { 34 cout<<"这道题有误!"<<endl; 35 } 36 break; 37 } 38 } 39 void caidan() 40 { 41 cout<<"----四则运算2-----"<<endl; 42 cout<<"1. 定制出题数量"<<endl; 43 cout<<"2. 出题打印"<<endl; 44 cout<<"3. 退出菜单"<<endl; 45 } 46 void caidan2() 47 { 48 cout<<"----四则运算2----"<<endl; 49 cout<<"1. 乘除法选择"<<endl; 50 cout<<"2. 数值范围选择"<<endl; 51 cout<<"3. 余数有无选择"<<endl; 52 cout<<"4. 打印间隔选择"<<endl; 53 cout<<"5. 退出菜单"<<endl; 54 } 55 void choice() 56 { 57 int xuanze,num; 58 caidan(); 59 cout<<"输入您的选择:"<<endl; 60 cin>>xuanze; 61 while(xuanze!=3) 62 { 63 switch(xuanze) 64 { 65 case 1: 66 cout<<"请输入您想定制的数量:"<<endl; 67 cin>>num; 68 caidan(); 69 cin>>xuanze; 70 break; 71 case 2: 72 cout<<"出题打印!"<<endl; 73 choice2(); 74 break; 75 default: 76 cout<<"输入有误!请重新输入!"<<endl; 77 caidan(); 78 cin>>xuanze; 79 break; 80 } 81 } 82 } 83 void choice2() 84 { 85 int key,k1,k2,k3,k4,num; 86 caidan2(); 87 cout<<"请输入您的选择:"<<endl; 88 cin>>key; 89 while(key) 90 { 91 switch(key) 92 { 93 case 1: 94 cout<<"请输入0或1(0代表有乘除,1代表无乘除!)"<<endl; 95 cin>>k1; 96 if(k1==0) 97 { 98 cout<<"请输入你想定制的数量:"<<endl; 99 cin>>num; 100 for(int i=0;i<num;i++){ 101 create(4,100); 102 } 103 } 104 else if(k1==1) 105 { 106 cout<<"请输入你想定制的数量:"<<endl; 107 cin>>num; 108 for(int i=0;i<num;i++){ 109 create(2,100); 110 } 111 } 112 else 113 { 114 cout<<"输入有误!请重输:"<<endl; 115 cin>>k1; 116 } 117 caidan2(); 118 cin>>key; 119 break; 120 case 2: 121 { 122 cout<<"请输入出题数值范围(数值范围默认100以内)"<<endl; 123 cin>>k2; 124 cout<<"请输入你想定制的数量:"<<endl; 125 cin>>num; 126 for(int i=0;i<num;i++){ 127 create(4,k2); 128 } 129 caidan2(); 130 cin>>key; 131 break; 132 } 133 case 3: 134 cout<<"请输入0或1(0代表有余数,1代表无余数!)"<<endl; 135 cin>>k3; 136 137 if(k3==0) 138 { 139 cout<<"请输入出题数值范围(数值范围默认100以内)"<<endl; 140 cin>>k2; 141 cout<<"请输入你想定制的数量:"<<endl; 142 cin>>num; 143 int a=rand()%k2; 144 int b=rand()%k2; 145 146 if(a%b==0) 147 { 148 srand(time(NULL)); 149 a=rand()%k2; 150 b=rand()%k2; 151 for(int i=0;i<num;i++){ 152 create(4,k2);} 153 } 154 else 155 { 156 for(int i=0;i<num;i++){ 157 create(4,k2);} 158 } 159 } 160 else if(k3==1) 161 { 162 cout<<"请输入出题数值范围(数值范围默认100以内)"<<endl; 163 cin>>k2; 164 cout<<"请输入你想定制的数量:"<<endl; 165 cin>>num; 166 int a=rand()%k2; 167 int b=rand()%k2; 168 169 if(a%b==0) 170 { 171 srand(time(NULL)); 172 a=rand()%k2; 173 b=rand()%k2; 174 for(int i=0;i<num;i++){ 175 create(4,k2);} 176 } 177 else 178 { 179 for(int i=0;i<num;i++){ 180 create(4,k2);} 181 } 182 } 183 caidan2(); 184 cin>>key; 185 break; 186 case 4: 187 { 188 cout<<"请输入您想打印时的间隔:"<<endl; 189 cin>>k4; 190 cout<<"请输入你想定制的数量:"<<endl; 191 cin>>num; 192 for(int i=0;i<num;i++) 193 { 194 create(4,100); 195 for(int j=0;j<k4;j++) 196 { 197 cout<<" "; 198 } 199 } 200 caidan2(); 201 break; 202 } 203 case 5: 204 exit(1); 205 default: 206 cout<<"输入有误!请重新输入!"<<endl; 207 caidan2(); 208 cin>>key; 209 break; 210 } 211 } 212 } 213 void main() 214 { 215 int xuanze; 216 choice(); 217 if(xuanze==2) 218 { 219 choice2(); 220 } 221 } 222
3.结果截图:
4.程序总结
1)这次程序的设计编写遇到了不小的麻烦,其中本想着已一种简便的方法实现这一功能,却弄巧成拙,耗费了大量的时间,而主程序中一些程序代码段的重写也成为了这次的主要不足。
2)程序设计中逻辑性不强,依旧存在一些bug。
3)程序只实现了部分功能,日后一定还会再修复的。
5.PSP