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

一、题目及题目要求

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

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

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

周一

1003030   160

周二

 30    30

周三

 6030   90

周四

 10030    130

周五

 30    30

周六

 120    120

周总结

20030060   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

 

减法条件判断少了,造成有时输出题目数量不对

转载于:https://www.cnblogs.com/a1397240667/p/5268205.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值