四则运算2详细过程

一、设计思路

1.题目避免重复:

可以定义三个数组,第二道题的第一个数,第二个数,运算符不能与第一道题完全一样,第三道题不能与第二道题,第一道题一样,以此类推。

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

数量可以从键盘输入,打印方式可以调整各题之间的间距或者直接换行。

3.控制参数,由用户的意愿进行选择,先设置用户选择(0,1),程序用判断语句获得用户的意愿,添加进相应的题目。

二、源代码

#include<iostream.h>

#include<stdlib.h>

int a[100],b[100],c[100];

int i;

void Display(int f)    //输出题目

{  

        if(f==0)  

       {   

               if(c[i]==0)    

                      cout<<a[i]<<'+'<<b[i]<<'='<<endl;   

               if(c[i]==1)    

                      cout<<a[i]<<'-'<<b[i]<<'='<<endl;   

               if(c[i]==2)    

                      cout<<a[i]<<'*'<<b[i]<<'='<<endl;   

               if(c[i]==3)    

                      cout<<a[i]<<'/'<<b[i]<<'='<<endl;  

        }  

       else  

       {   

              if(c[i]==0)    

                     cout<<a[i]<<'+'<<b[i]<<'='<<'\t';  

              if(c[i]==1)    

                     cout<<a[i]<<'-'<<b[i]<<'='<<'\t';   

              if(c[i]==2)    

                     cout<<a[i]<<'*'<<b[i]<<'='<<'\t';   

              if(c[i]==3)    

                     cout<<a[i]<<'/'<<b[i]<<'='<<'\t';   

              if((i+1)%f==0)    

                     cout<<endl;  

         }

}

void Carry()       //执行全部过程,添加有出错处理

{  

          int j,k,t;  

          int m,n,o,d,e,f;  

          cout<<"请选择是否有乘除法:(0为是,1为否)"<<endl;  

          cin>>m;

          if(m!=0&&m!=1)
          {
                  cout<<"输入错误,请重新输入!"<<endl;
                  Carry();

                  exit(0);
          }

          cout<<"请输入取值范围:(0-?)"<<endl;  

          cin>>n;  

          cout<<"请选择加减有无负数:(0为有,1为无)"<<endl;

          cin>>o;  

          if(o!=0&&o!=1)
          {
                  cout<<"输入错误,请重新输入!"<<endl;
                  Carry();

                  exit(0);
          }

          if(m==0)  

          {   

                 cout<<"请选择除法有无余数:(0为有,1为无)"<<endl;   

                 cin>>d;  

                 if(d!=0&&d!=1)
                 {
                       cout<<"输入错误,请重新输入!"<<endl;
                       Carry();

                       exit(0);
                 }

          }  

          cout<<"请输入题目个数:"<<endl;  

          cin>>e;  

          if(e<=0)
          {
                  cout<<"输入错误,请重新输入!"<<endl;
                  Carry();

                  exit(0);
          }

          cout<<"请选择打印方式:(0为逐行打印,输入其他数字则为该行几道题)"<<endl;  

          cin>>f;  

          if(f<0)
          {
                  cout<<"输入错误,请重新输入!"<<endl;
                  Carry();

                  exit(0);
          }

          for(i=0;i<e;i++)  

          {   

                 a[i]=rand()%n;   

                 b[i]=rand()%n;   

                 c[i]=rand()%4;

                 if(c[i]==3&&b[i]==0)//除数不能为0

                 {

                          b[i]++;

                 } 

                 for(j=0;j<i;j++)       //判断题目是否重复,若重复则a[i]++

                          if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])     

                                     a[i]++;   

                if(m==0&&o==0&&d==0)   

                {    

                        Display(f);   

                }   

                else if(m==1)    //没有乘除法

                {   

                        if(c[i]>=2)     

                        c[i]=c[i]-2;    

                        Display(f);   

                 }   

                 else if(m==0&&o==1&&d==0)   //无负数,且被除数大于除数

                 {    

                         if(a[i]<b[i])    

                        {    

                                t=a[i];     

                                a[i]=b[i];    

                                b[i]=t;    

                        }    

                         Display(f);   

                }   

                else  

               {    

                        if(c[i]==3)    

                        {     

                                 if(a[i]<b[i])     

                                 {      

                                         t=a[i];     

                                         a[i]=b[i];      

                                         b[i]=t;     

                                }     

                                while(a[i]%b[i]!=0)     //无余数

                                        b[i]++;    

                          }   

                          Display(f);   

                 }  

          }  

}  

void main()

{

          Carry();

}

三、运行结果

四、错误原因

      1.刚开始未能把三个数组以及变量i定义为全局变量,导致在Display函数中,无法把主函数中的值传到其他函数中;

      2.功能是一点一点添加进去的,刚开始忘了把打印方式功能添加进去了,后来想起来又添加的;

      3.除法没有余数,必然被除数要大于或等于除数,为了减少工作量,没有涉及既有负数又没有余数的题目。

五、备注     

      3月13日下午,进行了一下程序的修改,添加了错误处理机制,使得程序更加完善。

转载于:https://www.cnblogs.com/benboerba/p/4329157.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值