四则运算最新改进

一.设计思路

1.设计要求

1、题目避免重复;

2、可定制(数量/打印方式);

3、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;

2.设计思路

1.数量可以用控制循环次数来控制;

2.可定制n列的,当循环n的倍数时,回车;

3.控制输出结果switch(n)中n的大小来控制,如果为2,或3,n-1就可以把乘除转换为加减;

4.数值范围用rand函数控制;

5.加减有无负数,如果有负数,(-1)^n(n为随机的0或1)乘以加减数,写入表达式,其中需要控制当被减数为负数的时候,加括号;

6.其中许多的条件需要灵活的进行控制用一些简单的思路让题目更加简单。

二.程序

#include<iostream.h>
#include<stdlib.h>
void size(int X,int Y)
{

int d,n,a,i,j,b,c1,c2,z,e,x,y,m,h,t;

cout<<" "<<"1.题目的数量:";
cin>>m;
cout<<endl;

cout<<" "<<"2.题目的列数:";
cin>>h;
cout<<endl;

cout<<" "<<"3.打印间隔:";
cin>>t;
cout<<endl;

cout<<" "<<"4.数值最大为多少:";
cin>>b;
cout<<endl;

cout<<" "<<"5.式内是否有乘除(有:1;无:非1整数):";
cin>>a;
cout<<endl;

cout<<" "<<"6.加减数有无负数(有:1;无:非1整数):";
cin>>z;
cout<<endl;
cout<<"***********"<<"以下是题目"<<"*****************"<<endl;

for(i=0;i<m;i++)
{

X=rand()%b;
Y=rand()%b;
d=rand();
e=rand();

c1=d%2;
c2=e%2;

n=d%4;
//------------------------------------有无乘除
switch(a)
{
case 0:
if(n>1)
{
n=n-2;
};break;
case 1: break;
default:cout<<"输入的乘除控制条件错误!";

}

//------------------------------------加减有无负数

switch(z)
{
case 0:break;
case 1: x=(-1)^c1*X;

y=(-1)^c2*Y;break;
default:cout<<"输入的加减控制条件错误!";
}

//----------------------------------控制括号和输出
switch(n)
{
case 0:if(z>0)
{
cout<<x<<"+"<<"("<<y<<")"<<"="<<" ";
}
else
{
cout<<X<<"+"<<Y<<"="<<" ";
};break;
case 1:if(z>0)
{
cout<<x<<"-"<<"("<<y<<")"<<"="<<" ";
}
else
{
cout<<X<<"-"<<Y<<"="<<" ";
};break;
case 2:cout<<X<<"*"<<Y<<"="<<" ";break;
case 3:cout<<X<<"/"<<Y<<"="<<" ";break;

}

//----------------------------------------控制列数,和两行间隔数

if((i+1)%h==0)
{
for(j=0;j<t;j++)
{
cout<<endl;
}
}
}
cout<<endl;
}
//--------------------------主函数
int main()
{
int a;
int b;
cout<<"***********"<<"四则运算题目定制:"<<"************"<<endl<<endl;
size(a,b);
return 0;
}

四.实验总结

开始的时候一点思路都没有,觉得这个程序非常复杂,马上对自己失去了信心。但是,听老师一直说要把程序分开了实现,将大程序分成一个一个自己能解决的。这真的是可以的,单步的思考程序的要求是可以实现的,然后将这些断断续续的要求整合起来,组成了自己不能相信的程序,很高兴。这节让我收获最大的是,学会了程序的分布思考和编写,更重要的是对自己有了信心。

五.第2 周的学习记录

学生: 付东   日期: 3月10日    
教师: 王建民   课程: 软件工程    
             
日期 开始时间 结束时间 中断时间 净时 活动 备注
3月10日 12:30 1:00   30 编程 四则修改思路
3月11日 10:15 10:30   15 阅读 第一章
3月13日 12:30 12:50   20 编程 四则运算正负数和换行问题
  9:00 9:40   40 编程 换行问题,负数加括号
3月14日 9:00 11:30 20 70 编程 编程,聊天,玩手机
  2:00 3:00 10 50 编程 编程,收快递
  4:00 4:30   30 读书 第二三章
             
2 周活动总结表              
姓名: 付东     日期: 3.14      
日期\任务 听课 编写程序 阅读课本 准备考试     日总计  
周日                
周一                
周二 300 30 0       330  
周三 100 0 15       115  
周四 400 0 0       400  
周五 200 60 0       260  
周六 0 120 30       150  
周总计 1000 210 45       1255  
                 
阶段时间和效率     周数: 2        
                 
不包括上一周在内的累计时间                
总计                
平均                
最大                
最小                
                 
                 
以前各周的累计时间                
总计 1200 210 45       1455  
平均 1200 210 45       1455  
最大 1200 210 45       1455  
最小 1200 210 45       1455  
                 
学生: 付东          
日期: 3月14日          
教员: 王建民          
程序: 四则运算          
日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
3月13日 1   编码 编码 0.2min  
  缺少头文件
  2   编码 运行 3min  
  重复使用变量i,导致无限运行
3月14日 3   编码 编译 1min  
  if条件中用了“=”运算符
  4   编码 编译 1min  
  switch的case中缺少了break
  5   编码 编译 0.2min  
  for的结尾再次使用i++,导致i加了两次
时间: 2024-10-12 13:23:04

四则运算最新改进的相关文章

随机四则运算的改进

#include<stdio.h> int Menu() { int choic; printf("\n\n\n******************************************\n"); printf("1.四则运算整数习题(试卷型)\n"); printf("2.四则运算真分数习题(试卷型)\n"); printf("3.四则运算整数习题(同步练习型)\n"); printf("4.

Msfconsole中set payload命令最新改进

Msfconsole中set payload命令最新改进 为了方便用户的输入,Msfconsole改进了set payload命令的输入.在执行set payload命令时,可以使用三种前缀,分别是/payload.payload.和/.或者,不使用任何前缀,直接指定攻击载荷路径即可.其中,可以执行的四种方式如下所示: (1)msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload /payload/windows/x64/mete

Practice1小学四则运算(改进)

#include<stdio.h> #include<stdlib.h> #include<time.h> void srand(unsigned);//随机生成不同的数 void main() { int n,i,a,b,c,d,e,f,g,h,j; printf("****************************欢迎使用!************************\n"); printf("\n"); print

【week2】结对编程-四则运算 及感想

首先我要说一下,我得作业我尽力了,但是能力有限,还需练习. 四则运算,改进代码流程: 1.手动输入算式(属于中缀表达式) 2.将中缀表达式转化成后缀表达式 生成out数组 3.一个操作数栈,一个运算符栈,按照后缀表达式计算方法将out中的字符分别放入两个栈 4.当操作数栈只有一个数时结束计算. 代码分段解析如下: 中缀变后缀: public List<String> SolveOrder(String[] in,HashMap<String,Integer>precedence){

(第二周)新小学四则运算

需求分析 1.选择答题数目 2.随机生成4个100以内的整数 3.随机生成3个运算符 4.使用for循环生成指定数量的题目,并进行作答 5.输入结果与计算结果进行判断 若结果一致,则回答正确,继续下一题 若结果不一致,则回答错误,并显示正确答案,继续答题 直到完成指定数量的题目,并输出答对题目数量及题目总数. 4.在选择开始下一轮或结束答题时,若连续两次输入错误,则答题结束 https: https://git.coding.net/yanzouzhe/szys.git SSH:   [emai

电脑史话(1)

电脑史话(1)――计算机始祖 已历经了50多个春华秋实.英语里“Calculus”(计算)一词来源于拉丁语,既有“算法”的含义,也有肾脏或胆囊里的“结石”的意思.不知何时,许多国家的人都不约而同想到用“筹码”来改进工具,其中要数中国的算筹最有名气.商周时代问世的算筹,实际上是一种竹制.木制或骨制的小棍.古人在地面或盘子里反复摆弄这些小棍,通过移动来进行计算,从此出现了“运筹”这个词,运筹就是计算,后来才派生出“筹”的词义.中国古代科学家祖冲之最先算出了圆周率小数点后的第6位,使用的工具正是算筹,

11个热门物联网开发平台详解

从1999年Kevin Ashton第一次提出这个概念以来,物联网已经经历了迅速的转变.随着近年来连接到物联网的设备在多样性和数量方面出现指数式的增长,物联网已经成为了一种主流技术,在推动现在社会的生活方式方面有着极大的潜力. 在物联网的技术与工程上,硬件与软件平台之间目前仍有明确的界限,其中大多数供应商都将精力放在硬件方面.只有极少数供应商提供物联网软件服务:例如,Mattermark根据所获总投资排名的前100名物联网创业公司中,只有13家提供物联网软件服务. 本文针对现有物联网软件平台,基

谷歌为什么把上十亿行代码都放在一个仓库里

相对于一般公司,Google 使用了单一代码仓库,很多人不理解为什么这么做.本文作者是谷歌基础设施小组的工程师,他对这个问题进行了详细解读. 早期 Google 员工决定使用集中式源代码管理系统来管理代码库.这种方法已经在 Google 运行了 16 年以上,而今天绝大多数的 Google 软件仍然存储在一个共享的代码库中. 随着 Google 开发软件数量稳步增加,Google 代码库的规模也呈指数增长. 因此,用于管理代码库的技术也发生了显著变化. 本文概述了该代码库的规模,并详细介绍了 G

Docker安全性——官方文档[译]

Docker安全性--官方文档[译] 本文译自Docker官方文档:https://docs.docker.com/articles/security/ 在审查Docker的安全时,需要考虑三个主要方面:?容器内在的安全性,由内核命名空间和cgroup中实现;?docker守护程序本身的攻击面;?加固内核安全特性,以及它们如何与容器中互动. 内核 命名空间 Kernel Namespace Docker容器中非常相似LXC容器,并且它们都具有类似的安全功能.当您以"docker run"