结对项目-四则运算 “软件”之升级版

作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

GitHub远程地址:https://github.com/HJIALIN0/HJL

一、基本要求

从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

        1.自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。

        2.用户可以输入答案

        3.若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

二、扩展方向

  1. 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66(保留两位小数功能实现,不支持出带括号题目)
  2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数(实现)

三、时间记录表

PSP2.1 Personal Software Process Stages 预估时间(h) 实际时间(h)

Planning

计划 10 9
Estimate 估计这个任务需要多少时间 10 15
Development 开发 80 100
Analysis 需求分析 (包括学习新技术) 1 1
Coding Standard 代码规范 2 3
Design 具体设计 6 3
Coding 具体编码 28 36
Code Review 代码复审 4 5
Test 测试(自我测试,修改代码,提交修改) 11 5

 

四、开发环境调试:Visual C++

五、代码呈现

#include<stdio.h>
#include<math.h>
#include<time.h>
#include <stdlib.h>

void yunsuan(void);
float jiafa(float a,float b);
float jianfa(float a,float b);
float chenfa(float a,float b);
float chufa(float a,float b);
float jisuan(int i,float a,float b);
char yunsuanfu(int i);

 

void yunsuan()
{
float answer;
float x,y,z;
int a,b,c;
int j,k;
char op1,op2;
srand((unsigned)time(NULL));//产生随机数
do{

a=rand()%99+1;
b=rand()%99+1;
c=rand()%99+1;
j=rand()%4+1;
k=rand()%4+1;
if(j>1){
y=(float)a;
z=(float)b;
x=jisuan(j,y,z);
y=x;
z=(float)c;
x=jisuan(k,y,z);
}
else
{
if(k<2)
{
y=(float)a;
z=(float)b;
x=jisuan(j,y,z);
y=x;
z=(float)c;
x=jisuan(k,y,z);
}
else
{
y=(float)b;
z=(float)c;
x=jisuan(k,y,z);
y=(float)a;
z=x;
x=jisuan(j,y,z);
}
}
}while(x<0.0);
op1=yunsuanfu(j);
op2=yunsuanfu(k);
printf("%d %c %d %c %d = ",a,op1,b,op2,c);
scanf("%f",&answer);
if(j==3&&k==3)
{
if((answer-x)<0.01)
{
printf("O(∩_∩)O哈哈~~~~答对了,真棒!\n");
}
else
{
printf("o(T﹏T)o呜呜~~~~答错了!\n正确答案是:%.1f\n",x);//结果带有一位小数的
}
}
else
{
if((x-answer)<0.01)
{
printf("O(∩_∩)O哈哈~~~~答对了,真棒!\n");
}
else
{
printf("-o(T﹏T)o呜呜~~~~答错了!\n正确答案是:%.1f\n",x);
}
}

}

 


float jisuan(int i,float a,float b)//产生算术式的函数
{
float x;
switch(i)
{
case 0:
x=jiafa(a,b);
break;
case 1:
x=jianfa(a,b);
break;
case 2:
x=chenfa(a,b);
break;
case 3:
x=chufa(a,b);
break;
default:
break;
}
return x;
}
float jiafa(float a,float b)
{
float x;
x=a+b;
return x;
}
float jianfa(float a,float b)
{
float x;
x=a-b;
return x;
}
float chenfa(float a,float b)
{
float x;
x=a*b;
return x;
}
float chufa(float a,float b)
{
float x;
x=a/b;
return x;
}
char yunsuanfu(int i)
{
char op;
switch(i)
{
case 0:
op='+';
break;
case 1:
op='-';
break;
case 2:
op='*';
break;
default:
op='/';
break;
}
return op;
}

 

void main()
{
int i=0,timushu;//n为用户输入的题目数
printf("---------------------------------------\n\n\n");
printf("*******欢迎来到hjl的四则运算系统*******\n\n\n");
printf("---------------------------------------\n\n\n");
printf("(#^—^#)请输入想要的题目个数:");
scanf("%d",&timushu);
do{
yunsuan();
i++;
}while(i<timushu);
system("pause");
}

 

六、运行结果截图

 

七、总结

本次实验没能充分按照老师的要求,这次实验要求结对进行,由于我的基础知识还不够很多地方都还学习的不够所以暂无结对对象,这次作业也很努力的去做了,但是发现自身方面还是有很多的不足需要去改善学习,所以还是只能用C来做,做得也很简单。主要在算法和设计界面上上面还是有缺陷,和对java的学习的不够,希望通过后期的学习能够补回来,跟上同学们的步伐。

posted @ 2018-10-24 20:48  胡家琳  阅读(200)  评论(2编辑  收藏  举报