题目:
简单的四则运算实现
需求分析:
基本功能:随机产生两个正整数进行简单的加、减、乘、除运算。
设计
- 可以选择退出答题或继续答题;
- 如果回答输入错误有提示并可以再次输入,再次输入不正确,自动给出正确答案;
- 统计回答题数的正确量。
代码实现
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<time.h>
static int i=0,j=0;
char biankuang() //定义界面函数
{
for(int l=0;l<30;l++)
cout<<setw(12)<<"";
return 0;
}
void jiafa(int m) //定义加法运算函数
{
int a,b;
srand(time(0));
a=rand()%100; //随机产生一个0--99的数
b=rand()%100;//随机产生一个0--99的数
cout<<a<<"+"<<b<<endl;
cout<<"请输入运算结果:";
cin>>m;
cout<<endl;
if(m==a+b)
{
cout<<"恭喜你答对了!"<<endl;
i++;
}
else
{
cout<<"您答案错误,请重新输入:"; //有两次作答机会
cin>>m;
cout<<endl;
if(m==a+b)
{
cout<<"恭喜你答对了"<<endl;
i++;
}
else
{
cout<<"继续努力,正确答案是:"<<a+b<<endl;//给出正确答案
j++;
}
}
}
void jianfa(int m) //定义减法运算函数
{
int a,b,t;
srand(time(0));
a=rand()%100; //随机产生一个0--99的数
b=rand()%99+1; //随机产生一个1--99的数
if(a<b) //调整a为较大值,使运算结果不为负数
{
t=a;
a=b;
b=t;
}
cout<<a<<"-"<<b<<endl;
cout<<"请输入运算结果:";
cin>>m;
cout<<endl;
if(m==a-b)
{
cout<<"恭喜你答对了!"<<endl;
i++;
}
else
{
cout<<"您答案错误,请重新输入:"; //有两次作答机会
cin>>m;
cout<<endl;
if(m==a-b)
{
cout<<"恭喜你答对了"<<endl;
i++;
}
else
{
cout<<"继续努力,正确答案是:"<<a-b<<endl;//给出正确答案
j++;
}
}
}
void chengfa(int m) //定义乘法运算函数
{
int a,b;
srand(time(0));
a=rand()%100; //随机产生一个0--99的数
b=rand()%100; //随机产生一个0--99的数
cout<<a<<"*"<<b<<endl;
cout<<"请输入运算结果:";
cin>>m;
cout<<endl;
if(m==a*b)
{
cout<<"恭喜你答对了!"<<endl;
i++;
}
else
{
cout<<"您答案错误,请重新输入:"; //有两次作答机会
cin>>m;
cout<<endl;
if(m==a*b)
{
cout<<"恭喜你答对了"<<endl;
i++;
}
else
{
cout<<"继续努力,正确答案是:"<<a*b<<endl;//给出正确答案
j++;
}
}
}
void chufa(int m) //定义除法运算函数
{
int a,b,t;
srand(time(0));
a=rand()%100; //随机产生一个0--99的数
b=rand()%100; //随机产生一个0--99的数
if(b==0) //使分母不为0
{
while(b==0)
b=rand()%100;
}
if(a<b) //调整a为较大值
{
t=a;
a=b;
b=t;
}
while(a%b!=0) //使a能被b整除
{
a=rand()%100;
b=rand()%100;
}
cout<<a<<"/"<<b<<endl;
cout<<"请输入运算结果:";
cin>>m;
cout<<endl;
if(m==a/b)
{
cout<<"恭喜你答对了!"<<endl;
i++;
}
else
{
cout<<"您答案错误,请重新输入:";//有两次作答机会
cin>>m;
cout<<endl;
if(m==a/b)
{
cout<<"恭喜你答对了"<<endl;
i++;
}
else
{
cout<<"继续努力,正确答案是:"<<a/b<<endl;//给出正确答案
j++;
}
}
}
void main()
{
int s,t,m;
cout<<biankuang()<<endl;
cout<<setw(16)<<"*"<<setw(10)<<" 您好!欢迎进入简单四则运算考试系统"<<setw(6)<<"*"<<endl;
cout<<setw(12)<<biankuang()<<endl;
cout<<setw(20)<<"*"<<" 选择1进入考试系统"<<setw(12)<<"*"<<endl;
cout<<setw(20)<<"*"<<" 选择2退出考试系统"<<setw(12)<<"*"<<endl;
cout<<setw(16)<<"*"<<" 请选择!温馨提示:选择之后按<回车>结束"<<setw(5)<<"*"<<endl;
cout<<biankuang()<<endl; //系统开始时的主界面;
cin>>s;cout<<endl;
while(s==1) //使考试系统能循环进行
{
cout<<"您好!请回答第"<<i+j+1<<"题:";
srand(time(0));
t=rand()%100;
if(t<25)
jiafa(m); //进行加法运算
else if(t>=25&&t<50)//进行减法运算
jianfa(m);
else if(t>=50&&t<75)//进行乘法运算
chengfa(m);
else //进行除法运算
chufa(m);
cout<<"选择1进入继续答题"<<endl<<"选择2退出考试系统";
cout<<endl<<"请选择:"<<endl;
cin>>s;
}
cout<<"您回答正确的个数是:"<<i<<endl; //统计出回答正确的个数
cout<<"您回答错误的个数是:"<<j<<endl; //统计出回答错误的个数
cout<<biankuang()<<endl;
cout<<setw(20)<<"#"<<" 谢谢使用!再见!"<<setw(12)<<"#"<<endl;
cout<<setw(12)<<biankuang()<<endl;
cout<<biankuang()<<endl; //系统开始时的主界面;
}
程序截图
分析与总结
- PSP耗时统计
步骤 |
所需时间 |
每个环节消耗时间的百分比(%) |
需求分析 |
1 |
5.3 |
设计 |
3 |
15.7 |
代码实现 |
12 |
63.1 |
分析 |
2 |
10.6 |
总结 |
1. |
5.3 |
总时间 |
19 |
100 |
- 分析
在需求分析、设计中,考虑尽可能的简单化。在编写代码中遇到一些困难,这也是在编写程序中最大的问题,比如二次输入怎么嵌套进去、主函数的编写,在上网查阅相关资料和参考周欣老师给出的《四则运算改进版》后,在自己重复编写,最终得出。
- 总结
编写代码,首先要有一个好的分析设计,设计一个好的想法,这样会在代码实现中节约时间,做出来的东西也较好,合理安排各坏节所用时间,还有多动手,反复去操作,这也是编写程序中主要的。我个人编程能力不好,在设计一个方案出来后,在编写过程中,遇到不会的问一下同学,查阅资料,最终完成此次作业。此后应该多学习如何编程。