四则运算之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;
}
}
三、运行结果
(有乘除,没分数)
(乘除,分数都没有)
(没乘除,有分数)
(有乘除,有分数)
四、心得体会
由于之前使用的是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 一.题目描述 我们 ...
随机推荐
- 文件服务器迁移—FSMT
www.canway.net/Lists/CanwayOriginalArticels/DispForm.aspx?ID=282
- Spring MVC防御CSRF、XSS和SQL注入攻击
参考: http://www.myhack58.com/Article/html/3/7/2012/36142_6.htm http://blog.csdn.net/jasontome/article ...
- Android WebRTC 音视频开发总结(四)-- webrtc传输模块
在介绍WebRTC通讯之前我们先来看一个P2P视频聊天包括的主要过程,转载请说明出处(博客园RTC.Blacker): 音视频数据采集->编码->发送->接收->解码-> ...
- 开源自己的一个小android项目(美女撕衣服游戏)
这是自己的一个开源自己的一个小android项目(美女撕衣服游戏),也是前6个月开发的,有部分的资源来自网络上的,现在开源出来给大家吧,由于源码比较大,不上传了,我已经上传到源码天堂那个网站那里了,大 ...
- qemu-kvm简单使用
qemu-kvm主要有以下几个选项: -snapshot: 创建快照 -m: 指定内存大小 -smp: 指定处理器个数 -cpu: 指定CPU类型 -name: 设置虚拟机名称 -vnc: 使用vnc ...
- windows下 apache 二级域名相关配置
小编今天给大家总结下 windows 下 apache的二级域名的相关配置 利用.htaccess将域名绑定到子目录 下面就利用本地127.0.0.1进行测试 我们这里以 www.jobs.com 为 ...
- C#连接mysql实例
using System; using System.Configuration; using MySql.Data.MySqlClient; /// <summary> /// Test ...
- wing IDE破解方法
WingIDE是我接触到最好的一款Python编译器了.但其属于商业软件,注册需要一笔不小的费用.因此,这篇简短的文章主要介绍了破解WingIDE的方法.破解软件仅供学习或者教学使用,如果您是商业使用 ...
- 使用RMAN验证备份的有效性
--验证控制文件和参数文件: RMAN> restore validate controlfile; Starting allocated channel: ORA_DISK_1 channel ...
- EMVTag系列14《支付环境响应数据》
1. 选择PSE支付环境响应数据 标签 长度 数据域 存在性 9102 A5 变长 FCI数据专用模板 强制 88 1 目录基本文件的SFI 强制 5F2D 2 首选语言 可选 9F11 1 发卡行代 ...