四则运算3
1 #include<iostream> 2 #include<time.h> 3 using namespace std; 4 void menu() 5 { 6 // system("cls"); 7 cout<<"---------------菜单---------------"<<endl; 8 cout<<" 1.定制题目数量 "<<endl; 9 cout<<" 2.是否有乘除法 "<<endl; 10 cout<<" 3.数值范围 "<<endl; 11 cout<<" 4.加减有无负数 "<<endl; 12 cout<<" 5.除法有无余数 "<<endl; 13 cout<<" 6.定制每行题的个数 "<<endl; 14 cout<<" 7.定制间距 "<<endl; 15 cout<<" 8.开始定制 "<<endl; 16 cout<<" 9.退出 "<<endl; 17 cout<<"----------------------------------"<<endl; 18 } 19 void yunsuan(int num,int cc,int range,int neg,int yu,int mhs,int kgs) //四则运算函数 20 { 21 srand(time(NULL)); 22 int a[100]; //存放第一个操作数的数组 23 int b[100]; //存放第二个操作数的数组 24 int c[100]; //存放运算符的数组 25 int n,o,p,q,m,x=1; 26 int repeat; //控制是否重复 27 int d,e,f,g,sum=0; 28 for(int i=0;i<num;i++) 29 { 30 n=rand()%range; 31 a[i]=n; 32 o=rand()%range; 33 b[i]=o; 34 p=rand()%cc; 35 c[i]=p; 36 q=rand()%2; 37 m=rand()%2; 38 while(neg) //有无负数 39 { 40 switch(q) 41 { 42 case(0): 43 a[i]=-a[i]; 44 break; 45 case(1): 46 break; 47 } 48 break; 49 } 50 while(neg) 51 { 52 switch(m) 53 { 54 case(0): 55 b[i]=-b[i]; 56 break; 57 case(1): 58 break; 59 } 60 break; 61 } 62 repeat=1; 63 for(int j=0;j<i;j++) 64 { 65 if(a[i]==a[j]&&b[i]==b[j]&&c[i]==c[j]) //判断是否有重复 66 { 67 i=i-1; 68 repeat=0; 69 } 70 } 71 while(repeat) 72 { 73 if(i%mhs==0) 74 { 75 cout<<endl; 76 } 77 switch(c[i]) 78 { 79 case(0): 80 { 81 cout<<"("<<i+1<<") "<<a[i]<<"+ "<<b[i]<<"="; 82 cin>>d; 83 if(d==a[i]+b[i]) 84 sum++; 85 } 86 break; 87 case(1): 88 { 89 cout<<"("<<i+1<<") "<<a[i]<<"- "<<b[i]<<"="; 90 cin>>e; 91 if(e==a[i]-b[i]) 92 sum++; 93 } 94 break; 95 case(2): 96 { 97 cout<<"("<<i+1<<") "<<a[i]<<"* "<<b[i]<<"="; 98 cin>>f; 99 if(f==a[i]*b[i]) 100 sum++; 101 } 102 break; 103 case(3): 104 { 105 106 if(b[i]==0) //判断被除数是否为0,是0则不输出 107 { 108 i=i-1; 109 break; 110 } 111 else 112 { 113 while(yu) 114 { 115 if(a[i]%b[i]!=0) 116 { 117 i=i-1; 118 x=0; 119 break; 120 } 121 } 122 while(x) 123 { 124 cout<<"("<<i+1<<") "<<a[i]<<"/ "<<b[i]<<"="; 125 cin>>g; 126 if(g==a[i]/b[i]) 127 sum++; 128 } 129 break; 130 } 131 } 132 } 133 for(int k=0;k<kgs;k++) 134 { 135 cout<<"\t"; 136 } 137 break; 138 } 139 } 140 cout<<endl; 141 cout<<"共答对"<<sum<<"道题目"<< endl; 142 } 143 144 145 void main() 146 { 147 int option,op1,op2,op3,op4,op5,op6,op7,n; 148 int cc; 149 menu(); 150 151 while(n) 152 { 153 cout<<"请输入选择:"; 154 cin>>option; 155 switch(option) 156 { 157 case 1: 158 { 159 cout<<"请输入题目数量:"; 160 cin>>op1; 161 menu(); 162 // cin>>option; 163 break; 164 } 165 case 2: 166 { 167 cout<<"有乘除法请输入0,没有乘除法请输入1(程序默认有乘除法):"; 168 cin>>op2; 169 if(op2==0) 170 { 171 cc=4; 172 } 173 else if(op2==1) 174 { 175 cc=2; 176 } 177 else 178 cout<<"输入有误,请重新输入(有乘除法请输入0,没有乘除法请输入1):"; 179 menu(); 180 // cin>>option; 181 break; 182 } 183 case 3: 184 { 185 cout<<"请输入数值范围"; 186 cin>>op3; 187 menu(); 188 // cin>>option; 189 break; 190 } 191 case 4: 192 { 193 cout<<"无负数请输入0,有负数请输入1:"; 194 cin>>op4; 195 menu(); 196 // cin>>option; 197 break; 198 } 199 case 5: 200 { 201 cout<<"有余数请输入0,无余数请输入1:"; 202 cin>>op5; 203 menu(); 204 // cin>>option; 205 break; 206 } 207 case 6: 208 { 209 cout<<"请输入每行题目的数量:"; 210 cin>>op6; 211 menu(); 212 // cin>>option; 213 break; 214 } 215 case 7: 216 { 217 cout<<"请输入每题之间的间距:"; 218 cin>>op7; 219 menu(); 220 // cin>>option; 221 break; 222 } 223 case 8: 224 { 225 yunsuan(op1,cc,op3,op4,op5,op6,op7); 226 cout<<endl; 227 break; 228 } 229 case 9: 230 cout<<"是否退出(0代表退出,1代表继续)"; 231 cin>>n;/// 232 break; 233 234 } 235 } 236 }
结果:
实验心得:这次的个人项目,在上次的基础之上,加以改进,虽然还有一些问题,相信在查阅书籍和询问老师以后,可以更好的实现查错。
一、项目计划总结:
周活动总结表
姓名:徐擎天 日期:2015.3.22
日期 任务 |
听课 |
编写程序 |
阅读课本 |
准备考试 |
|
|
日总计 |
周日 |
|
|
|
|
|
|
|
周一 |
|
|
|
|
|
|
|
周二 |
100 |
20 |
20 |
|
|
|
140 |
周三 |
|
40 |
20 |
|
|
|
60 |
周四 |
|
|
|
|
|
|
|
周五 |
100 |
120 |
|
|
|
|
220 |
周六 |
|
120 |
40 |
|
|
|
160 |
周总结 |
200 |
300 |
80 |
|
|
|
580
|
二、时间记录表:
学生 徐擎天 日期 2014.3.22
教师 王建民 课程 PSP
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3.17 |
8.00 |
9.50 |
10 |
100 |
听课,根据题目想设计思路 |
|
3.18 |
14.00 |
15.00 |
0 |
60 |
根据所遇到的问题,查阅资料 将总体框架初步设定 |
|
3.20 |
8.00 |
9.50 |
10 |
100 |
听课 |
|
|
15.00 |
17.00 |
0 |
|
编写程序 |
|
3.21 |
8.00 |
9.00 |
0 |
|
编写程序 |
|
|
19.00 |
20.00 |
0 |
|
进行最后调试,提交代码 |
|
三、缺陷记录日志:
学生 徐擎天
日期 2014.3.22
教员 王建民
程序号
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3.20 |
1 |
|
执行 |
执行 |
|
|
再输入错误的情况下,仍显示正确,后来得以改正 |
||||||
|
|
|
|
|
1 |
|
|
||||||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|