• 四则运算-终结版


    ---恢复内容开始---

    一、题目

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

    选择1

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

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

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

    #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,所以超过边界值就会出现溢出状况,会出现乱码

    还有 通过两人合组,我能和我的小伙伴能够互补合作,编程的效率更高。

    五、日志

                   项目记录 日志:

     

    听课

    编写程序

    阅读相关书籍

    网上查找资料

    日总计

    周一

    2

    0

    1

    0

    3

    周二

    0

    1

    0.5

    1

    2.5

    周三

    0

    3

    0.5

    1

    4.5

    周四

    2

    0.5

    0.5

    0

    3

    周五

    0

    3

    0.5

    1

    4.5

    周六

    0

    6

    0.5

    1

    7.5

    周日

    周总计

    4

    13.5

    3.5

    4.5

    25

    时间记录日志

    日期

    开始 时间

    结束时间

    中断时间

    净时间

    活动

    备注

    星期一

    1400

    1600

    10

    100

    上课

    软件工程

    1800

    1900

    0

    60

    阅读书籍

    梦断代码

    星期二

    1600

    1700

    0

    60

    编程

    四则运算

    1900

    2000

    0

    120

    阅读书籍 

    上网

    查找相关函数 

    星期三

    1300

    1700

    60

    180

    编程

    四则运算

    1900

    2100

    30

    120

    阅读书籍

    构建之法

    星期四

    1400

    1600

    10

    100

    上课

    软件工程

    1900

    2000

    0

    60

    编程 查找资料

    四则运算

    星期五

    1300

    1700

    60

    180

    编程

    四则运算

    1700

    18:00

    0

    60

    上网

    查资料 

    星期六

    900

    1100

    30

    120

    编程

    四则运算

    1300

    1800

    30

    270

    编程

    四则运算

           缺陷记录日志:

                                         

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复阶段

    修复缺陷

    3/18

    1

    结果的存储

     

     

    20min

     

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

    1

    依然是存数的问题

     

     

    2min

     

    商和余数定义成两个数组

    3/29

    2

    程序结果不稳定

     

     

    未解决

     

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

     

     

     

     

     

     

     

     

     

    我的伙伴 张瑶:http://www.cnblogs.com/zhangyao999/

  • 相关阅读:
    Quartz2.0以上版本的单机和集群
    Mysql的Haproxy反向代理和负载均衡
    spring AOP原理解析
    Restful接口调用方法超详细总结
    mysql数据库主从同步
    数据备份的OSS接口
    读取properties配置文件的方法
    算法学习——堆排序(二叉树排序)
    回溯算法的实现
    冒泡排序
  • 原文地址:https://www.cnblogs.com/luxin123/p/5295164.html
Copyright © 2020-2023  润新知