软件工程课堂训练——随即四则运算加强版

一、加强功能:

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

二、设计思路:

      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"

 

原文地址:https://www.cnblogs.com/123jy/p/4357032.html