结对项目:代码复审+PSP
一、代码复审
首先我从代码风格规范和程序修改两方面进行审查。
(一)代码风格规范修改###
1 . 代码的部分未缩进:在用markdown粘贴代码时,需要后期tab,无形中加大工作量。
2 . 命名不确切:定义的有a,b,m,n等,在此用英文释义表示,更改为“分子numerator、分母denominator”。
int a,b,m,n; //修改前
char c;
int num1,den1,num2,den2,t;//修改后
char import;
3 . 注释过少:重要的语句并无解释,在此有加入,可移至博文底端附录代码部分。
(二)程序修改###
1 . 选取的分子随机数很可能会大于分母:使分子的取值范围缩小至分母数值内。
den1=rand()%100;
num1=rand()%den1;
den2=rand()%100;
num2=rand()%den2;
2 . 取分母的随机数可能为0:可添加if语句if(den1!=0||den2!=0),保证其取值为真分数时正常出题,再加以else语句,将分子与分母用 t 顺序转换,成为真分数。
switch(import){
if(den1!=0||den2!=0){
case 0:printf("%d+%d=\n",den1,den2);break;
case 1:printf("%d-%d=\n",den1,den2);break;
case 2:printf("%d*%d=\n",den1,den2);break;
case 3:printf("%d/%d=\n",den1,den2);break;
case 4:printf("(%d/%d)+(%d/%d)=\n",num1,den1,num2,den2);break;
case 5:printf("(%d/%d)-(%d/%d)=\n",num1,den1,num2,den2);break;
case 6:printf("(%d/%d)*(%d/%d)=\n",num1,den1,num2,den2);break;
case 7:printf("(%d/%d)/(%d/%d)=\n",num1,den1,num2,den2);break;
}
else{
t=den1;
den1=num1;
num1=t;
t=den2;
den2=num2;
num2=t;
switch(import){
case 0:printf("%d+%d=\n",den1,den2);break;
case 1:printf("%d-%d=\n",den1,den2);break;
case 2:printf("%d*%d=\n",den1,den2);break;
case 3:printf("%d/%d=\n",den1,den2);break;
case 4:printf("(%d/%d)+(%d/%d)=\n",num1,den1,num2,den2);break;
case 5:printf("(%d/%d)-(%d/%d)=\n",num1,den1,num2,den2);break;
case 6:printf("(%d/%d)*(%d/%d)=\n",num1,den1,num2,den2);break;
case 7:printf("(%d/%d)/(%d/%d)=\n",num1,den1,num2,den2);break;
}
}
}
3 .题目形式单一:只有真分数运算,所以我加入了整数与其混合。使用import=rand()%8 语句任取题目。
import=rand()%8;
(三)代码对比
注:修改后的程序,标记为(改)。
修改后代码:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i,j;
printf("请输入题目的数量:");
scanf("%d",&j);
int num1,den1,num2,den2,t;//分子numerator 分母denominator 转换t (改)
char import; //输入的数量
srand((unsigned)time(NULL)); //取随机数
for(i=0;i<j;i++){
den1=rand()%100;
num1=rand()%den1; //保证分子<分母 (改)
den2=rand()%100;
num2=rand()%den2;
import=rand()%8; //任取题目 (改)
switch(import){
if(den1!=0||den2!=0){
case 0:printf("%d+%d=\n",den1,den2);break;
case 1:printf("%d-%d=\n",den1,den2);break;
case 2:printf("%d*%d=\n",den1,den2);break;
case 3:printf("%d/%d=\n",den1,den2);break;
case 4:printf("(%d/%d)+(%d/%d)=\n",num1,den1,num2,den2);break;
case 5:printf("(%d/%d)-(%d/%d)=\n",num1,den1,num2,den2);break;
case 6:printf("(%d/%d)*(%d/%d)=\n",num1,den1,num2,den2);break;
case 7:printf("(%d/%d)/(%d/%d)=\n",num1,den1,num2,den2);break;
}
else{ //保证分子< 分母 (改)
t=den1;
den1=num1;
num1=t;
t=den2;
den2=num2;
num2=t;
switch(import){
case 0:printf("%d+%d=\n",den1,den2);break;
case 1:printf("%d-%d=\n",den1,den2);break;
case 2:printf("%d*%d=\n",den1,den2);break;
case 3:printf("%d/%d=\n",den1,den2);break;
case 4:printf("(%d/%d)+(%d/%d)=\n",num1,den1,num2,den2);break;
case 5:printf("(%d/%d)-(%d/%d)=\n",num1,den1,num2,den2);break;
case 6:printf("(%d/%d)*(%d/%d)=\n",num1,den1,num2,den2);break;
case 7:printf("(%d/%d)/(%d/%d)=\n",num1,den1,num2,den2);break;
}
}
}
}
}
原始代码:
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i,j;
printf("请输入题目的数量:");
scanf("%d",&j);
int a,b,m,n;
char c;
srand((unsigned)time(NULL));
for(i=0;i<j;i++){
a=rand()%100;
b=rand()%100;
m=rand()%100;
n=rand()%100;
c=rand()%4;
switch(c){
case 0:c='+';break;
case 1:c='-';break;
case 2:c='*';break;
case 3:c='/';break;
}
printf("%d/%d%c%d/%d=\n",a,m,c,b,n);
}
}
二、PSP记录个人项目耗时情况
Data | Start | End | Total(min) | Task | Remarks |
2016/3/10 | 11:00 | 11:30 | 30 | 讨论程序需要的模块 | finish |
2016/3/11 | 10:00 | 10:40 | 40 | 对软件的使用者进行需求分析 | finish |
2016/3/11 | 10:40 | 11:10 | 30 | 生成设计文档 | 仅为初稿,在编写过程中会根据实际情况加入新元素 |
2016/3/12 | 13:00 | 15:00 | 120 | 编写程序主要模块 | 不停调试阶段 |
2016/3/13 | 9:00 | 11:00 | 120 | 调试代码至基本功能够运行 | finish |
2016/3/13 | 15:00 | 16:00 | 60 | 优化界面 | 使软件操作流畅 |
2016/3/14 | 9:30 | 10:30 | 60 | 博文总结 | finish |
2016/3/15 | 13:00 | 13:57 | 57 | 规范格式并上传博客 | Markdown |
2016-3-22 1:24:32
结对项目:代码复审+PSP的更多相关文章
- 作业三 代码规范 代码复审 PSP
1.是否需要有代码规范(5分) 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 1这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 反对.我并不认为代码规范都 ...
- 201871030112-贾傲羊 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 课程班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 学习PSP流程并运用于结对项目:学习GitHub代码的管理;学习结对编程的流程与内容 这个作业在哪些方 ...
- 作业三: 代码规范、代码复审、PSP
分) 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 我是个艺术家,手艺人,我有自己的规范和原则. 规范不能 ...
- 作业三:代码规范、代码复审、PSP
一.代码规范 我认为我们编写的代码都需要进行规范的操作,因为如果为了图省事情或者为了减少时间去完成这个编程.在最后检验的时候就会出现一些警告,导致你这次编程的代码出现问题,当出现问题的时候你在回头去检 ...
- 作业三(代码规范、代码复审、PSP)
1.代码规范: 我支持代码要有规范,理由如下. (1).艺术是一个很带有个人风格的学科,天马行空才能凸显出自己的价值.但不要忘了,会艺术的不是生下来就会艺术, 他也需要按照前辈的步骤一步一步的学习基础 ...
- 代码规范、代码复审、PSP
作业三: 代码规范.代码复审.PSP 代码规范 代码规范的重要性 一.规范的代码可以促进团队合作 一个项目大多都是由一个团队来完成,如果没有统一的代码规范,那么每个人的代码必定会风格迥异.且不说会存 ...
- 高级四则运算器—结对项目反思(193 & 105)
高级四则运算器—结对项目反思(193 & 105) 本周我和一位韩国同学(71061105)一起结对编程完成了我们的结对项目——高级的小学四则运算题目生成器. PSP表格 PSP2.1 P ...
- WordCount结对项目
合作者:201631062124,201631062423 代码地址:https://gitee.com/yryx/WordCount 作业地址:https://edu.cnblogs.com/cam ...
- 结对项目-WordCount
结对作业: 成员:201631062115(me),201631062613(partner) 代码地址:https://gitee.com/ackary/WordCount 作业的链接地址:http ...
随机推荐
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(58)-DAL层重构
系列目录 前言:这是对本文系统一次重要的革新,很久就想要重构数据访问层了,数据访问层重复代码太多.主要集中增删该查每个模块都有,所以本次是为封装相同接口方法 如果你想了解怎么重构普通的接口DAL层请查 ...
- 设计模式(三):“花瓶+鲜花”中的装饰者模式(Decorator Pattern)
在前两篇博客中详细的介绍了"策略模式"和“观察者模式”,今天我们就通过花瓶与鲜花的例子来类比一下“装饰模式”(Decorator Pattern).在“装饰模式”中很好的提现了开放 ...
- YYModel 源码解读(二)之NSObject+YYModel.h (5)
好了,之前的博文中详细的解释了一些辅助的类和辅助的函数,接下来就是使用它们来实现酷炫功能的时候,正所谓磨刀不误砍柴工啊 我们先把总的功能罗列出来 1. json转字典 + ( ...
- 软件工程里的UML序列图的概念和总结
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 软件工程的一般开发过程:愿景分析.业务建模,需求分析,健壮性设计,关键设计,最终设计,实现…… 时序图也叫序列图(交互图),属于软件 ...
- RMAN异机恢复快速参考
应用场景:服务器A为正常运行的生产环境,需要在服务器B上部署一套相同环境做测试. 数据库环境:RHEL6.4 + Oracle 11.2.0.4.7 一. 服务器A备份数据库 1.1 在线备份(数据库 ...
- OCP考点实战演练02-日常维护篇
本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练02-日常维护篇 1.数据库体系结构和AS ...
- 读书笔记--SQL必知必会03--排序检索数据
3.1 排序数据 子句(clause) SQL语句由子句构成.一个子句通常由一个关键字加上所提供的数据组成. ORDER BY子句可以取一个或多个列的名字,将SELECT语句检索出的数据进行排序. O ...
- ASP.NET Core 中文文档 第四章 MVC(2.1)模型绑定
原文:Model Binding 作者:Rachel Appel 翻译:娄宇(Lyrics) 校对:许登洋(Seay).何镇汐 模型绑定介绍 ASP.NET Core MVC 中的模型绑定从 HTTP ...
- Eclipse 实用技巧
代码智能提示 Java智能提示 Window -> Preferences -> Java -> Editor -> Content Assist -> Auto Act ...
- jQuery中怎样阻止后绑定事件
你的代码在页面载入过程中已经完成事件绑定了,没有阻止后绑定的事件的办法了,不过可以删除当前指定节点的事件绑定.方法如下:$("#btn").click(function(){if( ...