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 yu,int neg,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; 26 int repeat; //控制是否重复 27 for(int i=0;i<num;i++) 28 { 29 n=rand()%range; 30 a[i]=n; 31 o=rand()%range; 32 b[i]=o; 33 p=rand()%cc; 34 c[i]=p; 35 q=rand()%2; 36 m=rand()%2; 37 while(neg) 38 { 39 switch(q) 40 { 41 case(0): 42 a[i]=-a[i]; 43 break; 44 case(1): 45 break; 46 } 47 break; 48 } 49 while(neg) 50 { 51 switch(m) 52 { 53 case(0): 54 b[i]=-b[i]; 55 break; 56 case(1): 57 break; 58 } 59 break; 60 } 61 repeat=1; 62 for(int j=0;j<i;j++) 63 { 64 if(a[i]==a[j]&&b[i]==b[j]&&c[i]==c[j]) //判断是否有重复 65 { 66 i=i-1; 67 repeat=0; 68 } 69 else 70 { 71 repeat=1; 72 } 73 } 74 while(repeat) 75 { 76 if(i%mhs==0) 77 { 78 cout<<endl; 79 } 80 switch(c[i]) 81 { 82 case(0): 83 cout<<"("<<i+1<<") "<<a[i]<<"+ "<<b[i]<<"="; 84 break; 85 case(1): 86 cout<<"("<<i+1<<") "<<a[i]<<"- "<<b[i]<<"="; 87 break; 88 case(2): 89 cout<<"("<<i+1<<") "<<a[i]<<"* "<<b[i]<<"="; 90 break; 91 case(3): 92 { 93 while(yu) 94 { 95 if(a[i]%b[i]!=0) 96 i=i-1; 97 repeat=0; 98 } 99 if(b[i]==0) //判断被除数是否为0,是0则不输出 100 { 101 i=i-1; 102 break; 103 } 104 else 105 { 106 cout<<"("<<i+1<<") "<<a[i]<<"/ "<<b[i]<<"="; 107 break; 108 } 109 // break; 110 } 111 } 112 for(int k=0;k<kgs;k++) 113 { 114 cout<<" "; 115 } 116 break; 117 } 118 } 119 cout<<endl; 120 } 121 122 123 void main() 124 { 125 int option,op1,op2,op3,op4,op5,op6,op7,op8,op9,n; 126 int cc; 127 menu(); 128 129 while(n) 130 { 131 cout<<"请输入选择:"; 132 cin>>option; 133 switch(option) 134 { 135 case 1: 136 { 137 cout<<"请输入题目数量:"; 138 cin>>op1; 139 menu(); 140 // cin>>option; 141 break; 142 } 143 case 2: 144 { 145 cout<<"有乘除法请输入0,没有乘除法请输入1(程序默认有乘除法):"; 146 cin>>op2; 147 if(op2==0) 148 { 149 cc=4; 150 } 151 else if(op2==1) 152 { 153 cc=2; 154 } 155 else 156 cout<<"输入有误,请重新输入(有乘除法请输入0,没有乘除法请输入1):"; 157 menu(); 158 // cin>>option; 159 break; 160 } 161 case 3: 162 { 163 cout<<"请输入数值范围"; 164 cin>>op3; 165 menu(); 166 // cin>>option; 167 break; 168 } 169 case 4: 170 { 171 cout<<"无负数请输入0,有负数请输入1:"; 172 cin>>op4; 173 menu(); 174 // cin>>option; 175 break; 176 } 177 case 5: 178 { 179 cout<<"有余数请输入0,无余数请输入1:"; 180 cin>>op5; 181 menu(); 182 // cin>>option; 183 break; 184 } 185 case 6: 186 { 187 cout<<"请输入每行题目的数量:"; 188 cin>>op6; 189 menu(); 190 // cin>>option; 191 break; 192 } 193 case 7: 194 { 195 cout<<"请输入每题之间的间距:"; 196 cin>>op7; 197 menu(); 198 // cin>>option; 199 break; 200 } 201 case 8: 202 { 203 yunsuan(op1,cc,op3,op4,op5,op6,op7); 204 cout<<endl; 205 break; 206 } 207 case 9: 208 cout<<"是否退出(0代表退出,1代表继续)"; 209 cin>>n;/// 210 break; 211 212 } 213 } 214 }
执行结果:
一、项目计划总结:
周活动总结表
姓名:徐擎天 日期:2015.3.15
日期 任务 |
听课 |
编写程序 |
阅读课本 |
准备考试 |
|
|
日总计 |
周日 |
|
|
|
|
|
|
|
周一 |
|
|
|
|
|
|
|
周二 |
100 |
20 |
20 |
|
|
|
140 |
周三 |
|
40 |
20 |
|
|
|
60 |
周四 |
|
|
|
|
|
|
|
周五 |
100 |
120 |
|
|
|
|
220 |
周六 |
|
120 |
40 |
|
|
|
160 |
周总结 |
200 |
300 |
80 |
|
|
|
580 |
阶段时间和效率 周数(上一次周活动表的周数+1):
不包括上一周在内的累计时间
总计 |
|
|
|
|
|
|
|
平均 |
|
|
|
|
|
|
|
最大 |
|
|
|
|
|
|
|
最小 |
|
|
|
|
|
|
|
以前各周的累计时间
总计 |
|
|
|
|
|
|
|
平均 |
|
|
|
|
|
|
|
最大 |
|
|
|
|
|
|
|
最小 |
|
|
|
|
|
|
|
二、时间记录表:
学生 徐擎天 日期 2014.3.15
教师 王建民 课程 PSP
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3.10 |
8.00 |
9.50 |
10 |
100 |
听课,根据题目想设计思路 |
|
3.11 |
14.00 |
15.00 |
0 |
60 |
根据所遇到的问题,查阅资料 将总体框架初步设定 |
|
3.13 |
8.00 |
9.50 |
10 |
100 |
听课 |
|
|
15.00 |
17.00 |
0 |
|
编写程序 |
|
3.14 |
8.00 |
9.00 |
0 |
|
编写程序 |
|
|
19.00 |
20.00 |
0 |
|
进行最后调试,提交代码 |
|
三、缺陷记录日志:
学生 徐擎天
日期 2014.3.15
教员 王建民
程序号
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3.12 |
1 |
|
编译 |
编译阶段 |
10min |
|
在调用函数时,由于主函数里的次序和调用函数里的次序没有对应,导致输出结果有误 |
||||||
3.14 |
2 |
|
编译 |
编译 |
10min |
|
主菜单里面属于一个数后,没有继续执行,而是跳出了程序。由于没有循环,导致函数执行完,直接跳出 |
||||||
|
3 |
|
执行 |
执行 |
30min |
|
最后开始定制时,一直无限重复输出。后来发现是由于在循环前没有控制变量。最后问题得以解决 |
||||||
|
4 |
|
执行 |
执行 |
|
|
在9退出时,没有退出,而是继续执行。后来加入while里的变量,根据用户输出,控制程序是否退出。 |