一、设计思想

  之前的版本是用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;
}
}

三、运行结果

(有乘除,没分数)

(乘除,分数都没有)

(没乘除,有分数)

(有乘除,有分数)

四、心得体会

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

五、PSP表格

四则运算之C++版的更多相关文章

  1. 作业四:个人项目-小学四则运算之JAVA版

    作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186 代码所在的github远程仓库的地址:https://git ...

  2. 四则运算web最终版

    经过若干时间的奋战,终于完成了web版四则运算程序.团队成员:井小普.张贺. 设计思想: 在之前的程序基础上两人结合开发web系统. 首先,进行登录注册界面的编写,不同用户,对应不同的错题库,答题记录 ...

  3. java小学生四则运算带面板版 但我不知道为什么同类变量却进不了动作监听中去

    ---恢复内容开始--- package yun; import java.util.*; import java.awt.*; import java.awt.event.ActionEvent; ...

  4. 四则运算(Android版)

    MainActivity: package com.example.demon; import android.os.Bundle; import android.app.Activity; impo ...

  5. 本周PSP+历年作品评论

    本周PSP 类别 内容 开始时间 结束时间 间断时间 净时间(min) 9月11号 看书 构建之法 19:00 21:00 14 106 9月12号 写程序 词频统计多需求版 8:00 14:23 3 ...

  6. 2017-2018-1 JaWorld 第三周作业

    2017-2018-1 JaWorld 第三周作业 团队展示 队员学号 队名 团队项目描述 队员风采 团队的特色 团队合照 团队初步合作 前两周的反思与总结 需要改进的地方 团队选题 *采访老师或有开 ...

  7. 结对编程项目——四则运算vs版

    结对编程项目--四则运算vs版 1)小伙伴信息:        学号:130201238 赵莹        博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...

  8. 四则运算(Android)版

    实验题目: 将小学四则运算整合成网页版或者是Android版.实现有无余数,减法有无负数.... 设计思路: 由于学到的基础知识不足,只能设计简单的加减乘除,界面设计简单,代码量少,只是达到了入门级的 ...

  9. 四则运算GUI版

    小学四则运算界面版 李永豪 201421123117 郑靖涛 201421123114 coding 地址:https://git.coding.net/ras/work2.git 一.题目描述 我们 ...

随机推荐

  1. 1028 C语言文法

    <程序> ->  <外部声明> |  <程序>  <外部声明> <外部声明>  ->   <函数定义>  |  &l ...

  2. Web发布 未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的...

    因为

  3. javaSE第十三天

    第十三天    76 1. StringBuffer(掌握)    76 (1)说明:    77 (2)StringBuffer的构造方法    77 (3)StringBuffer的常见功能    ...

  4. luigi学习4-构建工作流

    luigi提供了两个基本单元来构造一个工作流,这两个基本单元分别是Task和Target.这两个单元都是抽象类,我们实现他们中的某些方法就可以了.除了这两个基本单元,还有一个重要的概念是Pramete ...

  5. decode行转列,case when,

    1.行转列 转之前:

  6. 合并果子 (codevs 1063) 题解

    [问题描述] 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和 ...

  7. windows下文件名非法字符

    / \ : * ? " < > | / \如果用作文件名,会产生路径问题.因为绝对路径用 \ ; 相对路径用  / ;

  8. Ubuntu kylin系统改中文系统文件名为英文

    刚装好系统,将使用语言改成了中文,结果重启后,提示是否将文件系统的名字改为新的,我一不注意,点了是...这样,在以后使用终端的时候,会有中文来干扰,所以需要改回英文. 方法如下: 输入两个命令即可: ...

  9. 相比于汇编语言的准确性c语言延时精确度如何提升

    只要合理的运用,C还是可以达到意想不到的效果.很多朋友抱怨C效率比汇编差了很多,其实如果对Keil C的编译原理有一个较深入的理解,是可以通过恰当的语法运用,让生成的C代码达到最优化.即使这看起来不大 ...

  10. 17.python自定义函数

    什么是函数,函数说白了就是将一系列代码封装起来,实现代码的重用. 什么是代码重用? 假设我有这样的需求: 但是我还是觉得太麻烦了,每次想吃饭的时候都要重复这样的步骤.此时,我希望有这样的机器: