• 四则运算2程序


    一.设计思想

     由于忘记不会数组的地址传递所以所有的程序都在主函数中有点混乱!
    用a、b数组存放分子或者是整数时的整数,xy数组存放分数时的分母,当分母为0时重新生成;当是除法时分子为0重新生成;运算符号以整数的形式存在c数组中;负号通过随机生成1和0控制分子乘以-1。

    二.源程序代码

     #include <iostream>
    using namespace std;
    #define N 100

    void main()
    {
    int a[N],b[N],x[N],y[N],c[N],sel[3],num,page,lie,hang,max;
    cout<<"..........请选择下列选项.........."<<endl;
    cout<<"1.是否有乘除法."<<endl;
    cout<<"2.有无负数"<<endl;
    cout<<"3 是否支持分数."<<endl;
    cout<<"请输入数值范围(最大值):"<<endl;
    for(int i=0;i<3;i++)
    cin>>sel[i];
    cin>>max;
    cout<<"请输入总的页数和行数列数:";
    cin>>page>>hang>>lie;
    num=page*hang*lie;

    //////////////////////////////////////////////////////////////////////////生成随机数
        if(sel[2]==1)
    {
    for(int i=0;i<num;i++)
       {
    a[i]=rand()%max;
    x[i]=rand()%max;
    while(x[i]==0)
    x[i]=rand()%max;
    b[i]=rand()%max;
      y[i]=rand()%max;
    while(y[i]==0)
    y[i]=rand()%max;
         }
        if(sel[1]==1)
          {
        for(int i=0;i<num;i++)
        {
      if(rand()%2==1)
       a[i]=(-1)*a[i];
        if(rand()%2==1)
    b[i]=(-1)*b[i];
      }
        }
       if(sel[0]==1)
    for(int i=0;i<num;i++)
    {
    c[i]=rand()%4;
    if(c[i]==3)
    {
    while(b[i]==0)
    b[i]=rand()%max;
    }
    }
       else
    for(int i=0;i<num;i++)
    c[i]=rand()%2;
    }


    else
    {
    for(int i=0;i<num;i++)
       {
    a[i]=rand()%max;
    b[i]=rand()%max;
       }
    if(sel[1]==1)
    {
    for(int i=0;i<num;i++)
    {
    if(rand()%2==1)
    a[i]=a[i]*(-1);
    if(rand()%2==1)
    b[i]=(-1)*b[i];
    }
    }
    if(sel[0]==1)
    for(int i=0;i<num;i++)
    c[i]=rand()%4;
    else
    for(int i=0;i<num;i++)
    c[i]=rand()%2;
    }
    ////////////////////////////////////////////////////////避免重复
    if(sel[2]==1)
    {
    for(int i=0;i<num-1;i++)
    {
    for(int j=i+1;j<num;j++)
    {
    while(a[i]==a[j]&&b[i]==b[j]&&c[i]==c[j])
    {a[i]=rand()%max;}
    }
    }
    }
    else
    {
    for(int i=0;i<num-1;i++)
    {
    for(int j=i+1;j<num;j++)
    {
    while(a[i]==a[j]&&c[i]==c[j])
    {a[i]=rand()%max;}
    }
    }
    }

    ///////////////////////////////////////////////////输出
    for(int k=0;k<num;k++)
    {
    if(sel[2]==1)
    {
    cout<<a[k]<<"/"<<x[k];
    switch(c[k])
    {
    case 0:
    cout<<" + ";break;
    case 1:
    cout<<" - ";break;
    case 2:
    cout<<" * ";break;
    case 3:
    cout<<" / ";break;
    }
    cout<<b[k]<<"/"<<y[k]<<"    ";

    }
    else
    {
    cout<<a[k];
    switch(c[k])
    {
    case 0:
    cout<<" + ";break;
    case 1:
    cout<<" - ";break;
    case 2:
    cout<<" * ";break;
    case 3:
    cout<<" / ";break;
    }
    cout<<b[k]<<"   ";
    }
    if((k+1)%lie==0)
    cout<<endl;
    if((k+1)%(lie*hang)==0)
    cout<<endl<<endl;
    }
    }

    三.运行结果截图

    四.编程总结

     由于忘记不会数组的地址传递所以所有的程序都在主函数中有点混乱!
    用a、b数组存放分子或者是整数时的整数,xy数组存放分数时的分母,当分母为0时重新生成;当是除法时分子为0重新生成;运算符号以整数的形式存在c数组中;负号通过随机生成1和0控制分子乘以-1。

    五.

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    3/13

    11:30

    12:00

    0

    30

    设置程序的布局和思路

    3/18

    14:00

    22:00

    120

    360

    编写程序

    3/19

    16:00

    19:00

    30

    70

    修改下写报告截图,上传博客

     
  • 相关阅读:
    新建一个线程作为服务端
    设置并查看pthread创建线程时传入参数中堆栈大小值
    libevent2.0.22备忘录
    Centos7如何切换启动的内核
    svn常见问题及解决方法
    nodejs monk对接mongodb密码全过程
    百万并发的长连接是否会耗尽反向代理的端口号
    Linux文件描述符限制和单机最大长连接数
    ps命令支持的最大的进程号是多少
    nginx在配置反向代理后,启动时域名不通启动报错
  • 原文地址:https://www.cnblogs.com/mxj333/p/4351407.html
Copyright © 2020-2023  润新知