• 代码作业——四则运算(二)


    一、题目及题目要求

          编程随机生成四则运算,算数包括整数和真分数

    1.题目避免重复

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

    3.可以控制下列参数:

              是否有乘除法;

              是否有括号(最多可以支持十个数参与运算);

              数值范围;

              加减有无负数;

              除法有无余数。

    二、设计思路

       在上次程序的基础上进行修改,

        1.题目避免重复:为避免随机数每次相同用了srand函数。

        2.可定制出题数量:通过键盘输入数字,在for循环中控制循环次数。

       3. 是否有乘除法:把算符分为两大类,利用case语句选择前四种加和减,后四种乘除。

       4. 数值范围:在产生随机数时通过输入控制rand函数的参数,从而使运算数不超过此范围。

       5. 加减有无负号:结果无负数,判断两操作数,第一操作数若比第二操作数小,则第二个减第一个。

       6.除法有无余数:除法无余数,判断第一操作数模第二操作数的结果,若为0即可输出,否则再循环一次。

    三、代码

      1 /*2016.3.12.WeiLiHua四则运算*/
      2 #include<iostream>
      3 #include<ctime>
      4 using namespace std;
      5 void main()
      6 {
      7     int sj1,sj2,sf=1,sj3,sj4,r;//定义随机数及算符
      8     int Num;//题的数量
      9     char sfchose;//算符选择
     10     char yschose;//余数选择
     11     char jf;//减法结果选择
     12     int qznum;//取值范围
     13     srand((unsigned)time(NULL)); //srand函数是以现在系统时间作为时间种子产生随机数
     14     cout<<"*****欢迎使用自动出题系统*****"<<endl;
     15     cout<<"请对以下内容进行初始化设置:"<<endl;
     16     cout<<"请输入打印题数:"<<endl;
     17     cin>>Num;
     18     cout<<"请选择是否有乘除法?(y/n)"<<endl;
     19     cin>>sfchose;
     20     cout<<"请输入一个值确定算式中数值取值范围:"<<endl;
     21     cin>>qznum;
     22     cout<<"减法结果中出现负数吗?(y/n)";
     23     cin>>jf;
     24 
     25     if(sfchose=='y')
     26     {
     27         cout<<"请选择除法有无余数?(y/n)"<<endl;
     28         cin>>yschose;
     29     }
     30         cout<<"********************************"<<endl;
     31 
     32     for(int i=0;i<Num;i++)
     33     {
     34             sj1=rand()%qznum;
     35             sj2=rand()%qznum;
     36             sj3=rand()%qznum;
     37             sj4=rand()%qznum;
     38             if(sfchose=='n')//无乘除法
     39             {
     40                  sf=rand()%4;         
     41             }
     42             if(sfchose=='y')//有乘除法
     43             {
     44                   sf=rand()%8; 
     45             }
     46             switch(sf)
     47                 {        
     48                      case 0:
     49                        cout<<sj1<<"+"<<sj2<<"=     "<<endl;
     50                      break;
     51                     case 1:
     52                        if(jf=='n')//无负数
     53                        {
     54                            if(sj1<sj2)
     55                            {
     56                               cout<<sj2<<"-"<<sj1<<"=    "<<endl;
     57                         
     58                            }
     59                            else
     60                            {
     61                                cout<<sj1<<"-"<<sj2<<"=    "<<endl;
     62                            }
     63                         }
     64                        else
     65                        {
     66                             cout<<sj1<<"-"<<sj2<<"=    "<<endl;
     67                         
     68                        } 
     69                        break;
     70                   case 2:
     71                        if(sj1>sj3)
     72                        {
     73                            r=sj1;
     74                            sj1=sj3;
     75                            sj3=r;
     76                        }
     77                        if(sj2>sj4)
     78                        {
     79                            r=sj2;
     80                            sj2=sj4;
     81                            sj4=r;
     82                        }
     83                      cout<<"("<<sj1<<"/"<<sj3<<")"<<"+"<<"("<<sj2<<"/"<<sj4<<")=     "<<endl;
     84                     break;
     85                   case 3:
     86                         if(sj1>sj3)
     87                         {
     88                             r=sj1;
     89                             sj1=sj3;
     90                             sj3=r;
     91                         }
     92                         if(sj2>sj4)
     93                         {
     94                             r=sj2;
     95                             sj2=sj4;
     96                             sj4=r;
     97                         }
     98                         if(jf=='n')//减法结果无负数
     99                         {
    100                             if((sj1/sj3)<(sj2/sj4))
    101                             {
    102                                 cout<<"("<<sj2<<"/"<<sj4<<")"<<"-"<<"("<<sj1<<"/"<<sj3<<")=     "<<endl;
    103                             }
    104                             else
    105                             {
    106                                 cout<<"("<<sj1<<"/"<<sj3<<")"<<"-"<<"("<<sj2<<"/"<<sj4<<")=     "<<endl;
    107                             }
    108                         }
    109                          else
    110                          {
    111                              cout<<"("<<sj1<<"/"<<sj3<<")"<<"-"<<"("<<sj2<<"/"<<sj4<<")=     "<<endl;
    112                          }
    113                        break;
    114                    case 4:
    115                       cout<<sj1<<"*"<<sj2<<"="<<endl;
    116                     break;
    117                    case 5:
    118                        if(sj2==0)//分母为零则不计入总数
    119                        {
    120                            i=i-1;
    121                         
    122                        }
    123                        else if(yschose=='n')//除法没有余数
    124                        {
    125                            if(sj1%sj2==0)
    126                            {
    127                                cout<<sj1<<"/"<<sj2<<"="<<endl;
    128                         
    129                            }
    130                            else 
    131                            {
    132                                i=i-1;
    133                              
    134                            }
    135                        }
    136                        else if(yschose=='y')//除法有余数
    137                        {
    138                              if(sj1%sj2!=0)
    139                            {
    140                                cout<<sj1<<"/"<<sj2<<"="<<endl;
    141                     
    142                            }
    143                            else 
    144                            {
    145                                i=i-1;
    146                         
    147                            }
    148 
    149                        }
    150                        break;
    151                    case 6:
    152                     if(sj1>sj3)
    153                     {
    154                         r=sj1;
    155                         sj1=sj3;
    156                         sj3=r;
    157                     }
    158                     if(sj2>sj4)
    159                     {
    160                         r=sj2;
    161                         sj2=sj4;
    162                         sj4=r;
    163                     }
    164                      cout<<"("<<sj1<<"/"<<sj3<<")"<<"*"<<"("<<sj2<<"/"<<sj4<<")=     "<<endl;
    165                        break;
    166                    case 7:
    167                        if(sj1>sj3)
    168                        {
    169                            r=sj1;
    170                            sj1=sj3;
    171                            sj3=r;
    172                        }
    173                      if(sj2>sj4)
    174                      {
    175                         r=sj2;
    176                         sj2=sj4;
    177                         sj4=r;
    178                      }
    179                        cout<<"("<<sj1<<"/"<<sj3<<")"<<"/"<<"("<<sj2<<"/"<<sj4<<")=     "<<endl;
    180                        break;
    181                    default:
    182                    break;
    183                 }
    184     }
    185 }

    四、运行截图

     

    五、项目计划日志

    周活动总结表

    姓名:魏**                  日期2016.3.12

    日期   任务 听课  编写程序 阅读课本 准备考试     日总计

    周一

    100 30 30       160

    周二

      30         30

    周三

      60 30       90

    周四

     100 30         130

    周五

      30         30

    周六

      120         120

    周总结

    200 300 60       560

    阶段时间和效率                                            周数(上一次周活动表的周数+1):

    不包括上一周在内的累计时间      

    总计

     200

     300

     60

     

     

     

     560

    平均

     200

     300

     60

     

     

     

     560

    最大

     200

     300

     60

     

     

     

     560

    最小

     200

     300

     60

     

     

     

     560

     以前各周的累计时间      

    总计

     200

     300

      60

     

     

     

     560

    平均

     200

    300

      60

     

     

     

     560

    最大

     200

    300

     60

     

     

     

     560

    最小

     200

    300

     60

     

     

     

     560

    六、时间记录表:

    学生       魏**                                           日期   2016年3月12日 

    教师        王**                                          课程        软件工程      

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

     3.7

     16:30

     17:00

     无

    30

    编写程序 

    作业 

     3.8

    22:00

    22:30

     无

    30

    编写程序

    作业

     3.9

    16:30

    17:00

    60

    编写程序

    作业

    3.10

    21:15

    21:45

    30

    编写程序

    作业

     3.11

    22:10

    22:40

     无

    30

    编写程序

     作业

     3.12

     8:00

     10:00

     无

     120

     编写程序

     作业

     

    七、缺陷记录日志:

    学生           魏**      

    日期     2016312 

    教员          王**       

    程序号                         

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

     3.8

     1

     A

    编译

    编译

    10min

     

      转换到 COFF 期间失败: 文件无效或损坏

     3.9

     2

    A

    编译

     编译

    3min

     

     sfchose=='n',忘记单引号

     3.10

     3

    B

    运行

    运行后

    1min

     

    忘记cin>> yschose;

     3.11

    4

    A

    编译

    编译

    5min

     

    条件·不成立时, 忘记了i=i-1,让其再循环一次

    3.12

    5

    B

    运行

    运行后

    10min

     

    减法条件判断少了,造成有时输出题目数量不对
  • 相关阅读:
    Windows Bat命令常用操作
    Centos下安装Geth
    Centos常用操作
    为什么CEdit使用SetSel无法取消选择?
    VC编译参数/Zm问题
    XX.exe已经停止工作,的处理兼容性
    excel表,Alt+F11调用出vb语言处理excel表内容,很方便
    在限制了可选日期范围的calendar中,使几个日期不可选的方法
    Agile敏捷开发
    做软件的这些年
  • 原文地址:https://www.cnblogs.com/a1397240667/p/5268205.html
Copyright © 2020-2023  润新知