Homework_4 四则运算 - C#版
题目要求 :http://www.cnblogs.com/gdfhp/p/5311937.html
结对同伴: 姓名:胡仕辉 学号:130201225 博客地址:http://www.cnblogs.com/hushihui666/
实现功能:
1) 题目的数量(个人项目的要求)
2) 数值的范围(个人项目的要求)
3) 题目中最多几个运算符
4) 题目中或运算过程中有无有分数(比如进行整数除法的时候不能除尽)
5) 题目中是否有乘除法
6) 题目中是否有括号
我负责程序构建的算法设计,胡仕辉同学负责窗体和代码生成
主要在之前完成的作业算法上进行改进,附上博客地址:http://www.cnblogs.com/SaltWu/p/5281184.html
合作优点在于可以互相讨论,每个人的想法不一样,有时候卡在一个问题上,同伴一个意见就能帮我拐弯。
合作时的照片:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace 新四则运算
{
public partial class 新四则运算 : Form
{ public 新四则运算()
{
InitializeComponent();
}
char[] ysf = { '+', '-', '*', '%'};
static int GetRandomSeed() //随机数种子,解决随机数一致问题
{
byte[] bytes = new byte[];
System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
rng.GetBytes(bytes);
return BitConverter.ToInt32(bytes, );
}
private void btn_1_Click(object sender, EventArgs e)
{
int n = Convert.ToInt32(this.tbox_n.Text); //获取生成题目数
int r = Convert.ToInt32(this.tbox_r.Text); //获取生成数范围
int ysf = Convert.ToInt32(this.cbox_ysf.Text.ToString()); //获取运算符个数
for(int i = ; i < n; i++) //生成n道题
{
if (ysf == ) //一个运算符
{
ysf1(r);
}
else if (ysf == ) // 两个运算符
{
ysf2(r);
}
else //三个运算符
{
ysf3(r);
}
input(" = ");
input("\n");
input("\n");
}
}
public void ysf1(int r) //一个运算符
{
if(cbox_fs.SelectedItem.ToString() == "是") //包含分数
{
Random rd = new Random(GetRandomSeed());
randnum1(r); //插入随机数,可以是分数
input_ysf(); //插入运算符
randnum1(r);
}
else
{
Random rd = new Random(GetRandomSeed());
randnum(r); //插入整数随机数
input_ysf();
randnum(r);
} }
public void ysf2(int r)
{
Random rd = new Random(GetRandomSeed());
int t = ;
t = rd.Next(); //随机运算符数量,1或2,对零时变量t随机,结果为0,跳至ysf1,结果为1则为ysf2
if (t == )
{
ysf1(r);
}
else
{ if(cbox_kh.SelectedItem.ToString() == "是") //包含括号
{
input_ysf2_kh(r);
}
else
{
input_ysf2(r);
} }
}
public void ysf3(int r)
{
Random rd = new Random(GetRandomSeed());
int t = ;
t = rd.Next(); //随机运算符数量,对零时变量t随机,结果为0,跳至ysf2,结果为1则为ysf3
if (t == )
{
ysf2(r);
}
else
{
if (cbox_kh.SelectedItem.ToString() == "是") //包含括号
{
int m = ;
m = rd.Next(); //对加括号的形式进行随机
if(m == )
{
input_ysf3_kh1(r); //括号形式1
}
else if(m == )
{
input_ysf3_kh2(r); //括号形式2
}
else
{
input_ysf3_kh3(r); //括号形式3
}
}
else
{
input_ysf3(r); //不含括号
}
} }
public void input_ysf()
{
input(" "); //运算符前后空格
Random rd = new Random(GetRandomSeed());
if (cbox_ccf.SelectedItem.ToString() == "是")
{
input(ysf[rd.Next()].ToString());//包含乘除法
}
else
{
input(ysf[rd.Next()].ToString());//不含乘除法
}
input(" ");
}
public void input_ysf2(int r)
{
if(cbox_fs.SelectedItem.ToString() == "是") //判断是否含分数
{
randnum1(r);
input_ysf();
randnum1(r);
input_ysf();
randnum1(r);
}
else
{
randnum(r);
input_ysf();
randnum(r);
input_ysf();
randnum(r);
} }
public void input_ysf2_kh(int r)
{
if (cbox_fs.SelectedItem.ToString() == "是") //含分数
{
input("(");
randnum1(r);
input_ysf();
randnum1(r);
input(")");
input_ysf();
randnum1(r);
}
else
{
input("(");
randnum(r);
input_ysf();
randnum(r);
input(")");
input_ysf();
randnum(r);
} }
public void input_ysf3(int r)
{
if (cbox_fs.SelectedItem.ToString() == "是") //含分数
{
randnum1(r);
input_ysf();
randnum1(r);
input_ysf();
randnum1(r);
input_ysf();
randnum1(r);
}
else
{
randnum(r);
input_ysf();
randnum(r);
input_ysf();
randnum(r);
input_ysf();
randnum(r);
} }
public void input_ysf3_kh1(int r) //带括号形式1
{
if (cbox_fs.SelectedItem.ToString() == "是")
{
input("[");
input("(");
randnum1(r);
input_ysf();
randnum1(r);
input(")");
input_ysf();
randnum1(r);
input("]");
input_ysf();
randnum1(r);
}
else
{
input("[");
input("(");
randnum(r);
input_ysf();
randnum(r);
input(")");
input_ysf();
randnum(r);
input("]");
input_ysf();
randnum(r);
} }
public void input_ysf3_kh2(int r) //带括号形式2
{
if (cbox_fs.SelectedItem.ToString() == "是")
{
randnum1(r);
input_ysf();
input("(");
randnum1(r);
input_ysf();
randnum1(r);
input(")");
input_ysf();
randnum1(r);
}
else
{
randnum(r);
input_ysf();
input("(");
randnum(r);
input_ysf();
randnum(r);
input(")");
input_ysf();
randnum(r);
} }
public void input_ysf3_kh3(int r) //带括号形式3
{
if (cbox_fs.SelectedItem.ToString() == "是")
{
input("(");
randnum1(r);
input_ysf();
randnum1(r);
input(")");
input_ysf();
input("(");
randnum1(r);
input_ysf();
randnum1(r);
input(")");
}
else
{
input("(");
randnum(r);
input_ysf();
randnum(r);
input(")");
input_ysf();
input("(");
randnum(r);
input_ysf();
randnum(r);
input(")");
} }
public void randnum(int r) //对数进行随机,只能是整数
{
Random rd = new Random(GetRandomSeed());
int num;
do
{
num = rd.Next(r + );
} while (num == ); // 随机整数不为 0 input(num.ToString()); }
public void randnum1(int r) //对数进行随机,可为分数
{
int t = ;
Random rd = new Random(GetRandomSeed());
t = rd.Next(); //对零时变量t随机,结果为0,这个数为整数,结果为1则为分数
if (t == )
{
int num;
do
{
num = rd.Next(r + );
} while (num == ); // 随机整数不为 0 input(num.ToString()); }
else
{
randnum2(r);
} } public void randnum2(int r) //分数随机
{
Random rd = new Random(GetRandomSeed());
int x, y; //x为分子,y为分母
do
{
x = rd.Next(r + );
} while (x == ); //分子不为0
do
{
y = rd.Next(r + );
} while (y == || y == x); //分母不为0,且不等于分子 if (x > y) //如果分子比分母大,则对调分子分母位置
{
int t = x;
x = y;
y = t;
}
input(x.ToString());
input("/");
input(y.ToString()); } public void input(string t)
{
tbox_shuchu.AppendText(t);
} private void btn_clc_Click(object sender, EventArgs e)
{
tbox_shuchu.Clear();
}
}
}
程序执行截图:

Homework_4 四则运算 - C#版的更多相关文章
- 结对编程项目——四则运算vs版
结对编程项目--四则运算vs版 1)小伙伴信息: 学号:130201238 赵莹 博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...
- 四则运算GUI版
小学四则运算界面版 李永豪 201421123117 郑靖涛 201421123114 coding 地址:https://git.coding.net/ras/work2.git 一.题目描述 我们 ...
- 四则运算APP版
(一)四则运算APP版 这这个Demo的目的就是强化一下本周学习的Android的Jetpack里的新内容,接下来我将通过这个Demo来展示我所学到的新知识. 先列出新学到的知识:ViewModel, ...
- 实验二 四则运算 完成版 ver.1
package size; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JMenuBar; im ...
- 四则运算(Android)版
实验题目: 将小学四则运算整合成网页版或者是Android版.实现有无余数,减法有无负数.... 设计思路: 由于学到的基础知识不足,只能设计简单的加减乘除,界面设计简单,代码量少,只是达到了入门级的 ...
- 结对编程1.四则运算GUI版
201421123022 王若凡 201421123026 欧阳勇 coding详细代码 a.需求分析: 这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linu ...
- 四则运算----C++版
一.设计思想 因java中已做过,就是简单的将java中的语句调换为C++的语句. 二.代码 #include<iostream.h> #include<Stdlib.h> v ...
- 四则运算web版需求规格说明书
目录 1引言... 4 1.1 目的... 4 1.2 背景... 4 1.3 术语... 4 1.4 预期读者与阅读建议... 5 1.5 参考资料... 6 1.6 需求描述约定... ...
- 四则运算安卓版ver.mk3
在原有的基础上做了些许改动以及添加了一点小功能,以下是代码: package com.example.add; import java.io.File; import com.example.add. ...
随机推荐
- android开发学习笔记001a
Android 应用与开发环境 1.使用SDK版本:Android 2.3 . 2.发展和历史 创始人:Andy Rubin,Android公司被Google收购.07年11月5日1.0发布. 3.平 ...
- cocoapods specs 镜像
在使用cocoapods 进行update 或者 install的时候 每次回去更新获取的pod specs,每次速度都不是很理想,博主最近对github上的specs仓库进行了镜像,分别在gitca ...
- git使用--git命令项目提交问题总结
提交遇到Error "remote ref does not exist"解决办法:git fetch -p MY_REMOTE eg. git fetch -p o ...
- 分享个win平台cocos2d-x创建项目的快捷方式
由于长期使用vs开发,相信使用vs开发的同学们也和我一样,都习惯点击图标然后就新建项目了,不是很适应命令的方式 由于vs2012一般都是win7 win8 win8.1这类系统开发,而这些系统,都是自 ...
- RPLIDAR使用和测试
采购的RPLIDAR刚刚到货,先拆封,内部包括雷达主机.线缆.串口USB转接.USB线. 根据说明在此处下载驱动和SDK,雷达的数据实际是通过串口输出的,所以驱动只是针对串口USB转换芯片CP21 ...
- Quartz.Net与MVC结合定时任务
1.首先,我们打开Visual Studio 2015,创建一个ASP.NET MVC的Web应用程序项目. 2.然后通过程序包管理器控制台来安装Quartz.Net组件. Quartz.Net一个最 ...
- html5 上传头像的裁剪
本示例使用HTML5 canvas,简单的编写了上传头像的裁剪效果,移动端支持拖拽后裁剪, 虽然样式不好看,但是功能还算全: 下图为裁剪后的效果: html部分: <!DOCTYPE html& ...
- C# 通过身份证查询出生日期
private int GetAgeBycode(string b_car_code) { string birthday = ""; //处理18位的身份证号码从号码中得到生日和 ...
- CSS有三种基本的定位机制
CSS有三种基本的定位机制:普通流,浮动和绝对定位. 普通流:在普通流中元素框的位置由元素在html中的位置决定, 1.元素position属性为static或继承来的static时就会按照普通流定位 ...
- oracle 小题
create table student(sno varchar2(10) primary key,sname varchar2(20),sage number(2),ssex varchar2(5) ...