zoukankan      html  css  js  c++  java
  • 软件工程课堂训练——随即四则运算加强版

    一、加强功能:

          让程序能接受用户输入答案,并判定对错。最后给出总共对/错的数量。

    二、设计思路:

          1、先定义两个数组,一个存放正确答案,一个存放用户给的答案。再定义两个变量来统计累加正确个数和错误个数;

          2、每次循环出题时计算出正确答案;

          3、然后出完题以后利用循环让用户输入答案,并判断正误,如果正确则正确累加1,否则错误累加1;

    三、源代码:

    // sizeyunsuanzhongjiban.cpp : 定义控制台应用程序的入口点。
    //
    #include "stdafx.h"
    #include "stdlib.h"  
    #include "time.h"   //调用随机函数
    #include "iostream"
    using namespace std;
    int main()
    {  
        int trueresult[10000],userresult[100000];//定义存放正确答案数组和存放错误答案数组
        int truenumber=0;//正确累加
        int falsenumber=0;//错误累加
        int i,k;
        int a,b;    //a,b为两个随机整数
        int g;    //g为随机产生四种运算符的情况
        int j;  //j为用户想要的题目数量
        int c,d,f; //c,d,f用户的选择
        cout<<"******欢迎进入随机产生四则运算程序******"<<endl;
        cout<<"****************************************"<<endl;
        cout<<"       是否有乘除法运算?(是->1,否->0)"<<endl;
        cin>>c;
        while(c!=0&&c!=1)
        {
            cout<<"请输入“0”或“1”"<<endl;
            cin>>c;
        }
    
        cout<<"       减法结果有无负数?(有->1,无->0)"<<endl;
        cin>>d;
        while(d!=0&&d!=1)
        {
            cout<<"请输入“0”或“1”"<<endl;
            cin>>d;
        }
        
        cout<<"       随机数数值范围是(100以内->1,随机->0)"<<endl;
        cin>>f;
        while(f!=0&&f!=1)
        {
            cout<<"请输入“0”或“1”"<<endl;
            cin>>f;
        }
    
        cout<<"****************************************"<<endl;
        
        
        
        cout<<"请输入题目数量:";
        cin>>j;
        while(j<=0)
        {
            cout<<"请输入大于0的数"<<endl;
            cin>>j;
        }
        for(i=0;i<j;i++)
        {  
        
            if(f==1)//控制随机数的范围
            {
                a=rand()%100;    //产生100以内随机数,将随机数控制在100以内
                b=rand()%100;
            }
            if(f==0)
                {
                    a=rand();
                    b=rand();
                }        
    
            if(c==0)//无乘除法时,输出加减
            {
                g=rand()%2;
                switch(g)
                {
                case 0:
                    cout<<a<<"+"<<b<<"="<<endl;
                    trueresult[i]=a+b;//计算正确答案
                    break;
                case 1:
                    if(d==0)//控制减法结果有无负数
                    {
                        if(a<b)
                        {
                            cout<<b<<"-"<<a<<"="<<endl;
                            trueresult[i]=b-a;//保证输出减法结果是正数
                        }
                        else
                        {
                            cout<<a<<"-"<<b<<"="<<endl;
                            trueresult[i]=a-b;
                        }
                
                    }
                        else
                    {
                        cout<<a<<"-"<<b<<"="<<endl;
                        trueresult[i]=a-b;
    
                    }
                    break;
                }
            }
            if(c==1)//允许有乘除法时,输出加减乘除
            {
                g=rand()%4;   //产生随机运算符
                switch(g)
                {
                case 0://当随机数是0时,输出加法
                    cout<<a<<"+"<<b<<"="<<endl;
                    trueresult[i]=a+b;
                    break;
                case 1://当随机数是1时,输出减法
                    if(d==0)
                    {
                        if(a<b)
                        {
                            cout<<b<<"-"<<a<<"="<<endl;
                            trueresult[i]=b-a;
                        }
                        else
                        {
                            cout<<a<<"-"<<b<<"="<<endl;
                            trueresult[i]=a-b;
                        }
    
                    }
                    else
                    {
                        cout<<a<<"-"<<b<<"="<<endl;
                        trueresult[i]=a-b;
    
                    }
                    break;
                case 2:
                    cout<<a<<"*"<<b<<"="<<endl;
                    trueresult[i]=a*b;
                    break;
                case 3:
                    cout<<a<<"/"<<b<<"="<<endl;
                    trueresult[i]=a/b;
                    break;
                }
            }
        }
        
        cout<<"请依次输出答案:"<<endl;//用户输出答案
        for(k=0;k<j;k++)
        {
            cout<<"请输入第"<<k+1<<"个答案"<<endl;
            cin>>userresult[k];
            if(userresult[k]==trueresult[k])//判断用户给的结果是否正确
            {
                cout<<""<<endl;
                truenumber++;
            }
            else if(userresult[k]!=trueresult[k])
            {
                cout<<" ×"<<endl;
                falsenumber++;
            }
        }
        cout<<"正确的答案有"<<truenumber<<""<<endl;
        cout<<"错误的答案有"<<falsenumber<<""<<endl;
        system("pause");
        return 0;
    }    

    四、运行结果

    五、心得体会

          刚开始的时候我想的很复杂,到处乱加功能,但到后来思路越来越清楚,明白了具体的结构,比以前更简单明了。这一次的练习比以前出现的错误要少,用时也少了很多。实践和练习真的是必不可少的。

    六、PSP0级 记录表:

                                                       周活动总结表

               姓名:焦燕                                                         日期:15/3/22

    日期   任务 听课 编写程序 阅读课本 准备考试 日总计
    周日          
    周一 300        300
    周二 400   20    420
    周三 100  60 30   190
    周四 300   15   315
    周五 200 80 15   295
    周六          
    周总结 1300 140 80   1520

                阶段时间和效率                                   周数:2

    总计      1300 140      80         1520
    平均 185.7 20 11.4   217
    最大 400 80 30   420
    最小 100 60 15   190

               以前各周的累计时间

    总计      800     240       110        1150
    平均 800 240 110   1150
    最大 800 240 110   1150
    最小 800 240 110   1150

                                                    时间记录表

     

                 学生 :   焦燕                                              日期 :15/3/22   

                 教师 :  王建民                                            课程 : PSP       

     

    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    15/3/17 8:00 12:00 40 200

    软件工程

    操作系统上课

    读梦断代码20分钟
      14:00 15:50  10 100 嵌入式系统  课间
      16:10 18:00 10 100 《windows高级编程》 课间休息
    3/18 8:00 9:50 10 100 计算机网络上课 课间休息
      10:30 11:30   60 四则运算编程  
      22:00 22:30   30 梦断代码  
    3/19 8:00 9:50 10 100 嵌入式系统 课间
      10:10 12:00 10 100 计算机技术上课 课间
      14:00 15:50 10 100 嵌入式开发技术 课间
      22:20 22:35    15 《梦断代码》  
    3/20 8:00 12:00 40 200

    软件工程

    操作系统上课

    课间休息

    喝水

      14:40 16:00   80 四则运算编程  
      22:10 22:25   15 《梦断代码》  
    3/22 12:00 14:00   120 整理资料 上传博客  

                                                  

                                                 缺陷记录日志

            学生 :   焦燕                                                          日期 :    3/22 

            教员 :  王建民                                                       程序号 :     3      

     

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

     15/3/18

     1

     

     编码

    编译 

    1min

     

     描述:没有 头文件#include "stdafx.h"

     

  • 相关阅读:
    Javaweb开发环境与搭建
    剑指Offer:面试题32——从1到n整数中1出现的次数(java实现)
    剑指Offer:面试题31——连续子数组的最大和(java实现)
    剑指Offer:面试题30——最小的k个数(java实现)
    剑指Offer:面试题29——数组中出现次数超过一半的数字(java实现)
    剑指Offer:解决难题时的三大方法
    剑指Offer:面试题28——字符串的排列(java实现)(待序)
    剑指Offer:面试题27——二叉搜索树与双向链表(java实现)
    剑指Offer:面试题26——复制复杂的链表(java实现)
    剑指Offer:面试题25——二叉树中和为某一值的路径(java实现)
  • 原文地址:https://www.cnblogs.com/123jy/p/4357032.html
Copyright © 2011-2022 走看看