301一4382400除以25的简便运算73用简单运算

四年级下册简便运算_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
四年级下册简便运算
上传于|0|0|文档简介
&&四则混合运算简算定律
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢简便计算722-+-+359+-数学试题及答案
繁体字网旗下考试题库之栏目欢迎您!
1、试题题目:简便计算722-+-+359+..
发布人:繁体字网() 发布时间: 07:30:00
简便计算 722-301235-190+165986-169-131167+141+359+33425+438+175463-148
&&试题来源:不详
&&试题题型:解答题
&&试题难度:中档
&&适用学段:小学
&&考察重点:运算定律和简便算法
2、试题答案:该试题的参考答案和解析内容如下:
(1)722-301,=700+22-(300+1),=700-300+(22-1),=400+21,=421;(2)235-190+165,=(235+165)-190,=400-(200-10),=400-200+10,=210;(3)986-169-131,=986-(169+131),=986-300,=686;(4)167+141+359+33,=(167+33)+(141+359),=200+500,=700;(5)425+438+175,=(425+175)+438,=600+438,=1038;(6)463-148,=440+23-(140+8),=(440-140)+(23-8),=300+15,=315.
3、扩展分析:该试题重点查考的考点详细输入如下:
&&&&经过对同学们试题原文答题和答案批改分析后,可以看出该题目“简便计算722-+-+359+..”的主要目的是检查您对于考点“小学运算定律和简便算法”相关知识的理解。有关该知识点的概要说明可查看:“小学运算定律和简便算法”。
4、其他试题:看看身边同学们查询过的数学试题:
1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23、24、25、26、27、28、29、30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、46、47、48、49、50、51、52、& & & & & & & & & & & & & & & & & & & & & 四则运算3
设计思路:
& & & &关于这次实验,我们延续上次的思想,将很多内容封装到函数里,包括:&选择打印方式&、&判断输入的01菜单是否正确&、&生成某一个范围内的随机数&、&生成随机的分数&、&生成一个运算符&、&判断整数的正负并取相反数&、&把int类型装换为string类型&、以及&含有括号的运算&、&含有真分数的运算&和&不含真分数的运算&等等。运行程序时用户先选择相关的参数定制:题目个数、数值范围、是否打印到文件里、是否含有括号、加减或者四则运算等等。
部分函数的思路和功能:
1、& 生成一个随机运算符:
& & & 根据从主函数读取到的用户的选择:是否包含乘除运算来随机生成0-3四个数字分别代表+-*/四则运算,并将其作为函数的返回值。单独列出这个函数的目的是防止出现像上次的程序一样分析switch语句的四种情况时代码冗余而导致思维混乱。
2、& 把int类型转换为string:
& & & 经过我们查阅资料,决定使用:#include&stdio.h&类库中的str=itoa(shu, zhuan, 10)函数来将生成的随机整数保存成string字符串的形式。
编写此函数是因为,所有的算式都是用string字符串存的,方便输出和查重,因此每一个操作符都要转换成string才能直接插到算式中。
3、& 生成某一个范围内的真分数:
& & & 通过判断分子小于分母(真分数)、分子分母没有公约数(最简分式)产生那个数:分子和分母的值,再通过随机生成正负号来决定分数值的正负,最后将符号、分子、分数线和分母写到一个string类型里,并将分数形式和分数的值返回。
4、& 查重:
& & & 查重的函数上次的实验中有一些问题,因为是使用int类型的二维数组存的因此不能查关于真分数的重复,而这次采用string类型数组的方法,将所有的算式依次存到string类型的数组中,然后逐个比较新生成的算式与其是否相等。如果相等就舍掉相应的式子,并且计数的值-1。
5、& 关于含有真分数和不含有真分数的计算:
& & & 就是调用以上各个函数,再根据用户选择的是否含有负数、除法有无余数等等进行选择和判断,但是要将结果保存下来,便于判断是否回答正确。
6、 & 含有括号的计算:
& & & 我们打算用&递归&的思想先随机生成一个二元运算的式子,当然这里的操作数和运算符都是随机生成的,然后用double类型变量记录算式的值,然后随机生成加不加括号、并且下一个运算符是加在前面还是后面。然后将生成的式子再作为二元运算的操作数,直到随机生成的是不加括号,则输出式子。
7、& 主函数:
& & &本次实验最大的差异就是要用户计算结果、系统判断是否回答正确并记录正确的题目数。一次我们的函数中只是返回一个算式和算式的值,在主函数中循环N次,每一次输出就让用户输入,并判断是否正确。算式是用string类型存放,算式的值用double类型存放,如果答案是整数,直接让用户输入一个整数;如果答案是小数,先输入int型分子,再输入分母,并强制转换double计算结果。判断对错时,设定一个精度(10的负7次方),如果用户的输入在此范围内则认定正确。
1 //二柱子四则运算3,,赵子茵&孔宇航
3 #include&iostream&
4 #include&time.h&
5 #include&stdlib.h&
6 #include&stdio.h&
7 #include&string&
8 #include&fstream&
9 #include&iomanip&
10 #include&cmath&
11 #define random(x) (rand()%x)
12 using namespace
14 /*选择打印方式*/
15 void Output(int sf)
if (sf == 1)//保存文档
ofstream outfile("formula.txt", ios::out);
if (!outfile)
cout && "Open error!!" &&
outfile && "----------------欢迎!小学生四则运算答题系统:-D----------------" &&
outfile.close();
30 /*判断输入0.1的是否输入正确*/
31 int Istrue_input(int mnu01)
if (mnu01 != 0 && mnu01 != 1)
cout && "输入有误,请重新输入(请输入0或1):" &&
cin && mnu01;
return mnu01;
46 /*生成一个某范围内的随机数(正负都有)*/
47 int Creat_random(int r1, int r2)
/*srand((int)time(0));*/
r = r2 - r1;
shu = r1 + rand() %
56 /*生成一个随机运算符*/
57 string Create_oper(int lai)
srand((int)time(0));
int Num_sym, Sign_
if (lai == 0)//加减
Num_sym = 2;
else if (lai == 1)//加减乘除
Num_sym = 4;
Sign_num = rand() % Num_//生成随机的数字代表运算符
switch (Sign_num)
case(0) : sign = '+'; break;
case(1) : sign = '-'; break;
case(2) : sign = '*'; break;
case(3) : sign = '/'; break;
77 /*判断整数正负并取相反数*/
78 int Opp_zf(int a)
if (a & 0)
85 /*把int类型转换为string类型*/
86 string Int_str(int shu)
char zhuan[100];
string str,zuo="(",you=")";
str=itoa(shu, zhuan, 10);
if (shu & 0)
str = zuo + str +
96 /*生成一个(某范围)真分数*/
97 void Creat_fen(int r1, int r2, string &fenshu, double &zhi)
/*srand((int)time(0));*/
int i, r = r2 - r1, up, down,
string xian = "/", fu = "-", zuo = "(", you = ")";
/*char zhuan1[10], zhuan2[10];*/
string zhuan1, zhuan2;
105 loop:do
flag = false;//不能定义全局变量!!
up = r1 + rand() %
up = Opp_zf(up);
down = r1 + rand() %
down = Opp_zf(down);
} while ((up &= down) || (down == 0) || (up == 0));//分子&分母 or 分母=0 or 分子=0 重新生成
for (i = 2; i &= i++)
/*if ((i == -1)|| (i == 0))
if (up%i == 0 && down%i == 0)
flag = true;//有公约数
if (flag == true)
zhi = (double)up / (double)
//itoa(up, zhuan1, 10);//分子转换成string类型
//itoa(down, zhuan2, 10);//分母转换成string类型
zhuan1 = Int_str(up);//up/down都是正数不会再加一层括号
zhuan2 = Int_str(down);
s = rand() % 2;
switch (s)
fenshu = zuo + zhuan1 + xian + zhuan2 +
fenshu = zuo + fu + zhuan1 + xian + zhuan2 +
152 ///*查重*/
153 //bool Is_rept(string str1, string str2)
if (str1 == str2)
156 ////重复
157 ////不重复
160 /*含有括号*/
161 void Have_kuohao(int r1, int r2, string &formula,double &zhi)
srand((int)time(0));
int op,op1, op2;
int yn,//代表&是否加括号&和&运算符在前后&的数字
string symbol1,symbol2;
string zhuan,zhuan1, zhuan2;
string jia = "+", jian = "-", cheng = "*", chu = "/",zuo="(",you=")";
zhi = (double)Creat_random(r1, r2);
op1 = Creat_random(r1, r2);
op2 = Creat_random(r1, r2);
op = Creat_random(r1, r2);//假设op2做分母不能为0
if (op == 0)
op = Creat_random(r1, r2);
zhuan1 = Int_str(zhi);
zhuan2 = Int_str(op);
symbol1 = Create_oper(1);
if (symbol1 == "+")
zhi = (double)op1 + (double)op2;
formula = zhuan1 + jia + zhuan2;
yn = rand() % 2;
switch (yn)
//外面不加括号
case(0) : break;
//外面加括号
formula = zuo + formula +
qh = rand() % 2;
symbol2 = Create_oper(1);
switch (qh)
//加到前面
formula = symbol2 +
op = Creat_random(r1, r2);
zhuan = Int_str(op);
if (symbol2 == "+")
zhi = (double)op +
formula = zhuan + jia +
else if (symbol2 == "-")
zhi = (double)op -
formula = zhuan + jian +
else if (symbol2 == "*")
zhi = (double)op *
formula = zhuan + cheng +
else if (symbol2 == "/")
if (zhi == 0)//防止出现随机生成的除号后面的值为0;
zhi = (double)op /
formula = zhuan + chu +
//加到后面
formula = formula + symbol2;
op = Creat_random(r1, r2);//防止后面随机产生除号,分母为0
if (op == 0)
op = Creat_random(r1, r2);
zhuan = Int_str(op);
if (symbol2 == "+")
zhi = zhi + (double)
formula = formula + jia +
else if (symbol2 == "-")
zhi = zhi - (double)
formula = formula + jian +
else if (symbol2 == "*")
zhi = zhi * (double)
formula = formula + cheng +
else if (symbol2 == "/")
zhi = zhi / (double)
formula = formula + chu +
else if (symbol1 == "-")
zhi = (double)op1 - (double)op2;
formula = zhuan1 + jian + zhuan2;
else if (symbol1 == "*")
zhi = (double)op1 * (double)op2;
formula = zhuan1 + cheng + zhuan2;
else if (symbol1 == "/")
zhi = (double)op1 / (double)op2;
formula = zhuan1 + chu + zhuan2;
303 /*含有真分数*/
304 void Have_fenshu(int LL, int r1, int r2, string &formula, double &zhi, int jj)
srand((int)time(0));
string F1, F2, symbol,
double Z1, Z2;//值
int inter,
inter = Creat_random(r1, r2);//整数
zhuan = Int_str(inter);
Creat_fen(r1, r2, F1, Z1);//分数1
Creat_fen(r1, r2, F2, Z2);//分数2
symbol = Create_oper(LL);//符号
type = rand() % 3;//类型
if (jj == 0)//加减没有负数
inter = Opp_zf(inter);
zhuan = Int_str(inter);
if (Z1 &0)
Creat_fen(r1, r2, F1, Z1);
if (Z2 &0)
Creat_fen(r1, r2, F2, Z2);
switch (type)
formula = F1 + symbol +
if (symbol == "+")
zhi = Z1 + (double)
else if (symbol == "-")
if (jj == 0)
zhi = Z1 - (double)
else if (symbol == "*")
zhi = Z1 * (double)
else if (symbol == "/")
if (inter != 0)
zhi = Z1 / (double)
formula = zhuan + symbol + F1;
if (symbol == "+")
zhi = (double)inter + Z1;
else if (symbol == "-")
zhi = (double)inter - Z1;
else if (symbol == "*")
zhi = (double)inter * Z1;
else if (symbol == "/")
if (Z1 != 0)
zhi = (double)inter / Z1;
formula = F1 + symbol + F2;
if (symbol == "+")
zhi = Z1 + Z2;
else if (symbol == "-")
if ((jj == 0) && (Z1 & Z2))
zhi = Z1 - Z2;
else if (symbol == "*")
zhi = Z1 * Z2;
else if (symbol == "/")
if (Z1 != 0)
zhi = Z1 / Z2;
404 /*不含有真分数*/
405 void Only_integer(int LL, int r1, int r2, string &formula, double &zhi,int jj,int cc)
srand((int)time(0));
int op1, op2;
string symbol,zhuan1,zhuan2;
op1 = Creat_random(r1, r2);//整数1
op2 = Creat_random(r1, r2);//整数2
symbol = Create_oper(LL);//符号
if (jj == 0)//加减不含负号
op1 = Opp_zf(op1);
op2 = Opp_zf(op2);
if ((symbol == "-") && (op1 & op2))
temp = op1;
op1 = op2;
if ((cc == 0) && (symbol == "/"))//除法不含余数(去除负号计算的情况)
op1 = Opp_zf(op1);
op2 = Opp_zf(op2);
if (op1 % op2 != 0)//有余数,重新生成
op1 = Creat_random(r1, r2);
op2 = Creat_random(r1, r2);
zhuan1 = Int_str(op1);
zhuan2 = Int_str(op2);
formula = zhuan1 + symbol + zhuan2;
if (symbol == "+")
zhi = op1 + op2;
else if (symbol == "-")
zhi = op1 - op2;
else if (symbol == "*")
zhi = op1*op2;
else if (symbol == "/")
zhi = op1 / op2;
456 void main()
ofstream outfile("formula.txt", ios::out);
if (!outfile)
cout && "open error!" &&
outfile && "----------------欢迎!小学生四则运算答题系统:-D----------------" &&
int i,j,N, R1, R2;
int SF, KH, FS, Lei,JJ,CC,count=0;
string question="";//生成的问题
double Zhi,
int fenzi,
bool repeat = false;
cout && "----------------欢迎!小学生四则运算答题系统:-D----------------"&&
/*选择题目范围和数量*/
cout && "您想为孩子定制什么范围的题目呢?(可含有负数 && 上限&下限):" &&
cout && "下限:";
cin && R1;
cout && "上限:";
cin && R2;
while (1)//是否输入合法
if (R2 & R1)
cout && "输入的范围不合理,请重新输入(上限&下限):" &&
cout && "下限:";
cin && R1;
cout && "上限:";
cin && R2;
cout && "订制多少道题呢?请输入个数:" &&
cout && "(友情提示:您不要为孩子出太多的题目(最多1000道)!谢谢合作!)" &&
while (1)//是否输入合法
if (N&=0||N&1000)
cout && "输入的题目数量不合理,请重新输入:" &&
/*选择打印方式*/
cout && "您是否需要保存文档?(0、不需要 1、需要)" &&
cin && SF;
SF=Istrue_input(SF);//是否输入合法
Output(SF);
cout && "*********下面请按照孩子的学习程度选择题目的难度!!*********"&&
/*是否含有括号*/
cout && "是否练习带有括号的难度运算?(0、不需要 1、需要)";
cin && KH;
KH=Istrue_input(KH);//是否输入合法
if (KH == 1)//含括号
for (i = 1; i &= N; i++)
string Formula = "";
Have_kuohao(R1, R2,Formula,Zhi);
//不含括号
else if (KH == 0)
/*加减运算或者四则运算*/
cout && "请选择:0、只进行加减运算? 1、进行四则运算?";
Lei=Istrue_input(Lei);//是否输入合法
cout && "加减运算中是否有负数?(0、没有 1、有)";
cin && JJ;
JJ = Istrue_input(JJ);
if (Lei == 1)//乘除
cout && "除法中是否出现余数?(0、没有 1、有)";
cin && CC;
CC = Istrue_input(CC);
/*是否含有真分数*/
cout && "题目中是否含有真分数?(0、不需要 1、需要)";
cin && FS;
Istrue_input(FS);//是否输入合法
cout && N && "道题目如下:" &&
if (SF == 1)//文件输出
outfile && N && "道题目如下:" &&
string ku[10000] = {};
for (i = 1; i &= N; i++)
if (FS == 0)//全整数
Only_integer(Lei, R1, R2, question, Zhi, JJ, CC);
else if (FS == 1)//含真分数
Have_fenshu(Lei, R1, R2, question, Zhi, JJ);
/*repeat =*/
for (j = 0; j &i; j++)
if (ku[j] == ku[i])
i = i - 1;
repeat = true;//重复
/*if (repeat) ku[i+1] = "";*/
if (!repeat)//不重复
/*Is_rept(i,str);*/
cout && i && "、 " && question && " = " &&
if (SF == 1)//文件输出
outfile && i && "、 " && question && " = " && Zhi &&
if ((Zhi - (int)Zhi)& 1E-7 && (Zhi - (int)Zhi)& -(1E-7))//可认为它是整数
answer = (double)fenzi / (double)
if ((answer - Zhi) & 1E-7 && (answer - Zhi) & -(1E-7))
cout && "答案是:" && Zhi &&
cout && "您的孩子一共答对了" && count && "道题目!! 恭喜!!" &&
if (SF == 1)//文件输出
outfile && "您的孩子一共答对了" && count && "道题目!! 恭喜!!" &&
cout && "答错的" && N - count && "道题目请分析原因并改正~~
加油!!" &&
if (SF == 1)//文件输出
outfile && "答错的" && N - count && "道题目请分析原因并改正~~
加油!!" &&
outfile.close();
总结与反思:
& &在本次程序中,遇到了很多问题,虽然现在的程序还算完整但是有些功能是没有实现的,就是括号的部分,只保留了函数没有具体作用。对于括号的部分,我们讨论了很久也参考了别人的程序,但是总有各种各样的问题,一个解决又出来一个,就比如括号随机生成后一些不符合情况的排除,括号的计算问题,最后虽然有了思路但是还没有实现。我们的编程能力还是很弱的,对于没有实现的功能感到很惭愧,代码中还存在其他各种各样的小问题需要改进,望老师谅解。其实对于两个考研的孩子来说把所有空闲时间都拿来写这个程序还是蛮拼的哦,哈哈,希望课程考研两不耽误,不然真是亏大了。
结对合作伙伴&&赵子茵博客内容页链接:
项目计划日志
项目计划总结
周活动总结表
姓名:孔宇航&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 日期:
阶段时间和效率
2,时间记录日志:
学生:孔宇航&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&日期:
老师:王建民&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&课程:PSP
3,缺陷记录日志:
学生:孔宇航& & & & & & & & & & & & & & & & & & & &日期:
老师:王建民&
描述:设计函数的结构和变量时有知识点掌握的不牢固,比如地址传递参数的使用等等。
描述:想要随机生成两个或多个不同的随机数作为运算的操作数,但是使用种子的代码有误导致每次生成的不随机或者比率不合理。
描述:do&while循环语句的循环条件和结束条件写错了,导致程序一直是朝着相反的方向去。
描述:计算结果会出现小数因此要以double形式存放,就要将操作数的int类型进项转换,以及后面涉及到的int类型转换为string编写时都出现了知识掌握不全面的问题。
描述:编写查重函数时候因为内层循环和外层循环的i,j问题,导致程序不能有效的查重。
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&
阅读(...) 评论()

我要回帖

更多关于 144除以36的简便运算 的文章

 

随机推荐