一、代码复审

       首先我从代码风格规范和程序修改两方面进行审查。

(一)代码风格规范修改###

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的更多相关文章

  1. 作业三 代码规范 代码复审 PSP

    1.是否需要有代码规范(5分) 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 1这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 反对.我并不认为代码规范都 ...

  2. 201871030112-贾傲羊 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 课程班级博客链接 这个作业要求链接 作业要求链接 我的课程学习目标 学习PSP流程并运用于结对项目:学习GitHub代码的管理;学习结对编程的流程与内容 这个作业在哪些方 ...

  3. 作业三: 代码规范、代码复审、PSP

    分) 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 我是个艺术家,手艺人,我有自己的规范和原则. 规范不能 ...

  4. 作业三:代码规范、代码复审、PSP

    一.代码规范 我认为我们编写的代码都需要进行规范的操作,因为如果为了图省事情或者为了减少时间去完成这个编程.在最后检验的时候就会出现一些警告,导致你这次编程的代码出现问题,当出现问题的时候你在回头去检 ...

  5. 作业三(代码规范、代码复审、PSP)

    1.代码规范: 我支持代码要有规范,理由如下. (1).艺术是一个很带有个人风格的学科,天马行空才能凸显出自己的价值.但不要忘了,会艺术的不是生下来就会艺术, 他也需要按照前辈的步骤一步一步的学习基础 ...

  6. 代码规范、代码复审、PSP

    作业三: 代码规范.代码复审.PSP 代码规范 代码规范的重要性 一.规范的代码可以促进团队合作  一个项目大多都是由一个团队来完成,如果没有统一的代码规范,那么每个人的代码必定会风格迥异.且不说会存 ...

  7. 高级四则运算器—结对项目反思(193 & 105)

    高级四则运算器—结对项目反思(193 & 105) 本周我和一位韩国同学(71061105)一起结对编程完成了我们的结对项目——高级的小学四则运算题目生成器. PSP表格   PSP2.1 P ...

  8. WordCount结对项目

    合作者:201631062124,201631062423 代码地址:https://gitee.com/yryx/WordCount 作业地址:https://edu.cnblogs.com/cam ...

  9. 结对项目-WordCount

    结对作业: 成员:201631062115(me),201631062613(partner) 代码地址:https://gitee.com/ackary/WordCount 作业的链接地址:http ...

随机推荐

  1. JavaScript之单例实战

    一.概述 所谓单例模式,顾名思义即一个类只有一个实例. 所以,当我们创建一个实例时,就必须判断其是否已经存在了这个实例,如果已经存在了这个实例,那么就返回这个已经存在的实例,无需再创建一个(单例模式嘛 ...

  2. NSCharacter​Set 使用说明

    NSCharacter​Set 和 NSMutableCharacterSet  用面向对象的方式来表示一组Unicode字符,它经常与NSString及NSScanner组合起来使用,在不同的字符上 ...

  3. 重定向Http status code 303 和 302

    http 302 http 303 Http 302 302是一个普通的重定向代码.直观的看来是,请求者(浏览器或者模拟http请求)发起一个请求,然后服务端重定向到另一个地址.而事实上,服务端仅仅是 ...

  4. Jquery中的bind(),live(),delegate(),on()绑定事件方式

    博客转载为作者:枫上善若水http://www.cnblogs.com/xilipu31/p/4105794.html 前言 因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到d ...

  5. Devexpress GridControl.Export

    private void mnuExportTable_ItemClick_1(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { u ...

  6. shiro实现session共享

    session共享:在多应用系统中,如果使用了负载均衡,用户的请求会被分发到不同的应用中,A应用中的session数据在B应用中是获取不到的,就会带来共享的问题. 假设:用户第一次访问,连接的A服务器 ...

  7. Scala Macros - scalamela 1.x,inline-meta annotations

    在上期讨论中我们介绍了Scala Macros,它可以说是工具库编程人员不可或缺的编程手段,可以实现编译器在编译源代码时对源代码进行的修改.扩展和替换,如此可以对用户屏蔽工具库复杂的内部细节,使他们可 ...

  8. 类型转换和类型相关函数.png

  9. mysql主从之slave-skip-errors和sql_slave_skip_counter

    一般来说,为了保险起见,在主从库维护中,有时候需要跳过某个无法执行的命令,需要在slave处于stop状态下,执行 set global sql_slave_skip_counter=1以跳过命令.但 ...

  10. mybatis hibernate比较

    开发速度: 如果一个项目中用到的复杂的查询基本没有,就是简单的增删该查,这样选择hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不用去写sql语句,但是对于一个大型项目,复杂语 ...