zoukankan      html  css  js  c++  java
  • 四则运算2

    题目:
    1.题目避免重复/
    2.可定制(数量/打印方式)
    3.可以控制下列参数
       *是否有乘除法
       *是否有括号(最多可支持10个数参与计算)
       *数值范围
       *加减有无负数
       *除法有无余数
    设计思路:
    各项条件的选择都通过生成随机数并通过if-else语句进行选择,数值范围通过为随机数限定范围来生成,嵌套比较多,容易混乱。值得注意的是除法分母不能为0 ,要加以限制。打印方式也通过选择语句选择打印到文档或者屏幕。


    /*2016/3/11 没有实现括号的运算,加不进去了:( */ #include<iostream> #include<fstream> #include<time.h> #include<stdlib.h> #include<math.h> using namespace std; void main() { ofstream outfile; outfile.open("题目.txt"); int num1,num2,num3,num4,num,c,d,f; char y; int xZ[3]; int range; srand((int)time(0)); // 时间种子 cout<<"选择打印方式:(1代表屏幕,0代表文件):"; cin>>f; cout<<"输入题目的数量:"; cin>>num; cout<<"整数数值范围:(1000以内,100以内,10以内)"; cin>>range; while(range!=10&&range!=100&&range!=1000) { cout<<"请输入10,100,或1000:"; cin>>range; } cout<<"是否有乘除法,有输入1,没有输入0:"; cin>>xZ[0]; cout<<"加减有无负数,有输入1,没有输入0:"; cin>>xZ[1]; if(xZ[0]==1) { cout<<"除法有无余数,有输入1,没有输入0:"; cin>>xZ[2]; } for(int i=0;i<num;i++)//输出题目的循环 { num1=rand()%range; num2=rand()%range; num3=rand()%range; num4=rand()%range; c=1+(int)(4*rand()/(RAND_MAX+1.0)); d=1+(int)(2*rand()/(RAND_MAX+1.0)); if(d%2==0)//随机确定整数运算还是真分数运算 { if(xZ[0]==1)//确定是否有乘除 { if(c%4==0)//除法 { if(xZ[2]==0)//是否有余数 { if(num1%num2==0) { if(f==1) cout<<num1<<"/"<<num2<<"="<<endl; else outfile<<num1<<"/"<<num2<<"="<<endl; } else { while(num1%num2!=0) { num1=rand()%range; num2=rand()%range; } if(f==1) cout<<num1<<"/"<<num2<<"="<<endl; else outfile<<num1<<"/"<<num2<<"="<<endl; } } else { if(f==1) cout<<num1<<"/"<<num2<<"="<<endl; else outfile<<num1<<"/"<<num2<<"="<<endl; } } if(c%4==2)//减法 { if(xZ[1]==0)//是否有负数 { if(num1<num2) { if(f==1) cout<<num2<<"-"<<num1<<"="<<endl; else outfile<<num2<<"-"<<num1<<"="<<endl; } else if(f==1) cout<<num1<<"-"<<num2<<"="<<endl; else outfile<<num1<<"-"<<num2<<"="<<endl; } else if(f==1) cout<<num1<<"-"<<num2<<"="<<endl; else outfile<<num1<<"-"<<num2<<"="<<endl; } if(c%4==1) if(f==1) cout<<num1<<"+"<<num2<<"="<<endl; else outfile<<num1<<"+"<<num2<<"="<<endl; if(c%4==3) if(f==1) cout<<num1<<"*"<<num2<<"="<<endl; else outfile<<num1<<"*"<<num2<<"="<<endl; } else//无乘除 { if(c%2==0)//减法 { if(xZ[1]==0)//是否有负数 { if(num1<num2) { if(f==1) cout<<num2<<"-"<<num1<<"="<<endl; else outfile<<num2<<"-"<<num1<<"="<<endl; } else { if(f==1) cout<<num1<<"-"<<num2<<"="<<endl; else outfile<<num1<<"-"<<num2<<"="<<endl; } } else { if(f==1) cout<<num1<<"-"<<num2<<"="<<endl; else outfile<<num1<<"-"<<num2<<"="<<endl; } } if(c%2==1) { if(f==1) cout<<num1<<"+"<<num2<<"="<<endl; else outfile<<num1<<"+"<<num2<<"="<<endl; } } } else//真分数运算 { switch(c%4)//判断运算符 { case(0):y='+';break; case(1):y='-';break; case(2):y='*';break; case(3):y='/';break; } if(num1>num2)//判断大小,组合成真分数,并确保分母不为0 { if(f==1) cout<<"("<<num2<<"/"<<num1<<")"; else outfile<<"("<<num2<<"/"<<num1<<")"; } else { if(num2==0) { do{num2=rand()%range;} while(num2==0); } if(f==1) cout<<"("<<num1<<"/"<<num2<<")"; else outfile<<"("<<num1<<"/"<<num2<<")"; } if(f==1) cout<<y; else outfile<<y; if(num3>num4) { if(f==1) cout<<"("<<num4<<"/"<<num4<<")"; else outfile<<"("<<num4<<"/"<<num4<<")"; } else { if(num4==0) { do{num4=rand()%range;} while(num4==0); } if(f==1) cout<<"("<<num3<<"/"<<num4<<")"; else outfile<<"("<<num3<<"/"<<num4<<")"; } if(f==1) cout<<"="<<endl; else outfile<<"="<<endl; } } outfile.close(); }
    
    

      




    听课

    编写程序

    阅读相关书籍

    网上查找资料

    日总计

    周一

    2

    0

    1

    0

    3

    周二

    0

    2

    1

    1

    4

    周三

    0

    0

    0

    0

    0

    周四

    2

    1

    0

    1

    4

    周五

    0

    2

    1

    1

    4

    周六

    0

    4

    0

    1

    5

    周日

    周总计

    4

    9

    3

    4

    20

    
    
    
    
    

    时间记录日志

    
    

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    星期一

    14:00

    1550

    10min

    100min 

    上课

    软件工程

    19:00

    20:00

    60min

    看书

    构建之法

    星期二

    19:00

    23:00

    10min

    230min

    编程、看书、查找资料

    二柱子运算程序

    星期三

    星期四

    14:00

    15:50

    10min

    100min

    上课

    软件工程

    19:00

    21:00

    120min

    编程、查资料

    二柱子运算程序

    星期五

    16:00

    20:30

    30min

    240min

    编程、看书、查找资料

    二柱子运算程序

    星期六

    7:30

    12:30

    300min

    编程,查资料

    二柱子运算程序

    
    

    缺陷日志

    
    

    日期

    编号

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3.10

    1

    3.11

    不能实现打印方式的选择

    3.10

    2

    没有多元运算

    3.11

    3

    不能实现括号运算

    
    
  • 相关阅读:
    BZOJ 1207
    Poj 2096 Collecting Bugs (概率DP求期望)
    HDU 5159 Card (概率求期望)
    HDU 4649 Professor Tian (概率DP)
    HDU 4652 Dice (概率DP)
    HDU5001 Walk(概率DP)
    C++中的 Round(),floor(),ceil()
    HDU 5245 Joyful(概率题求期望)
    poj 3071 Football (概率DP水题)
    关于一个群号分解的最大质数的求法
  • 原文地址:https://www.cnblogs.com/yhhzxcvbnm/p/5268544.html
Copyright © 2011-2022 走看看