软件工程课堂练习--四则运算(三)
2015-03-19 19:09
381 查看
一、设计思路
题目:可以答题并判断对错,最后显示做对几道题。
思路:在原来的基础上又添加了用户在系统上可选择直接答题模块,思路上上次的四则运算(二)大致相同,不过又添加了几个函数,经过调用实现操作。
二、程序代码
三、运行结果
其他功能和上篇发的内容相同,此处就不在贴图啦
四、心得体会
由于一开始写四则运算时没想太多,就是想着把这个简简单单的快完成就好了,所以写的程序的扩展性不好,导致后面在一点点的加功能时自己乱,读者看着更乱,虽然功能都实现了,但是代码显得没有条理,所以我想以后再遇到为题时不要先急着下手,要先想想大体思路以及框架,这样在操作起来后就会有条理,思路不乱了程序敲起来也会更顺手吧,对于编程我真的算是一个初学者了,和大伙分享一下我的经验教训吧。
五、psp0级
周活动项目计划总结表+时间记录日志+缺陷记录志
一、项目计划总结:
表1 周活动总结表
姓名:曹美娜 日期:2015.03.15
表2 时间记录日志
学生 曹美娜 日期 2015.03.19
教师 王建民 课程 软件工程
表3 缺陷记录日志
学 生 曹美娜
日 期 2015.03.19
教 员 王建民
程序号
题目:可以答题并判断对错,最后显示做对几道题。
思路:在原来的基础上又添加了用户在系统上可选择直接答题模块,思路上上次的四则运算(二)大致相同,不过又添加了几个函数,经过调用实现操作。
二、程序代码
#include "stdafx.h" #include "stdio.h" #include "time.h" #include "stdlib.h" //随机器函数头文件 int truenum=0; int falsenum=0; void operation(int num,int numvalue,int judear,int judemd,int linenum) { switch(judemd) { case 0:{ int x,y; if(judear==0){ srand((int)time(0)); for(int i=1;i<=num;i++) //出题数量 { int a=rand()%numvalue; int b=rand()%numvalue; x=1+rand()%10; //随机产生10种类型的题目 switch (x) { case 1: { printf("%d+%d=",a,b); break; } case 2: { printf("%d-%d=\t",a,b); break; } case 3: { printf("-%d+%d=\t",a,b); break; } case 4: { printf("%d+(-%d)=\t",a,b); break; } case 5: { printf("-%d+(-%d)=\t",a,b); break; } case 6: { printf("-%d-%d=\t",a,b); break; } case 7: { printf("%d-(-%d)=\t",a,b); break; } case 8: { printf("-%d-(-%d)=\t",a,b); break; } case 9: { printf("%d*%d=\t",a,b); break;} case 10: { if (b!=0) {printf("%d/%d=\t",a,b);} else { b=b+1; printf("%d/%d=\t",a,b); } break; } default:{"输出有误!";} } if(i%linenum==0) { printf("\n"); } } } else if(judear==1) { srand((int)time(0)); for(int i=1;i<=num;i++) { int a=rand()%numvalue; int b=rand()%numvalue; y=1+rand()%4; //随机产生四种不同的题目 switch (y) { case 1: { printf("%d+%d= \t",a,b); break; } case 2: { printf("%d-%d= \t",a,b); break; } case 3: { printf("%d*%d= \t",a,b); break; } case 4: { if (b!=0) {printf("%d/%d= \t",a,b);} else { b=b+1; printf("%d/%d= \t",a,b); } break; } default:{printf("输出有误!");} } } if(i%linenum==0) {printf("\n");} } else printf("出错!"); break; default:{printf("出错!");} } case 1:{ int q,w; if(judear==0) { srand((int)time(0)); for(int i=1;i<=num;i++) { int a=rand()%numvalue; int b=rand()%numvalue; q=1+rand()%8; //随机产生8种不同的题型 switch (q) { case 1: { printf("%d+%d= \t",a,b); break; } case 2: { printf("%d-%d= \t",a,b); break; } case 3: { printf("-%d+%d= \t",a,b); break;} case 4: { printf("%d+(-%d)= \t",a,b); break;} case 5: { printf("-%d+(-%d)=\t",a,b); break;} case 6: { printf("-%d-%d= \t",a,b); break; } case 7: { printf("%d-(-%d)= \t",a,b); break; } case 8: { printf("-%d-(-%d)=\t",a,b); break; } default:{"输出有误!";} } if(i%linenum==0) { printf("\n"); } } } else if(judear==1) { srand((int)time(0)); for(int i=1;i<=num;i++) { int a=rand()%numvalue; int b=rand()%numvalue; w=1+rand()%2; //随机产生2种不同的题型 switch (w) { case 1: { printf("%d+%d= \t",a,b); break; } case 2: { printf("%d-%d= \t",a,b); break; } default:{"输出有误!";} } if(i%linenum==0) { printf("\n"); } } } else printf("出错!"); } } } void add(int num1,int num2) { int userresult,truresult; scanf("%d",&userresult); truresult=num1+num2; if(truresult==userresult) { printf(" √"); truenum++; } else if(truresult!=userresult) { printf(" ×"); falsenum++; } printf("\n"); } void sub(int num1,int num2) { int userresult,truresult; scanf("%d",&userresult); truresult=num1-num2; if(truresult==userresult) { printf(" √"); truenum++; } else if(truresult!=userresult) { printf(" ×"); falsenum++; } printf("\n"); } void mul(int num1,int num2) { int userresult,truresult; scanf("%d",&userresult); truresult=num1*num2; if(truresult==userresult) { printf(" √"); truenum++; } else if(truresult!=userresult) { printf(" ×"); falsenum++; } printf("\n"); } void division(int num1,int num2) { int userresult,truresult; scanf("%d",&userresult); truresult=num1/num2; if(truresult==userresult) { printf(" √"); truenum++; } else if(truresult!=userresult) { printf(" ×"); falsenum++; } } void answoperation(int num,int numvalue,int judear,int judemd,int linenum) { switch(judemd) { case 0:{ int x,y; if(judear==0){ srand((int)time(0)); for(int i=1;i<=num;i++) //出题数量 { int a=rand()%numvalue; int b=rand()%numvalue; x=1+rand()%10; //随机产生10种类型的题目 switch (x) { case 1: { printf("%d+%d=",a,b); add(a,b); break; } case 2: { printf("%d-%d=",a,b); sub(a,b); break; } case 3: { printf("-%d+%d=",a,b); add(-a,b); break; } case 4: { printf("%d+(-%d)=",a,b); add(a,-b); break; } case 5: { printf("-%d+(-%d)=",a,b); add(-a,-b); break; } case 6: { printf("-%d-%d=",a,b); sub(-a,b); break; } case 7: { printf("%d-(-%d)=",a,b); sub(a,-b); break; } case 8: { printf("-%d-(-%d)=",a,b); sub(-a,-b); break; } case 9: { printf("%d*%d=",a,b); mul(a,b); break;} case 10: { if (b!=0) { printf("%d/%d=",a,b); division(a,b); } else { b=b+1; printf("%d/%d=",a,b); division(a,b); } break; } default:{"输出有误!";} } if(i%linenum==0) { printf("\n"); } } } else if(judear==1) { srand((int)time(0)); for(int i=1;i<=num;i++) { int a=rand()%numvalue; int b=rand()%numvalue; y=1+rand()%4; //随机产生四种不同的题目 switch (y) { case 1: { printf("%d+%d=",a,b); add(a,b); break; } case 2: { printf("%d-%d=",a,b); sub(a,b); break; } case 3: { printf("%d*%d=",a,b); mul(a,b); break; } case 4: { if (b!=0) { printf("%d/%d=",a,b); division(a,b); } else { b=b+1; printf("%d/%d=",a,b); division(a,b); } break; } default:{printf("输出有误!");} } } if(i%linenum==0) {printf("\n");} } else printf("出错!"); break; default:{printf("出错!");} } case 1:{ int q,w; if(judear==0) { srand((int)time(0)); for(int i=1;i<=num;i++) { int a=rand()%numvalue; int b=rand()%numvalue; q=1+rand()%8; //随机产生8种不同的题型 switch (q) { case 1: { printf("%d+%d=",a,b); add(a,b); break; } case 2: { printf("%d-%d=",a,b); sub(a,b); break; } case 3: { printf("-%d+%d=",a,b); add(-a,b); break;} case 4: { printf("%d+(-%d)=",a,b); add(a,-b); break;} case 5: { printf("-%d+(-%d)=",a,b); add(-a,-b); break;} case 6: { printf("-%d-%d=",a,b); sub(-a,b); break; } case 7: { printf("%d-(-%d)=",a,b); sub(a,-b); break; } case 8: { printf("-%d-(-%d)=",a,b); sub(-a,-b); break; } default:{"输出有误!";} } if(i%linenum==0) { printf("\n"); } } } else if(judear==1) { srand((int)time(0)); for(int i=1;i<=num;i++) { int a=rand()%numvalue; int b=rand()%numvalue; w=1+rand()%2; //随机产生2种不同的题型 switch (w) { case 1: { printf("%d+%d=",a,b); add(a,b); break; } case 2: { printf("%d-%d=",a,b); sub(a,b); break; } default:{"输出有误!";} } if(i%linenum==0) { printf("\n"); } } } else printf("出错!"); } } } void print() { int num,numvalue,judear,judemd,linenum,answer; //变量含义分别为出题数目、数值范围、判断有无负数、判断有无乘除、输出列数、直接作答 printf("请输入出题数目:"); scanf("%d",&num); printf("请输入要输出的题目列数(多少题一组):"); scanf("%d",&linenum); printf("加减有无负数?请输入【0/1】表示【是/否】:"); scanf("%d",&judear); while(judear!=0 && judear!=1) //判断用户是否按要求输入 { printf("sorry!输入错误,请按要求输入:"); scanf("%d",&judear); } printf("请输入出题的范围绝对值(不考虑小数请输入整数):00-"); scanf("%d",&numvalue); printf("出题是否含有乘除法?请输入【0/1】表示【是/否】:"); scanf("%d",&judemd); while(judear!=0 && judear!=1) //判断用户是否按要求输入 { printf("sorry!输入错误,请按要求输入:"); scanf("%d",&judemd); } printf("是否要在此系统上直接运算?请输入【0/1】表示【是/否】:"); scanf("%d",&answer); while(answer!=0 && answer!=1) //判断用户是否按要求输入 { printf("sorry!输入错误,请按要求输入:"); scanf("%d",&answer); } if (answer==1) { operation(num,numvalue,judear,judemd,linenum); //调用operation函数 } else if(answer==0) { answoperation(num,numvalue,judear,judemd,linenum); //调用answ-operation函数 } } int main(int argc, char* argv[]) { printf(" 四则运算出题系统 \n"); print(); printf("最后计算正确%d道题,错误%d道题\n",truenum,falsenum); printf("\n"); return 0; }
三、运行结果
其他功能和上篇发的内容相同,此处就不在贴图啦
四、心得体会
由于一开始写四则运算时没想太多,就是想着把这个简简单单的快完成就好了,所以写的程序的扩展性不好,导致后面在一点点的加功能时自己乱,读者看着更乱,虽然功能都实现了,但是代码显得没有条理,所以我想以后再遇到为题时不要先急着下手,要先想想大体思路以及框架,这样在操作起来后就会有条理,思路不乱了程序敲起来也会更顺手吧,对于编程我真的算是一个初学者了,和大伙分享一下我的经验教训吧。
五、psp0级
周活动项目计划总结表+时间记录日志+缺陷记录志
一、项目计划总结:
表1 周活动总结表
姓名:曹美娜 日期:2015.03.15
日期/任务 | 听课 | 编写程序 | 阅读课本 | 准备考试 | 日总计 | ||
周日 | |||||||
周一 | 300 | 45 | 345 | ||||
周二 | 300 | 80 | 380 | ||||
周三 | 100 | 100 | 200 | ||||
周四 | 300 | 115 | 60 | 475 | |||
周五 | |||||||
周六 | |||||||
周总计 |
总计 | 800 | 268 | 95 | 1163 | |||
平均 | 800 | 268 | 95 | 1163 | |||
最大 | 800 | 268 | 95 | 1163 | |||
最小 | 800 | 268 | 95 | 1163 |
学生 曹美娜 日期 2015.03.19
教师 王建民 课程 软件工程
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3/18 | 10:40 | 12:13 | 93 | 结队编程 | ||
3/19 | 17:00 | 18:20 | 80 | 编写四则运算程序 | ||
3/20 | 阅读梦断代码 | |||||
看书 |
学 生 曹美娜
日 期 2015.03.19
教 员 王建民
程序号
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复时间 | 修复缺陷 |
3/18 | 0 | 结队编程 | 编译 | 1分钟 | ||
将输出语句写到内循环中 | ||||||
3/19 | 1 | 编程 | 编译 | 2分钟 | ||
全局变量应用不正确 |
相关文章推荐
- 软件工程课堂作业(一)——随机产生四则运算题目(C++)
- 课堂练习之四则运算加强版
- 软件工程课堂作业(二)——升级版随机产生四则运算题目设计思想
- 软件工程--课堂练习之四则运算之续编
- 软件工程课堂作业(五)——终极版随机产生四则运算题目(C++)
- 软件工程课堂作业(二)续——升级完整版随机产生四则运算题目(C++)
- 课堂练习之扩展每天30道四则运算题----思路
- 软件工程课堂练习四则运算续篇
- 课堂练习之每天出30道四则运算题目
- 软件工程随堂练习——随机四则运算
- 30道四则运算题目---课堂作业--软件工程c++
- 3月10号周二课堂练习:关于自动生成四则运算题目的程序的延伸
- 现代软件工程讲义 个人项目和结对项目练习 四则运算
- 3月10号周二课堂练习:四则运算二
- 3月17号周二课堂练习:四则运算三
- 分数的四则运算(c++重载练习)
- 软件工程课后作业一之30道随机四则运算程序
- 练习2-小学生四则运算系统
- 软件工程课堂练习-最高折扣
- 软件工程-构建之法 小学生四则运算的出题程序,android版本