zoukankan      html  css  js  c++  java
  • 四则运算(二)

    一:设计思路

         通过随机函数始末位置来确定题目范围,通过用户输入选择项,确定题目难度(有无乘除,结果有无负数,除法有无余数)。通过用户输入行间隔和列数确定打印格式。

    二:源程序

      1 /*程序名:四则运算*/
      2 #include<iostream.h>
      3 #include<stdlib.h>
      4 #include<iomanip.h>
      5 int main()
      6 {
      7     int op1,op2;
      8     int min,max;
      9     int judgeopera;   //有无乘除判断
     10     int judgesign;    //有无正负判断
     11     int judgeremain;  //有无余数判断
     12     int count;        //题目数量
     13     int yunsuan;      //确定运算符
     14     int j;
     15     int row;          //行间隔
     16     int column;       //列数
     17     int flag=0;
     18     srand((unsigned)time(0));
     19     cout<<"请输入数值范围:";
     20     cin>>min>>max;
     21     cout<<"请输入输出行间隔:";
     22     cin>>row;
     23     cout<<"请输入输出列数:";
     24     cin>>column;
     25     char yun[5]={'+','-','*','/'};
     26     cout<<"输入题目数量:";
     27     cin>>count;
     28     cout<<"是否含有乘除(1表示Yes,2表示No)";
     29     cin>>judgeopera;
     30     while(judgeopera!=1&&judgeopera!=2)                 //如果输入不符合,重新输入
     31     {
     32         cout<<"重新输入:";
     33         cin>>judgeopera;
     34     }
     35     cout<<"是否允许负数存在(1表示Yes,2表示No)";
     36     cin>>judgesign;
     37     while(judgesign!=1&&judgesign!=2)
     38     {
     39         cout<<"重新输入:";
     40         cin>>judgesign;
     41     }
     42     if(judgeopera==1)
     43     {
     44         cout<<"有乘除法时是否允许余数存在(1表示Yes,2表示No)";
     45         cin>>judgeremain;
     46         while(judgeremain!=1&&judgeremain!=2)
     47         {
     48             cout<<"重新输入:";
     49             cin>>judgeremain;
     50         }
     51     }
     52     for(int i=0;i<count;i++)
     53     {
     54 
     55         op1=int(rand()%(max-min+1))+min;
     56         op2=int(rand()%(max-min+1))+min;
     57         if(judgeopera==1)
     58         {
     59             yunsuan=int(rand()%4);
     60             if(judgesign==1)
     61             {
     62                 if(judgeremain==1)                                 //有乘除,有负数,有余数部分
     63                 {
     64                     cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
     65                     flag=flag+1;
     66                 } 
     67                 else                                               //由乘除,有负数,无余数部分
     68                 {
     69                     if(yunsuan==3)
     70                     {
     71                         while(op1%op2!=0)
     72                         {
     73 
     74                             op1=int(rand()%(max-min+1))+min;
     75                             op2=int(rand()%(max-min+1))+min;
     76                         }
     77                         cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
     78                         flag=flag+1;
     79                     }
     80                     else
     81                     {
     82                         cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
     83                         flag=flag+1;
     84                     }
     85                 }
     86             }
     87             else                        //有乘除,无负数,
     88             {
     89                 if(yunsuan==1)
     90                 {
     91                     while(op1<op2)
     92                     {
     93 
     94                         op1=int(rand()%(max-min+1))+min;
     95                         op2=int(rand()%(max-min+1))+min;
     96                     }
     97                     cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
     98                     flag=flag+1;
     99                 }
    100                 else
    101                 {
    102                     if(judgeremain==1)    //有乘除,无负数,有余数部分
    103                     {
    104                         cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
    105                         flag=flag+1;
    106                     }
    107                     else
    108                     {
    109                         if(yunsuan==3)
    110                         {
    111                             while(op1%op2!=0)
    112                             {
    113                                 op1=int(rand()%(max-min+1))+min;
    114                                 op2=int(rand()%(max-min+1))+min;
    115                             }
    116                             cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
    117                             flag=flag+1;
    118                         }
    119                         else
    120                         {
    121                             cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
    122                             flag=flag+1;
    123                         }
    124                      }
    125                 }
    126             }
    127         }
    128         else  //无乘除部分
    129         {
    130 
    131             yunsuan=int(rand()%2);
    132             if(judgesign==1)
    133             {
    134                 cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
    135                 flag=flag+1;
    136             }
    137             else
    138             {
    139                 if(yunsuan==1)
    140                 {
    141                     while(op1<op2)
    142                     {
    143                         op1=int(rand()%(max-min+1))+min;
    144                         op2=int(rand()%(max-min+1))+min;
    145                     }
    146                     cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
    147                     flag=flag+1;
    148                 }
    149                 else
    150                 {
    151                     cout<<i+1<<""<<op1<<yun[yunsuan]<<op2<<"	";
    152                     flag=flag+1;
    153                 }
    154             }
    155         }
    156         if(flag==column)     //列数设置
    157         {
    158             for(int p=0;p<=row;p++)   //行间隔设置
    159             {
    160                  cout<<endl;
    161             }
    162             flag=0;
    163         }
    164     }
    165     return 0;
    166 }

    三:截图

     四:psp

     一、项目计划总结:

                                        周活动总结表

    姓名: 王童博                             日期:2015/3/15

    日期       任务

    听课

    编写程序

    阅读课本

    准备考试

     

     

    日总计

    周日

     

     

     

     

     

     

     

    周一

     

     

     

     

     

     

     

    周二

     120

     

     

     

     

     

     120

    周三

     

     50

     

     

     

     

    50

    周四

     

     

     50

     

     

     

     50

    周五

     120

    60

     

     

     

     

     180

    周六

     

     100

     

     

     

     

     100

    周总结

     240

    210

     50

     

     

     

     500

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

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

    总计

     

     

     

     

     

     

     

    平均

     

     

     

     

     

     

     

    最大

     

     

     

     

     

     

     

    最小

     

     

     

     

     

     

     

    以前各周的累计时间                                                                                    

    总计

     240

     210

     20

     

     

     

     500

    平均

     240

     210

     20

     

     

     

     500

    最大

     240

     210

     20

     

     

     

     500

    最小

     240

     210

     20

     

     

     

     500

    二、时间记录表:

     学生       王童博                                                      日期       2015/3/15                

     教师        王建民                                                     课程           PSP       

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

     3/11

     7:00

     7:50

     

     50

     编程

     

     3/12

     9:00

     9:50

     

     50

    查阅资料

     

     3/13

     8:00

     9:00

     

     60

     编程

     

     3/14

     6:50

     8:30

     

     100

     编程

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    三、缺陷记录日志:

     学生       王童博              

     日期        3/15           

     教员       王建民   

     程序号    四则运算           

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

     3/11

     1

     范围

     编码

     运行测试

     2min

     

     输入错误,导致程序崩溃。设置条件,输入错误,则重新输入

     3/13

     2

     函数

     编码

     运行测试

     2min

     

     Rand函数的随机性。使用srand来进行

     3/14

     3

     可能性没有考虑周全

     编码

     运行测试

     10min

     

    当无余数时,会产生空题。重新生成运算解决问题,

     

     

     

     

     

     

     

     

     五:总结

          此次课堂练习,当然了课堂上 没有完成。在课下通过查找资料,完成了几点功能。但是对于括号和小数的精度则没有实现。完成的过程中遇到许多问题,本想以函数形式展现,可是以我的思路写下来,if else可以完成所需要求。不过丧失了程序的模块化。整个程序看起来有点杂。对于使用链表来存储运算题,最后输出。通过查询有无相同有无重复蛮好的想法,但由于对链表的不熟悉导致失败。在以后的试验中还得强化自己编程能力。来弥补一年的空缺。

  • 相关阅读:
    SQL应用初级指南
    XML 文档的基本操作
    SQL中单引号的转义
    C# (输入输出流)
    C# 文件与目录的基本操作(System.IO)
    数据库对象命名
    .Net 中的反射(反射特性) Part.3 (转载)
    C# 中的委托和事件(详解)
    SQL Server TransactSQL 编程
    Brush 色谱
  • 原文地址:https://www.cnblogs.com/wang321/p/4339919.html
Copyright © 2011-2022 走看看