一、设计思想
之前的版本是用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++版的更多相关文章
-
作业四:个人项目-小学四则运算之JAVA版
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186 代码所在的github远程仓库的地址:https://git ...
-
四则运算web最终版
经过若干时间的奋战,终于完成了web版四则运算程序.团队成员:井小普.张贺. 设计思想: 在之前的程序基础上两人结合开发web系统. 首先,进行登录注册界面的编写,不同用户,对应不同的错题库,答题记录 ...
-
java小学生四则运算带面板版 但我不知道为什么同类变量却进不了动作监听中去
---恢复内容开始--- package yun; import java.util.*; import java.awt.*; import java.awt.event.ActionEvent; ...
-
四则运算(Android版)
MainActivity: package com.example.demon; import android.os.Bundle; import android.app.Activity; impo ...
-
本周PSP+历年作品评论
本周PSP 类别 内容 开始时间 结束时间 间断时间 净时间(min) 9月11号 看书 构建之法 19:00 21:00 14 106 9月12号 写程序 词频统计多需求版 8:00 14:23 3 ...
-
2017-2018-1 JaWorld 第三周作业
2017-2018-1 JaWorld 第三周作业 团队展示 队员学号 队名 团队项目描述 队员风采 团队的特色 团队合照 团队初步合作 前两周的反思与总结 需要改进的地方 团队选题 *采访老师或有开 ...
-
结对编程项目——四则运算vs版
结对编程项目--四则运算vs版 1)小伙伴信息: 学号:130201238 赵莹 博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...
-
四则运算(Android)版
实验题目: 将小学四则运算整合成网页版或者是Android版.实现有无余数,减法有无负数.... 设计思路: 由于学到的基础知识不足,只能设计简单的加减乘除,界面设计简单,代码量少,只是达到了入门级的 ...
-
四则运算GUI版
小学四则运算界面版 李永豪 201421123117 郑靖涛 201421123114 coding 地址:https://git.coding.net/ras/work2.git 一.题目描述 我们 ...
随机推荐
-
Docker知识-1
[编者的话]本文用图文并茂的方式介绍了容器.镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker. 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(co ...
-
GCD详解
什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像 NSOperationQueue,他们都允 ...
-
TabLayout
效果图: 标题和fragment联动效果已经封装好了,非常方便 <android.support.design.widget.TabLayout android:id="@+id/ta ...
-
Eclipse工具使用技巧总结
首先推荐一篇非常好的How to use eclipse文章 ,讲的是eclipse使用的方方面面,非常实用,推荐给大家! 一.常用快捷键:Ctrl+F11 运行Ctrl+Shift+/ 在代码窗口中 ...
-
关于VS2008中的targetver.h文件
targerver.h文件的作用: 定义程序运行的环境,如限制程序只能在XP下运行,限制程序在只能在Vin7下运行 或限制程序只能在XP以上系统运行,或限制程序只能在Server2003以上系统运行. ...
-
css3选择器总结--强大如jquery
最近发现,阿里的笔试考了许多css3的知识,像query media.box-flex等等.主要是移动浏览器的开发,让html5和css3如虎添翼,再也不用担心兼容了.so总结一下css3的选择器: ...
-
(转)Ubuntu 12.04 中安装和配置 Java JDK
http://www.cnblogs.com/bluestorm/archive/2012/05/10/2493592.html 先去 Oracle下载Linux下的JDK压缩包,我下载的是jdk-7 ...
-
如何获取隔壁wifi密码,非暴力破解
目前常见的Wi-Fi加密方式有WEP.WPA2和WPS(链接为各自的破解方式),不过有网友反映以往破解WPA2的方法耗时太长,而且不适用于所有WPS启动的接入点.而今天介绍的这种方法则更加省时省力. ...
-
MVC视图之间调用方法总结
调用视图方式有两种: 一:直接调用(不通过controller) <body> @Html.Partial("../Shared/Error"); </body& ...
-
Radius报文解析
RADIUS ,是远程认证拨号用户服务的简称.RADIUS原先设计的目的是为拨号用户进行认证和计费.后来经过多次改进,形成了一项通用的认证计费协议,主要完成在网络接入设备和认证服务器之间承载认证.授权 ...