第一周软件作业

coding地址:

https://git.coding.net/zzq201421123087/dhsjkfhd.git 

题目:

   从《构建之法》第一章的 “程序” 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”,满足以下需求:
   1.除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
   2.运算符为 +, −, ×, ÷
   3.并且要求能处理用户的输入,并判断对错,打分统计正确率。
   4.要求能处理用户输入的真分数, 如 1/2, 5/12 等
   5.使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
      Myapp.exe -n 10

 

需求分析:
    1.想要自动生成算数题目
    2.要判断答案正确与否
 

功能设计:
    1.自动生成分数或整数(可以由分数约分得到)
    2.自动生成运算符号
    3.可以对分数进行约分1    4.要将用户输入的数字与正确答案比较
    
设计实现:
    思路:由四个随机生成的数组成两个分数,中间用随机生成的符号连接

 代码说明:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(){
char i;
int a,b,c,d,e,f,g,n,m;

printf("1.开始\n");
printf("2.退出软件\n") ;
printf("请选择:\n");
scanf("%d",&e);
if(e==1){
printf("请选择生成题目的数量:\n");
scanf("%d",&f);
srand((unsigned)time(NULL));
for(int g=0;g<f;g++)
{
n=rand()%4;
if(n==0){i='+';}
if(n==1){i='-';}
if(n==2){i='*';}
if(n==3){i='/';}
a=rand()%10+1;
b=rand()%10+1;
c=rand()%10+1;
d=rand()%10+1;
m=rand()%2;
if(m==0){printf("%d%c%d=\n",a,i,b);}
else if(m==1){
if(a<=b&&c<=d)printf("%d/%d%c%d/%d=\n",a,b,i,c,d);
else if(a>b&&c>d) printf("%d/%d%c%d/%d=\n",b,a,i,d,c);
else if(a<=b&&c>d) printf("%d/%d%c%d/%d=\n",a,b,i,d,c);
else if(a>b&&c<=d) printf("%d/%d%c%d/%d=\n",b,a,i,c,d);
}
}
}
if(e==2){
exit(0);
return 0;
}
}

程序测试:

 

PSP:

 

PSP2.1

Personal Software Process Stages

Time (h) Senior Student

Time (h)

Planning

计划

3

3

· Estimate

估计这个任务需要多少时间

80

100

Development

开发

30

40

· Analysis

需求分析 (包括学习新技术)

6

10

· Design Spec

生成设计文档

0

0

· Design Review

设计复审

0

0

· Coding Standard

代码规范

3

3

· Design

具体设计

30

40

· Coding

具体编码

40

60

· Code Review

代码复审

5

10

· Test

测试(自我测试,修改代码,提交修改)

10

10

Reporting

报告

5

5

·

测试报告

3

2

·

计算工作量

2

1

·

并提出过程改进计划

1

3

 

 

 

 

 

小结:
   动手能力有待加强,对于C++语言还是不熟练,需要大量依靠网络资料。对于软件设计,应该先设计然后在进行代码的书写。

 

 

 

 

 

 

 

 

 

 

posted on 2017-03-07 21:13  周男神  阅读(119)  评论(1编辑  收藏  举报