计算机与软件工程 第二次作业

作业一

1.预习 阅读讲义<https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html >第二部分内容 2.个人开发技术
2.个人程序(本作业内容来源于网址:https://www.cnblogs.com/xinz/p/7417960.html,与 <https://www.cnblogs.com/jiel/p/4810756.html >)像《构建之法》的 人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。 可以使用C,C++,或者C#等语言实现。
分别能够实现小学一、二、三、四、五年级的四则运算要求, 逐步实现各个年级的难度
要求能够通过输入来选择不同年级,每个年级还得区分难,中,易三个等级
对于三、四、五年级需要支持括号与多个运算符
程序支持判断对错及累计得分与时间
一次可以出100道题目,而且不能重复(比如2+3 与 3+2 算重复的)
充分发挥想象增加满足小学生数学检测需要的功能

代码

include
using namespace std;

class Calcution{
public:
Calcution();
char getSignal();
void addsub(int n);
void muldiv(int n);
void decial(int n);
void fraction(int n);
void mixed(int n);
void Gradeone(int n);
void Gradetwo(int n);
void Gradethree(int n);
void Gradefour(int n);
void Gradefive(int n);
private:
int n;
};

Calcution::Calcution():n(0){};

//随机获得运算符
char Calcution::getSignal(){
char signal[]={'+','-','*','/'};
srand((unsigned)time(NULL));
return signal[rand()%4];
}

//整数加减
void Calcution::addsub(int n){
int a,b,c;
a=rand()%n+1;
b=rand()%n+1;
if(a+b>=n){
a=rand()%n+1;
b=rand()%n+1;
}
c=rand()%2;
switch(c){
case(0):
cout<<a<<"+"<<b<<"="<<endl;break;
case(1):
if(a<b){
int tmp=0;
tmp=a;
a=b;
b=tmp;
cout<<a<<"-"<<b<<"="<<endl;break;
}
}
}

//整数乘除
void Calcution::muldiv(int n){
int a,b,c;
a=rand()%n+1;
b=rand()%n+1;
if(ab>=n){
a=rand()%n+1;
b=rand()%n+1;
}
c=rand()%2;
switch(c){
case(0):
cout<<a<<"
"<<b<<"="<<endl;break;
case(1):
if(b==0){
b=rand()%n;
}
cout<<a<<"÷"<<b<<"="<<endl;break;
}
}

//小数加减乘除
void Calcution::decial(int n){
double a,b;
a=(double)(rand()%n+1)/1000;
b=(double)(rand()%n+1)/1000;
cout<<a<<getSignal()<<b<<"="<<endl;
}

//分数加减乘除
void Calcution::fraction(int n){
int mole1,deno1,mole2,deno2;
mole1=rand()%10;
deno1=rand()%10+1;
mole2=rand()%10;
deno2=rand()%10+1;
//a=rand()%4;
while(mole1>deno1 || mole2>deno2){
mole1=rand()%10;
deno1=rand()%10;
mole2=rand()%10;
deno2=rand()%10;
}
cout<<mole1<<"/"<<deno1<<getSignal()<<mole2<<"/"<<deno2<<"="<<endl;
}

void Calcution::mixed(int n){
int a,b,c,d;
a=rand()%n+1;
b=rand()%n+1;
c=rand()%n+1;
d=rand()%2;
if(d0)
cout<<"("<<a<<getSignal()<<b<<")"<<getSignal()<<c<<"="<<endl;
if(d
1)
cout<<a<<getSignal()<<"("<<b<<getSignal()<<c<<")"<<"="<<endl;
}

//一年级加减法,难中易分别对应100,50,10以内的运算
void Calcution::Gradeone(int n){
for(int i=0;i<100;i++){
addsub(n);
}
}

//二年级在一年级的基础上加入乘除法,难中易分别对应100,50,10以内的运算
void Calcution::Gradetwo(int n){
for(int i=0;i<100;i++){
int a=rand()%3;
if(a0)
addsub(n);
if(a
1 || a==2)
muldiv(n);
}
}

//三年级在一二年级的基础上加入分数,难中易分别对应100,50,10以内的运算
void Calcution::Gradethree(int n){
for(int i=0;i<100;i++){
int a=rand()%4;
if(a0)
addsub(n);
if(a
1)
muldiv(n);
if(a2 || a3)
fraction(n);
}
}

//四年级在一二三年级基础上加入分数计算,难中易分别对应100,50,10以内的运算
void Calcution::Gradefour(int n){
for(int i=0;i<100;i++){
int a=rand()%5;
if(a0)
addsub(n);
if(a
1)
muldiv(n);
if(a2)
fraction(n);
if(a
3 || a==4)
decial(n);
}
}

//五年级在一二三四年级基础上加入混合运算,难中易分别对应100,50,10以内的运算
void Calcution::Gradefive(int n){
for(int i=0;i<100;i++){
int a=rand()%6;
if(a0)
addsub(n);
if(a
1)
muldiv(n);
if(a2)
decial(n);
if(a
3)
fraction(n);
if(a4 || a5)
mixed(n);
}
}

int main(){
Calcution cal;
int a;
cout<<"请输入年级:1~5年级 (输入对应的年级数即可)"<<endl;
cin>>a;
switch(a){
case(1):
int o;
cout<<"请选择难度: 1、易 2、中 3、难 (输入前面数字)"<<endl;
cin>>o;
if(o1)
cal.Gradeone(10);
if(o
2)
cal.Gradeone(50);
if(o3)
cal.Gradeone(100);
break;
case(2):
int t;
cout<<"请选择难度: 1、易 2、中 3、难(输入前面数字)"<<endl;
cin>>t;
if(t
1)
cal.Gradetwo(10);
if(t2)
cal.Gradetwo(50);
if(t
3)
cal.Gradetwo(100);
break;
case(3):
int h;
cout<<"请选择难度: 1、易 2、中 3、难(输入前面数字)"<<endl;
cin>>h;
if(h1)
cal.Gradethree(10);
if(h
2)
cal.Gradethree(50);
if(h3)
cal.Gradethree(100);
break;
case(4):
int f;
cout<<"请选择难度: 1、易 2、中 3、难(输入前面数字)"<<endl;
cin>>f;
if(f
1)
cal.Gradefour(10);
if(f2)
cal.Gradefour(50);
if(f
3)
cal.Gradefour(100);
break;
case(5):
int v;
cout<<"请选择难度: 1、易 2、中 3、难(输入前面数字)"<<endl;
cin>>v;
if(v1)
cal.Gradefive(10);
if(v
2)
cal.Gradefive(50);
if(v==3)
cal.Gradefive(100);
break;
}
return 0;
}

作业二

连接库的时候,公钥输入地址后一直循环报错 然后出现问题 库无法连接

posted @ 2020-03-03 14:24  懒猫丶  阅读(182)  评论(0编辑  收藏  举报