一、设计思想

  之前的版本是用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. VS2012环境设置

    一 先安装水晶报表 开发者和用户两种 YKCW6-BPFPF-BT8C9-7DCTH-QXGWC 保证完美激活!!! 激活码 一般网上的VS版本是使用版 要安装正版才能体验全部功能

  2. 如何防止DDos攻击?

    ---恢复内容开始--- 一.拒绝服务攻击的发展 从拒绝服务攻击诞生到现在已经有了很多的发展,从最初的简单Dos到现在的DDOS.那么什么是Dos和DDOS呢?DoS是一种利用单台计算机的攻击方式.而 ...

  3. 理解inode

    转载:阮一峰 http://www.ruanyifeng.com/blog/2011/12/inode.html 一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最 ...

  4. Mysql 复制工具(percona-toolkit)

    Mysql 复制工具 1.percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检 ...

  5. POJ C程序设计进阶 编程题#1:寻找下标

    编程题#1:寻找下标 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 已知一 ...

  6. datagridview添加复选框全选和取消

    全选 private void All_selected_Click(object sender, EventArgs e) { ; i < this.DataGridViewProduct.R ...

  7. dedecms5.7 联动类型无法显示

    dedecms5.7 联动类型无法显示 问题原因:一般是由于路径问题( 路径缺少分隔符'/' )导致js无法正常加载 如果遇到该类问题,尝试通过firebug工具检查js是否被正确加载. 如果是路径问 ...

  8. App Store最新审核指南(2015年3月更新版)

    苹果近日更新了App Store审核指南的相关章节,对此前版本进行了修改和完善.除了增加应用截图.预览等限制外,使用Apple Pay进行定期付款的应用程序必须展示每个阶段所需款额,费用归属以及如何取 ...

  9. 学一点Git--20分钟git快速上手 [Neil]

    From: http://www.cnblogs.com/shuidao/p/3535299.html (图片已修复)在Git如日中天的今天,不懂git都不好意思跟人说自己是程序猿.你是不是早就跃跃欲 ...

  10. SublimeText插件Emmet的自定义模板

    在前端界,作为快速生成代码的Emmet插件相当给力.最近在学bootstrap,需要频繁生成html头文件,我就想着自定义模板.国内只有基础教程,只好自己读英文文档了. Emmet国内基础教程地址: ...