天天看点

作业四 简单四则运算

业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186

github地址:https://github.com/heathenchen/text

一、题目要求:

像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11

扩展要求:

1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。

2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。

二,设计思路:

工具:visual c++

语言:C语言

思路:创建3个随机数和两个随机的运算符(在包含两个运算符的情况下)。比较用户输入的答案和计算出的答案是否相同,用两个变量去记录它答对or答错。用pf函数(用于显示函数信息)来输出相关信息

三 主要代码

x=rand()%100+1;  
    y=rand()%100+1;
    z=rand()%100+1;
    s=Operator();    
    s1=Operator();
    if(s=='-'||s=='/'){
        while(x<y){
    x=rand()%100+1;     
    y=rand()%100+1;
        }
 }
      

printf("\n %d :%d%c%d%c%d=",i+1,a,b,c,z);

scanf("%f",&result);

answer=operation(a,b,s);

if(s=='-'||s=='/'){             //校对函数

while(answer<c||answer<c){

z=rand()%100+1;

}

}

pf(answer,result,z,c);

//产生运算符      
operation(int x,int y,char suiji){float answer;      
switch(suiji){
    case '+': {answer=(float)x+(float)y;break;}
    case '-': {    answer=(float)x-(float)y;break;}
    case '*':{    answer=(float)x*(float)y;break;}
    case '/':{    answer=(float)x/(float)y;break;}
    }
    return answer;

}      

四 结果显示

作业四 简单四则运算

五 主要问题

对于C语言已经生疏,对c语言函数的生命周期和作用于忘记了很多,要通过相关资料才能记得。一开始测试的时候,无论开始多少次,其产生的随机数的结果都是一样的,通过查阅相关资料,发现了是没有把伪随机数变为真随机数,通过函数srand( (unsigned)time( NULL ) );用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型再传给srand函数,即: srand((unsigned) time(&t));。代码命名方面想通过标准的方式去命名代码,但很多英文单词通过翻译表达不了这个变量/常量它所表答的意思,所以还是用了x,y,z等,小数化为分数,我查阅了但没有找到相关资料,希望能够提供相关的资料或demo给我。开始前脑中过了一遍,觉得逻辑方面很简单,但实施起来缺又很多问题,有不少工序也没有做,下面表中时间为0的。

六 时间表(单位为min)

PSP 2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 5 20
 Estimate 估计这个任务要多少时间 120
Development 开发 70 80
Analysis 需求分析(包括学习新技术) 15
 Design Spec 生成设计文档
 Design Review 设计复审
 Coding Standard 代码规范
Design 具体设计 40 30
·Coding 具体编译 50
 Code Review 代码复审
Test 测试(自我测试,修改代码,提交修改)
Reporting 报告
测试报告
计算工作量
并提出过程计划