软件工程课堂练习四则运算续篇
2015-03-14 13:45
337 查看
一、设计思想
根据题目的新要求我做了以下更改
1.为使用户可定制数量以及打印方式,可使用户输入打印方式、数量的参数来进行设置
2.参数设置:提示用户是否有乘除法运算,是/否用户可输入【1/0】表示。
提示用户是否有负数参与运算;
提示用户参与运算的数值范围;
提示用户输入出多少道题目;
提示用户输入题目输出列数;
二、源代码
三、运行结果
四、心得体会
这次的四则运算出题系统是上一次的扩展,其实还有很多功能没能实现,是否支持小数(有效数值是多少位),是否支持有括号运算等等;
这次的程序写的很简单,把所有的功能都写在一个函数中了,没有分模块处理,因为我之前是利用的多个函数但涉及到传参问题,而我对他实在是没有办法,整理半天没整明白,所以最后只能用自己绝得简单的方法实现这个问题了
编程过程中也有出现过很多错误,如
1.在输出所有题目和列数时,把for语句的循环条件弄错,导致每一列输出了总题数
2.马虎大意漏写;号
3.if后面条件写错
五、psp0级相关日志
1.项目计划日志
周活动总结表
姓名:曹美娜 日期:2015.03.15
阶段时间和效率 周数(上一次周活动总结表的周数+1):1
不包括上一周在内的累计时间
以前个周的累计时间
2.时间记录日志
时间记录日志
学生 曹美娜 日期 2015.03.10
教师 王建民 课程 软件工程
3.缺陷记录表
缺陷记录日志
学 生 曹美娜
日 期 2015.03.10
教 员 王建民
程序号
根据题目的新要求我做了以下更改
1.为使用户可定制数量以及打印方式,可使用户输入打印方式、数量的参数来进行设置
2.参数设置:提示用户是否有乘除法运算,是/否用户可输入【1/0】表示。
提示用户是否有负数参与运算;
提示用户参与运算的数值范围;
提示用户输入出多少道题目;
提示用户输入题目输出列数;
二、源代码
#include "stdafx.h" #include "stdio.h" #include "time.h" #include "stdlib.h" //随机器函数头文件 void print() { int num,numvalue,judear,judemd,linenum; //变量含义分别为出题数目、数值范围、判断有无负数、判断有无乘除、输出列数 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); } switch(judemd) { case 0:{ int x,y; if(judear==0){ srand((int)time(0)); for(int i=1;i<=num/linenum;i++) //出题数量 { for(int j=1;j<=linenum;j++) //控制出题列数 { int a=rand()%numvalue; int b=rand()%numvalue; x=1+rand()%10; //随机产生10种类型的题目 switch (x) { case 1: { printf("%d+%d=\t",a,b); if(j%linenum==0) printf("\n"); break; } case 2: { printf("%d-%d=\t",a,b); if(j%linenum==0) printf("\n"); break; } case 3: { printf("-%d+%d=\t",a,b); if(j%linenum==0) printf("\n"); break; } case 4: { printf("%d+(-%d)=\t",a,b); if(j%linenum==0) printf("\n"); break; } case 5: { printf("-%d+(-%d)=\t",a,b); if(j%linenum==0) printf("\n"); break; } case 6: { printf("-%d-%d=\t",a,b); if(j%linenum==0) printf("\n"); break; } case 7: { printf("%d-(-%d)=\t",a,b); if(j%linenum==0) printf("\n"); break; } case 8: { printf("-%d-(-%d)=\t",a,b); if(j%linenum==0) printf("\n"); break; } case 9: { printf("%d*%d=\t",a,b); if(j%linenum==0) printf("\n"); break;} case 10: { if (b!=0) {printf("%d/%d=\t",a,b); if(j%linenum==0) printf("\n");} else { b=b+1; printf("%d/%d=\t",a,b); if(j%linenum==0) printf("\n"); } break; } default:{"输出有误!";} } } } } else if(judear==1) { srand((int)time(0)); for(int i=1;i<=num/linenum;i++) { for(int j=1;j<=linenum;j++){ //控制出题列数 int a=rand()%100; int b=rand()%100; y=1+rand()%4; //随机产生四种不同的题目 switch (y) { case 1: { printf("%d+%d= \t",a,b); if(j%linenum==0) printf("\n"); break; } case 2: { printf("%d-%d= \t",a,b); if(j%linenum==0) printf("\n"); break; } case 3: { printf("%d*%d= \t",a,b); if(j%linenum==0) printf("\n"); break; } case 4: { if (b!=0) {printf("%d/%d= \t",a,b); if(j%linenum==0) printf("\n");} else { b=b+1; printf("%d/%d= \t",a,b); if(j%linenum==0) printf("\n"); } break; } default:{"输出有误!";} } } } } else printf("出错!"); break; default:{printf("出错!");} } case 1:{ int q,w; if(judear==0) { srand((int)time(0)); for(int i=1;i<=num/linenum;i++) { for(int j=1;j<=linenum;j++){ //控制出题列数 int a=rand()%100; int b=rand()%100; q=1+rand()%8; //随机产生8种不同的题型 switch (q) { case 1: { printf("%d+%d= \t",a,b); if(j%linenum==0) printf("\n"); break; } case 2: { printf("%d-%d= \t",a,b); if(j%linenum==0) printf("\n"); break; } case 3: { printf("-%d+%d= \t",a,b); if(j%linenum==0) printf("\n"); break;} case 4: { printf("%d+(-%d)= \t",a,b); if(j%linenum==0) printf("\n"); break;} case 5: { printf("-%d+(-%d)=\t",a,b); if(j%linenum==0) printf("\n"); break;} case 6: { printf("-%d-%d= \t",a,b); if(j%linenum==0) printf("\n"); break; } case 7: { printf("%d-(-%d)= \t",a,b); if(j%linenum==0) printf("\n"); break; } case 8: { printf("-%d-(-%d)=\t",a,b); if(j%linenum==0) printf("\n"); break; } default:{"输出有误!";} } } } } else if(judear==1) { srand((int)time(0)); for(int i=1;i<=num/linenum;i++) { for(int j=1;j<=linenum;j++){ //控制出题列数 int a=rand()%100; int b=rand()%100; w=1+rand()%2; //随机产生2种不同的题型 switch (w) { case 1: { printf("%d+%d= \t",a,b); if(j%linenum==0) printf("\n"); break; } case 2: { printf("%d-%d= \t",a,b); if(j%linenum==0) printf("\n"); break; } default:{"输出有误!";} } } } } else printf("出错!"); } } } int main(int argc, char* argv[]) { printf(" 四则运算出题系统 \n"); print(); return 0; }
三、运行结果
四、心得体会
这次的四则运算出题系统是上一次的扩展,其实还有很多功能没能实现,是否支持小数(有效数值是多少位),是否支持有括号运算等等;
这次的程序写的很简单,把所有的功能都写在一个函数中了,没有分模块处理,因为我之前是利用的多个函数但涉及到传参问题,而我对他实在是没有办法,整理半天没整明白,所以最后只能用自己绝得简单的方法实现这个问题了
编程过程中也有出现过很多错误,如
1.在输出所有题目和列数时,把for语句的循环条件弄错,导致每一列输出了总题数
2.马虎大意漏写;号
3.if后面条件写错
五、psp0级相关日志
1.项目计划日志
周活动总结表
姓名:曹美娜 日期:2015.03.15
日期/任务 | 听课 | 编写程序 | 阅读课本 | 准备考试 | 日总计 | ||
周二 3.10 | 200 | 30 | 230 | ||||
周三 3.11 | 100 | 65 | 45 | 210 | |||
周四 | 200 | 102 | 302 | ||||
周五 | 200 | 73 | 50 | 323 | |||
周六 | 120 | 120 | |||||
周日 3.15 | 120 | 120 | |||||
周总计 | 700 | 240 | 365 | 1305 |
不包括上一周在内的累计时间
总计 | |||||||
平均 | |||||||
最大 | |||||||
最小 |
总计 | 800 | 300 | 150 | 60 | 1310 | ||
平均 | 800 | 300 | 150 | 60 | 1310 | ||
最大 | 800 | 300 | 150 | 60 | 1310 | ||
最小 | 800 | 300 | 150 | 60 | 1310 |
时间记录日志
学生 曹美娜 日期 2015.03.10
教师 王建民 课程 软件工程
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3/10 | ||||||
3/11 | 16:20 | 17:40 | 15分钟 | 65 | 编写四则运算程序 | 中间电话插入 |
3/12 | 16:45 | 18:27 | 102 | 编程 | ||
19:30 | 21:30 | 120 | 自习 | |||
3/13 | 15:23 | 16:36 | 73 | 编程 | ||
3/15 | 9:10 | 11:00 | 110 | 看书 |
缺陷记录日志
学 生 曹美娜
日 期 2015.03.10
教 员 王建民
程序号
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复时间 | 修复缺陷 |
3/10 | ||||||
3/11 | 0 | 编程 | 编译 | 3分钟 | ||
漏掉“;” | ||||||
3/12 | 1 | 编程 | 5分钟 | |||
For循环条件出错 | ||||||
3/13 | 2 | 编程 | 2分钟 | |||
If语句条件错误 |
相关文章推荐
- 软件工程课堂练习--四则运算(三)
- 软件工程--课堂练习之四则运算之续编
- 软件工程课堂练习--结对开发
- 软件工程课堂练习——找出1-n中1出现的个数
- 软件工程课堂练习&课下作业
- 软件工程课堂练习-随机生成30道四则运算练习题
- 软件工程课堂练习--找出“水王”
- 软件工程课堂练习购买图书
- 软件工程个人作业4(课堂练习&&课堂作业)
- 软件工程课堂作业(一)——随机产生四则运算题目(C++)
- 软件工程课堂作业(二)——升级版随机产生四则运算题目设计思想
- 软件工程课堂练习-最高折扣
- 软件工程课堂练习——求买书最低价格
- 软件工程课堂练习 图书折扣问题
- 软件工程课堂作业(五)——终极版随机产生四则运算题目(C++)
- 软件工程课堂练习——N层电梯只停一层求乘客爬楼层数最少(基本方法+优化方法)
- 软件工程课堂练习---二维数组子数组和的最大值,连续就好
- 软件工程课堂练习1
- 3月13号周五课堂练习:对四则运算二进行测试(选择一个条件)
- 3月06号周五课堂练习:随机产生30个思则运算的题目