小学生除法

这次老师让我们写一个小学生100以内四则运算的程序,同时还要支持真分数的运算。

对这道题写程序前我的主要思路如下:

1、数字和符号都要是随机生成的,主要用到随机数生成函数srand()和rand()这两个函数来生成随机数。其中运算数是100以内的,符号是4种情况。

2、其中除法运算中除数不能为零要做出判断。对于真分数来说,其分母也不可为零。

3、减法运算中被减数一定要大于减数,因为对于小学生来说不会计算负数。

4、对于真分数有一点特别的,随机生成的分子和分母有可能可以约分。所以我们每次都要先计算分子和分母的最大公约数,再所以最大公约数,得到最简真分数。

5、在主函数中生成两个随机数用做运算,在生成一个随机数用做控制条件。其中有加、减、乘、除和真分数五种情况,分别用switch来调用各个函数。

下面我附上我的源程序:

#include<stdio.h>

#include<iostream>

#include<Windows.h>

#include<time.h>

using namespace std;

int Com(int a, int b)

{

int r;

while (b != 0)

{

r = a%b;

a = b;

b = r;

}

return a;

}

void Add(int a, int b)

{

cout << a << " + " << b << " =" << endl;

return;

}

void Add1(int a, int b, int c, int d)

{

cout << a << "/" << b << " +  " << c << "/" << d << " =" << endl;

return;

}

void Sub(int a, int b)

{

if (a < b)

cout << b << " - " << a << " =" << endl;

else

cout << a << " - " << b << " =" << endl;

return;

}

void Sub1(int a, int b, int c, int d)

{

float m, n;

m = (((float)a) / ((float)b));

n = (((float)c) / ((float)d));

if (m < n)

cout << c << "/" << d << " -  " << a << "/" << b << " =" << endl;

else

cout << a << "/" << b << " -  " << c << "/" << d << " =" << endl;

return;

}

void Mul(int a, int b)

{

cout << a << " * " << b << " =" << endl;

return;

}

void Mul1(int a, int b, int c, int d)

{

cout << a << "/" << b << " *  " << c << "/" << d << " =" << endl;

return;

}

void Div(int a, int b)

{

while (b == 0)

{

b = rand() % 100;

}

cout << a << " / " << b << " =" << endl;

return;

}

void Div1(int a, int b, int c, int d)

{

int m;

while (c == 0)

{

c = rand() % 100;

}

m = Com(c, d);

c = c / m;

d = d / m;

cout << a << "/" << b << " /  " << c << "/" << d << " =" << endl;

return;

}

void ProFra(int a, int b, int c, int d)

{

int m, n, Sig;

a = rand() % 100;

b = rand() % 100;

c = rand() % 100;

d = rand() % 100;

while (a == b)

{

a = rand() % 100;

}

while (c == d)

{

c = rand() % 100;

}

while (b == 0)

{

b = rand() % 100;

}

while (d == 0)

{

d = rand() % 100;

}

Sig = rand() % 4;

m = Com(a, b);

a = a / m;

b = b / m;

n = Com(c, d);

c = c / n;

d = d / n;

if (a > b)

{

int e;

e = a;

a = b;

b = e;

}

if (c > d)

{

int e;

e = c;

c = d;

d = e;

}

switch (Sig)

{

case 0:Add1(a, b, c, d);

break;

case 1:Sub1(a, b, c, d);

break;

case 2:Mul1(a, b, c, d);

break;

case 3:Div1(a, b, c, d);

break;

}

return;

}

void main()

{

int FirNo,SecNo,Sig,TextNo;

cout << "Plese enter the number of mathematical problems:";

cin >> TextNo;

srand((unsigned)time(NULL));

for (int i = 0; i < TextNo; i++)

{

FirNo = rand() % 100;

SecNo = rand() % 100;

Sig = rand() % 5;

switch (Sig)

{

case 0:Add(FirNo, SecNo);

break;

case 1:Sub(FirNo, SecNo);

break;

case 2:Mul(FirNo, SecNo);

break;

case 3:Div(FirNo, SecNo);

break;

case 4:ProFra(0, 0, 0, 0);

break;

}

}

system("pause");

}

程序还是存在很多不足的地方,代码不够优化,算法不够优化,导致程序效率低。而且小学生也分年级,每年级学的知识不同,出的题也不一样,应该分别考虑出多种情况。对于大多数的人都适用才是一个好的程序。对于这些我也会再继续改进的。

时间: 2024-11-05 18:36:00

小学生除法的相关文章

软件工程第一次作业,小学生四则运算的出题程序

一.背景 阿超有个儿子上小学二年级,老师每天让家长给孩子出30道加减法题,虽然不多,但是每天都做也算是个负担,阿超作为一个老牌程序员当然想用计算机来解决这个小问题,目前对于这个问题对于任何语言都不是问题,比如: C/C++.C#.Java.Python.VB.JavaScript.Perl…… 具体要求如下: 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!) 除了整数外,还要支持真分数的四则运算 请大家用任何一种自己擅长的语言来编写这段程序,并把程序的介绍和自

结伴项目 小学生四则运算

结伴:宫成荣 韩媛媛 需求分析: 为小学生能够出四则运算的题,并且能对其所答的答案进行判断,如答错能显示正确答案. 部分代码: int calculate(int a,int b,int c) { int num; switch(b) { case 0:num=a+c;break; case 1:num=a-c;break; case 2:num=a*c;break; } return num; } 使用函数对加减乘进行计算. char str[]="+-*/",ch; srand((

【小学生四则运算】程序第3次冲刺(结项成果发布)

茅山光大大组员:林庆光.卢盛添.黄雄俊.陈梓仪.经过三个阶段的协作努力.通力合作,[小学生四则运算]APP程序已经实现了当初设想的全部功能:用户注册与登录(包括找回密码,记住密码功能),用户注册完成同时成为一个游戏账号(可以进行升级,增加金币功能),其中,程序的核心功能包括加法.减法.乘法.除法.以及混合运算的练习题. APP截图展示: 注册界面 登录界面 首页功能展示 答题界面 答题提示框 显示用户信息 商城金币系统 目前APP的功能已经基本定型,接下来就按照杜老师的要求,尝试对APP进行推广

小学生四则运算app

项目名字: 开发环境:Android eclipse 团队名称:炫酷组合 团队成员:黄杰,黄铭琪,李炫宗 活动背景:  爱玩的小朋友们怎么可能甘于忍受平时的那种模板式的教学方式,游戏自然是这类小朋友们的最爱.父母常常会遇到这样一个问题:如何才能让这群爱玩的小朋友们乖乖的学习呢? 既然小朋友们爱玩,那就让他们在游戏中学习吧.寓教于乐的教学方式向来是父母和老师们热衷的一个话题,由此引发的一系列寓教于乐的教育方式也让人们目不暇接. NABCD模型分析 ①    N——need需求 1.   在游戏中随

结对子实验——小学生四则运算

实验开始时间:4月7日~4月9日 本次实验的组员分别是:郑泽成http://www.cnblogs.com/Oliver-zzc/,李天麟http://www.cnblogs.com/talent-demonic/: 1.代码是在Eclipse环境下开发的 2.在这次实验中我负责了写四则运算的算术代码和检查算法 同伴负责面板的设计和监听事件的实现 3.实现扩展方向有:用户在第一次答题时,需要用户输入用户名:程序可以设置答题时间,时间设置为整数,单位为秒:答题结束可以显示用户答错的题目个数和答对的

小学生算数产生器的改进

一.程序设计题目要求和设计思想 1.题目 (1).题目避免重复: (2).可定制(数量/打印方式): (3).可以控制下列参数: 是否有乘除法.是否有括号. 数值范围.加减有无负数.除法有无余数. 否支持分数 (真分数, 假分数, …).是否支持小数 (精确到多少位).打印中每行的间隔可调整: 2.设计思想 (1).将随机生成的算式保存起来,方便后续生成的算式进行比对,后续产生的算式与之前所有算式   比对,当结果一致说明算是重复,应当排除. (2).产生算式的函数进行循环操作,引进控制参数,操

shell中除法运算

A=`expr $num1 / $num2` 这个时候num3=0 ,是因为是因为expr不支持浮点除法 小数点标识的方法: A=`echo "scale=2; $num1/$num2" | bc` 使用bc工具,sclae控制小数点后保留几位 另一种方法 A=awk 'BEGIN{printf "%.2f\n",'$num1'/'$num2'}' 百分比表示 A=awk 'BEGIN{printf "%.2f%\n",('$num1'/'$nu

计算机中如何实现除数是2的幂次的除法【转载自CSDN】

前言: 本来是在看汇编里面的数据条件传送指令,做习题的时候看着这么一道有关于2的幂次方除法的题目.结果傻眼了,又尼玛不会了.........第二章看的时候就稀里糊涂的,看了几遍也没看太懂,这回又涉及到了 ,发现再回来看还是容易一点.所以写此博文,方便日后复习. 我今天遇到的问题如下: 问题: 除法,在我们平时的算数运算中,结果总是向0的方向舍入的,但是在计算机中,舍入的方式有所不同.在大多数的机器中,除法要比乘法还有加法这些运算都要慢很多倍,计算机中对于2的幂次这种数很是敏感,因为计算机当中用到

【练习赛2补题】poj 2325 Persistent Numbers 【高精度除法+贪心】

Description The multiplicative persistence of a number is defined by Neil Sloane (Neil J.A. Sloane in The Persistence of a Number published in Journal of Recreational Mathematics 6, 1973, pp. 97-98., 1973) as the number of steps to reach a one-digit