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

一、加强功能:

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

二、设计思路:

      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 6030 190
周四300 15 315
周五2008015 295
周六     
周总结130014080 1520

            阶段时间和效率                                   周数:2

总计     1300140     80       1520
平均185.72011.4 217
最大4008030 420
最小1006015 190

 

           以前各周的累计时间

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

                                                时间记录表

 

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

             教师 :  王建民                                            课程 : PSP       

 

日期开始时间结束时间中断时间净时间活动备注
15/3/178:0012:0040200

软件工程

操作系统上课

读梦断代码20分钟
 14:0015:50 10100嵌入式系统 课间
 16:1018:0010100《windows高级编程》课间休息
3/188:009:5010100计算机网络上课课间休息
 10:3011:30 60四则运算编程 
 22:0022:30 30梦断代码 
3/198:009:5010100嵌入式系统课间
 10:1012:0010100计算机技术上课课间
 14:0015:5010100嵌入式开发技术课间
 22:2022:35  15《梦断代码》 
3/208:0012:0040200

软件工程

操作系统上课

课间休息

喝水

 14:4016:00 80四则运算编程 
 22:1022:25 15《梦断代码》 
3/2212:0014:00 120整理资料 上传博客 

                                              

                                             缺陷记录日志

        学生 :   焦燕                                                          日期 :    3/22 

        教员 :  王建民                                                       程序号 :     3      

 

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

 15/3/18

 1

 

 编码

编译 

1min

 

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

 

 

转载于:https://www.cnblogs.com/123jy/p/4357032.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值