zoukankan      html  css  js  c++  java
  • 四则运算终结版

    一、题目

    每个同学选一个方向,把程序扩展一下:
    1、让程序能接受用户输入答案,并判定对错。并输出正确的错题数
    2、把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目。
    3、把程序变成一个Windows 图形界面的程序。
    4、把程序变成一个智能手机程序 (你正在用什么手机, 就写那个手机的程序)。(可以延期3周后)
    5、选一个你从来没有学过的编程语言,试一试实现基本功能。

    选择1

    二、思路:1 用一个数组把结果存到里面去,用以计算结果

             2 用户输入的结果与正确答案相比对,给出提示信息并输出正确答案。

             3 有余数的情况是,先判断是否是除法,然后是的话就输入两个数,一个是商,一个是余数,判断答案是否正确。

    三、源代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    #include<iostream.h>
    #include<stdlib.h>
    #include<time.h>
     
     void main( )
     {
         srand(time(NULL));//避免题目重复
         int i,j, x,y,t[100],b;//x,y表示两个数随机数,i表示题目的数量,t,b是在两个数相减中保证结果为正定义的变量
         int a[7];
          cout<<"请输入要打印的题目数:"<<endl;  
          cin>>a[0];
          while(a[0]<=0)  //题目数必须为正数
          {
              cout<<"请重新输入有效的题目数:"<<endl;
              cin>>a[0];
          };
          cout<<"请选择否有乘除法(是1;否0):"<<endl;
          cin>>a[1];
          while((a[1]!=1)&&(a[1]!=0)) //只能选择1或0
          {
              cout<<"请重新输入有效的数值:"<<endl;
              cin>>a[1];
          };
          cout<<"请输入运算数的范围:"<<endl;
          cin>>a[2];
          while(a[2]<=0)  //运算数必须为正数
          {
              cout<<"请重新输入有效的范围:"<<endl;
              cin>>a[2];
          };
         cout<<"请选择结果有无负数(是1;否0):"<<endl;
         cin>>a[3];
         while((a[3]!=1)&&(a[3]!=0))  //只能选择1或0
         {
             cout<<"请重新输入有效的数值:"<<endl;
             cin>>a[3];
         };
         cout<<"请选择结果有无余数(是1;否0):"<<endl;
         cin>>a[4];
         while((a[4]!=1)&&(a[4]!=0))  //只能选择1或0
         {
             cout<<"请重新输入有效的数值:"<<endl;
             cin>>a[4];
         };
         cout<<"请输入要打印的列数: "<<endl;
         cin>>a[5];
         while(a[5]<=0)
         {
             cout<<"请重新输入有效列数:  "<<endl;
             cin>>a[5];
         };
         cout<<"请输入每行间隔数: "<<endl;
         cin>>a[6];
         
         int result[100],resulty[100]={0},daan[100],yushu[100]={0};
        for(i=0;i<a[0];i++)
        {
            if(a[1]==1)//有乘除法的运算
            {
                t[i]=rand()%4;
            }
            else//无乘除法的运算
            {
                t[i]=rand()%2;
            }
            x=rand()%a[2]+1;
            y=rand()%a[2]+1;
            if(t[i]==0)//加法
            {
                 
               
               if((i+1)%a[5]==0)//判断是否换行
               {
                   cout<<i+1<<"·"<<x<<"+"<<y<<"=";
                   result[i]=x+y;
               if(a[6]!=0)
               {
                   for(j=0;j<a[6];j++)
                   {
                      cout<<endl;
                   }
               }
               }
               else
               {
               cout<<i+1<<"·"<<x<<"+"<<y<<"="<<' ';
                
               }
                
            }
            if(t[i]==1)//减法,考虑是否存在负数
            {
                if(a[3]==0)//不存在结果负数
                {
                    b=x;
                    x=y;
                    y=b;
     
                }
                if(a[3]==1)//存在结果是负数
                {
     
                }
                 
                 
                 if((i+1)%a[5]==0)//判断是否换行
                 {
                     cout<<i+1<<"·"<<x<<"-"<<y<<"=";
                     result[i]=x-y;
                  
                    
                   if(a[6]!=0)//如果间隔数不是零
                   {
     
                       for(j=0;j<a[6];j++)
                       {
                           cout<<endl;
                       }
                   }
                 }
                 else
                 {
                 cout<<i+1<<"·"<<x<<"-"<<y<<"="<<' ';
     
                 }
            }
            if(t[i]==2)//乘法
            {
                 
                 
                 if((i+1)%a[5]==0)//判断是否换行
               {
                  cout<<i+1<<"·"<<x<<"*"<<y<<"=";
                  result[i]=x*y;
                   if(a[6]!=0)
                   {
                        
                    
                       for(j=0;j<a[6];j++)
                       {
                           cout<<endl;
                       }
                   }
                 }
                 else
                 {
                 cout<<i+1<<"·"<<x<<"*"<<y<<"="<<' ';
                 }
     
            }
            if(t[i]==3)//除法,考虑结果是否有余数
            {
                if(a[4]==1)//结果有余数
                {}
                else
                {
                    while(x%y!=0)//不能整除,重新生成随机函数
                    {
                        x=rand()%a[2]+1;
                        y=rand()%a[2]+1;
                    };
     
                }
             
                 
                 if((i+1)%a[5]==0)//判断是否换行
               {
                    
                    cout<<i+1<<"·"<<x<<"/"<<y<<"=";
                    result[i]=x/y;
                    resulty[i]=x%y;
                   if(a[6]!=0)
                   {
                       for(j=0;j<a[6];j++)
                       {
                           cout<<endl;
                       }
                   }
                 }
                 else
                 {
            cout<<i+1<<"·"<<x<<"/"<<y<<"="<<' ';
                 }
            }
        }
        cout<<"请输入解题答案"<<endl;
        for(i=0;i<a[0];i++)
        {
            cout<<i+1<<".";
            if(t[i]==3)
            {
                cout<<"请输入商:";
                cin>>daan[i];
                cout<<"请输入余数:";
                cin>>yushu[i];
            }
            else
            {
                cin>>daan[i];
            }
            if(t[i]==3)
            {
                if(daan[i]==result[i]&&yushu[i]==resulty[i])
                {
                    cout<<"答案正确,请输入下一题答案"<<endl;
                }
                else
                {
                    cout<<"答案错误,正确答案为:"<<result[i]<<"  "<<resulty[i]<<endl;
                }
            }
            else
            {
                if(daan[i]==result[i])
                {
                    cout<<"答案正确"<<endl;
                }
                else
                {
                    cout<<"答案错误,正确答案为:"<<result[i]<<endl;
                }
            }
        }
        cout<<"结束,欢迎使用"<<endl;
    }

     四、结果

    五、实验总结

    通过此次实验我收获颇多。第一,首先考虑结果的存放,我把她放到一个整形数组里,但是结果可能是有余数的,所以我就定义了两个数组一起作为结果

    第二,然后我又想,只有除法的时候需要用到两个结果,一个用来存商,一个用来存余数,所以还得判断题目是否为除法

    第三,此程序存在一定的不健壮性,因为我定义的数组为100,所以超过边界值就会出现溢出状况,会出现乱码

     第四,次程序存在一定的问题,还需继续改进。

    六、

    项目计划总结

    周活动总结表

    姓名:张瑶                                                       日期:2016/3/19

    任务

    日期

    听课

    编程

    阅读课外数目

    锻炼身体

    写老师留得作业

    业余活动

    日总计

    (分钟)

    周日

    180

    120

    300

    600

    周一

    120

    60

    60

    240

    周二

    0

    30

    120

    150

    周三

    0

    60

    30

    240

    330

    周四

    120

    30

    30

    120

    300

    周五

    0

    100

    30

    120

    250

    周六

    400

    400

    2,时间记录日志:

    学生:张瑶                                                                     日期:2016/3/18

    老师:王建民                                                                      课程:PSP

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    3/17

    08:00

    12:00

    40

    200

    上课

    14:30

    18:30

    240

    上网娱乐

    哈哈

    19:00

    20:00

    60

    写作业

    22:00

    22:30

    30

    读梦断代码

    3/20

    08:00

    10:00

    20

    100

    听课

    11:00

    12:00

    60

    在吃饭的路上和吃饭ing

    15:00

    19:00

    180

    肖申克的救赎

    22:00

    22:30

    30

    读梦断代码

    3/18

    10:00

    12:00

    20

    100

    听课

    15:00

    18:30

    270

    构思,编程

    19:00

    20:00

    60

    写作业

    21:00

    21:30

    30

    读梦断代码

    3/19

    08:00

    12:00

    200

    编程

    14:00

    15:40

    100

    改进代码

    21:00

    21:30

    30

    读梦断代码

    3,缺陷记录日志:

    学生:张瑶                                                                    日期:2016/3/18

    老师:王建民 

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复阶段

    修复缺陷

    3/21

    1

    结果的存储

    20min

    考虑到除法出现小数,不造怎么存,后来写成商和余数的形式,都是整数

    1

    依然是存数的问题

    2min

    商和余数定义成两个数组

    3/22

    2

    程序结果不稳定

    未解决

    有时候正确结果出现乱码,考虑是结果溢出

                                                                    我的结对伙伴:鲁鑫 http://home.cnblogs.com/u/luxin123/

  • 相关阅读:
    logback配置模板
    mail
    jpa,querydsl
    加密签名
    angular2快速开始
    主从复制
    随笔
    缺货源的小伙伴们 我发现一个超级好的货源供应链 分享给大家
    canal+kafka+logstash+es 架构 logstash的配置
    golang 根据图片url获取图片尺寸
  • 原文地址:https://www.cnblogs.com/zhangyao999/p/5290665.html
Copyright © 2011-2022 走看看