四则运算之C++版

一、设计思想

  之前的版本是用Java语言实现的,在这次的练习中,我用C++语言将其功能逐一实现,其实C++与Java有很多相似之处,只是一些书写格式不同,思路还是一样的。

二、源代码

 #include<iostream.h>
#include<stdlib.h>
#include<math.h> int random_1(int n)
{
return rand()%n;
}
int random_2(int n1,int n2)//自定义产生两数之间的随机数
{
int temp = ,b = ;
while((temp=rand()%n2)>=n1)//如果产生的随机数大于n1,就将其返回,否则就继续
{
b = temp;
}
if(b==)
b = b + *n1;
return b;
} void jianfa(int a,int b)//因为小学二年级没有学负数,所以相减不能为负数
{
if(a>=b)
cout<<a<<" - "<<b<<" = \t";
else
{
cout<<b<<" - "<<a<<" = \t";
}
}
void chufa(int a,int b)//为了使除法有意义,除数不能为零,
{
if(b>)
cout<<a<<" ÷ "<<b<<" = \t";
//如果除数为零,就将其加上10,再进行运算
else
{
b = b + ;
cout<<a<<" ÷ "<<b<<" = \t";
}
}
char zhenfenshu(int a,int b)//产生真分数的方法
{
if(a<=b)
cout<<a<<"/"<<b;
else
cout<<b<<"/"<<a;
return ;
}
void main()
{
bool flag = true;
while(flag)
{
cout<<"<---小学生二年级课后作业,每天30道四则运算练习--->"<<endl; cout<<"\r\n1、请输入今日想完成的题目数量:"; int num;
cin>>num; cout<<"\r\n2、请选择是否有乘除运算:(有/否:1/0):"; int num1;
cin>>num1; cout<<"\r\n3、请选择是否需要真分数运算:(有/否:1/0):"; int num2;
cin>>num2; cout<<"\r\n4、请输入每行打印的个数:"; int num4;
cin>>num4; cout<<"\r\n5、请选择需要几位数的运算:(请输入大于1的位数,\r\n如不需要定制,输入1,随机产生不大于1000的运算):"; int t,num3;
cin>>t;
num3 = t-; int count = ,d1,d2,k1,k2,k3,k4;//计数器 for (int i=;i<num ;i++ )
{
if(num3==)//如果输入为1,就将随机产生不大于1000的数
{
d1 = random_1();
d2 = random_1();
k1 = random_1();
k2 = random_1();
k3 = random_1();
k4 = random_1();
}
else
{
d1 = random_2((int)pow(,num3),(int)pow(,num3+)-);//自定义的产生随机数
d2 = random_2((int)pow(,num3),(int)pow(,num3+)-);
k1 = random_2((int)pow(,num3),(int)pow(,num3+)-);
k2 = random_2((int)pow(,num3),(int)pow(,num3+)-);
k3 = random_2((int)pow(,num3),(int)pow(,num3+)-);
k4 = random_2((int)pow(,num3),(int)pow(,num3+)-);
} int k = ,r = ;//声明两个变量
if(num1== && num2==)//都没有
{
r = random_1();
if(r%!=)//将产生的奇数随机数取出
k=r;
if(k==)//即使已经将k判断为奇数了,但还是会等于0,所以就再判断一次,如果为0,就将其+1;
++k;
}
else if(num1== && num2==)//没乘除,有分数
k = random_1();
else if(num1== && num2==)//有乘除,没分数
{
r = random_1();
if(r%!=)
k=r;
if(k==)
++k;
}
else//都有
k = random_1();
switch(k)//前两个是加法,2,3是减法,4,5是乘法,6,7是除法
{
case :
cout<<zhenfenshu(k1,k2)<<" + ";
cout<<zhenfenshu(k3,k4)<<" = \t";
break;
case :
cout<<d1<<" + "<<d2<<" = \t";
break;
case :
cout<<zhenfenshu(k1,k2)<<" - ";
cout<<zhenfenshu(k3,k4)<<" = \t";
break;
case :
jianfa(d1,d2);
break;
case :
cout<<zhenfenshu(k1,k2)<<" * ";
cout<<zhenfenshu(k3,k4)<<" = \t";
break;
case :
cout<<d1<<" * "<<d2<<" = \t";
break;
case :
cout<<zhenfenshu(k1,k2)<<" ÷ ";
cout<<zhenfenshu(k3,k4)<<" = \t";
break;
case :
chufa(d1,d2);
break; default:
cout<<"duang,duang,daung";
break;
}
count++;
if(count%num4==)
cout<<endl;
}
cout<<"以上共有:"<<count<<"道题。"<<endl;
int s;
cout<<"是否继续(是1/否0)";
cin>>s;
if(s==)
flag = true;
else
flag = false;
}
}

三、运行结果

(有乘除,没分数)

四则运算之C++版

(乘除,分数都没有)

四则运算之C++版

(没乘除,有分数)

四则运算之C++版

(有乘除,有分数)

四则运算之C++版

四、心得体会

  由于之前使用的是Java语言编写的程序,代码的风格也都是Java语言的风格,但是c++在很多方面也跟Java有相似之处,在改动的过程中疏忽了c++在调用函数的使用,必须要在前面声明函数,否则会报错,还有就是,c++中没有String数据类型,所以要将其改成char类型的。

五、PSP表格

四则运算之C++版

四则运算之C++版

四则运算之C++版

四则运算之C++版

上一篇:vs调试断点进不去的解决办法


下一篇:LeetCode题解-----First Missing Positive