• 四则运算3程序扩展


    一.设计思想

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

      2.对于用户输入答案这个条件进行编程时,是按照系统输入一个题目,同学进行回答,然后系统进行判断对错。但是这部符合题目的要求不能定制,而且图形界面不好看,于是在系统出完题后在让学生输入一行答案。

     3.首先将正确的答案放入一个数组里面,然后同学的答案放入另一个数组,最后两个数组作比较,相同的输入正确,反之错误。

      4.统计正确与错误元素的序列号作为提醒同学错几题正确几题,然后输出正确答案。

    二.源程序代码

    #include<iostream.h>
    #include<stdlib.h>
    void size(int X,int Y)
    {

    int d,n,a,i,j,b,c1,c2,z,e,x,y,m,h,t;
    int rightanwer[10000],anwer[10000];
    int r[1000];
    int w[1000];
    int wright[10000];
    int cunt=0;
    int nc=0;

    cout<<" "<<"1.题目的数量(1~100):";
    cin>>m;
    while(m>100||m<0)
    {
    cout<<" .请正确输入数量:";
    cin>>m;

    }
    cout<<endl;

    cout<<" "<<"2.题目的列数(1~7):";
    cin>>h;
    while(h>7||h<0)
    {
    cout<<" .请正确输入列数:";
    cin>>h;

    }

    cout<<endl;

    cout<<" "<<"3.打印间隔(1~5):";
    cin>>t;
    while(t>5||t<0)
    {
    cout<<" .请正确输入间隔:";
    cin>>t;

    }
    cout<<endl;


    cout<<" "<<"4.数值最大为多少:";
    cin>>b;
    while(b>500||b<-500)
    {
    cout<<" .请重新输入最大数(0~500):";
    cin>>b;

    }
    cout<<endl;

    cout<<" "<<"5.式内是否有乘除(有:1;无:0):";
    cin>>a;
    while(a!=1&&a!=0)
    {
    cout<<" .请重新输入条件:";
    cin>>a;

    }
    cout<<endl;

    cout<<" "<<"6.加减数有无负数(有:1;无:0):";
    cin>>z;
    while(z!=1&&z!=0)
    {
    cout<<" .请重新输入条件:";
    cin>>z;

    }
    cout<<endl;
    cout<<"***********"<<"以下是题目"<<"*****************"<<endl;

    for(i=0;i<m;i++)

    {
    cout<<i+1<<".";

    X=rand()%b;
    Y=rand()%b;
    d=rand();
    e=rand();

    c1=d%2;
    c2=e%2;

    n=d%4;

    if(n==3)
    {
    if(Y!=0)
    {
    X=Y*(rand()%100);//确定能够除尽
    }
    else
    {
    X=(Y+1)*(rand()%100);
    }
    }
    //------------------------------------有无乘除
    switch(a)
    {
    case 0:
    if(n>1)
    {
    n=n-2;
    };break;
    case 1: break;
    default:cout<<"输入的乘除控制条件错误!";

    }

    //------------------------------------加减有无负数

    switch(z)
    {
    case 0:break;
    case 1: x=(-1)^c1*X;

    y=(-1)^c2*Y;break;
    default:cout<<"输入的加减控制条件错误!";
    }

    //----------------------------------控制括号和输出

    switch(n)
    {
    case 0:if(z>0)
    {
    cout<<x<<"+"<<"("<<y<<")"<<"="<<" ";
    }
    else
    {
    cout<<X<<"+"<<Y<<"="<<" ";
    };break;
    case 1:if(z>0)
    {
    cout<<x<<"-"<<"("<<y<<")"<<"="<<" ";
    }
    else
    {
    cout<<X<<"-"<<Y<<"="<<" ";
    };break;
    case 2:cout<<X<<"*"<<Y<<"="<<" ";break;
    case 3:cout<<X<<"/"<<Y<<"="<<" ";break;

    }
    //-----------------------------------------判断是否答对,并且计算答对的数量
    // cin>>anwer[i];
    switch(n)
    {
    case 0:rightanwer[i]=x+y;break;
    case 1:rightanwer[i]=x-y;break;
    case 2:rightanwer[i]=X*Y;break;
    case 3:rightanwer[i]=X/Y;break;

    }

    //----------------------------------------控制列数,和两行间隔数

    if((i+1)%h==0)
    {
    for(j=0;j<t;j++)
    {
    cout<<endl;
    }
    }

    }
    cout<<endl;
    cout<<"****************************************"<<endl;
    cout<<"请同学输入正确的答案:"<<endl;
    for(i=0;i<m;i++)
    {
    cin>>anwer[i];
    if(rightanwer[i]==anwer[i])
    {


    r[cunt]=i+1;
    cunt++;
    }
    else
    {

    w[nc]=i+1;
    nc++;
    }
    }
    cout<<"*****************************************"<<endl;
    cout<<"对学生答题情况进行系统统计:"<<endl;

    cout<<"1).答对题目的数量为:"<<cunt<<endl<<"2).答错题目的数量为:"<<m-cunt<<endl;


    cout<<"3).答对的题目为:";
    for(i=0;i<(cunt);i++)
    {
    cout<<r[i]<<" ";
    }
    cout<<endl;


    cout<<"4).答错的题目为:";
    for(i=0;i<(nc);i++)
    {
    cout<<w[i]<<" ";

    }
    cout<<endl;


    cout<<"5).正确答案为:"<<endl;
    for(i=0;i<m;i++)
    {
    cout<<" "<<rightanwer[i]<<" ";
    }
    cout<<endl;


    }


    //--------------------------主函数
    int main()
    {
    int a;
    int b;
    cout<<"***********"<<"四则运算题目定制:"<<"************"<<endl<<endl;
    size(a,b);
    return 0;
    }

    三.运算截图

    四.编程总结

        在编写程序的过程中一定要做到条理有序不仅便于读写代码,而且便于程序的测试。

        在这次的程序的开放过程中体会到用户的需求,例如,用户需要知道自己那道题目答对那道答错,然后知道正确结果。程序要求很快就编写完成,更多的时间是在完善程序,真让我深有体会。

    五.记录开发表

    3 周活动总结表            
    姓名: 付东     日期: 3月21日    
    日期任务 听课 编写程序 阅读课本 准备考试     日总计
    周日              
    周一              
    周二 300 30 0       330
    周三 100 0         100
    周四 400 0 0       400
    周五 200 40 0       240
    周六 0 240 0       150
    周总计 1000 290 0       1290
                   
    阶段时间和效率     周数: 3      
                   
    不包括上一周在内的累计时间              
    总计 1000 290         1290
    平均 1000 290         1290
    最大 1000 290         1290
    最小 1000 290         1290
                   
                   
    以前各周的累计时间              
    总计 2490 500 45       3400
    平均 1245 250 22.5       1700
    最大 1200 290 45       1535
    最小 1200 210 0       1410
    学生: 付东   日期: 3月21日    
    教师: 王建民   课程: 软件工程    
                 
    日期 开始时间 结束时间 中断时间 净时 活动 备注
    3月18日 9:30 11:30 10:00 100 编程 四则程序的扩展
      2:30 5:40   150 编程 四则的扩展,聊天,玩手机
      7:30 9:50   120 阅读英语 好好考级
    3月20日 9:20 11:30 20 70 编程结对 编程,聊天,玩手机
      4:00 4:30   30 作业 将最近的作业写完
    3月21日 2:00 5:30 2:30-3:40 110 结对编程 打球编程
      7:00 9:00   120 上传博客  
    学生: 付东          
    日期: 3月21日          
    教员: 王建民          
    程序: 四则运算扩展          
    日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
    3月18日 1   编码 编码 2min  
      循环次数使用错误
      2   编码 运行 10min  
      数组定义太大导致程序错误。
    3月20日 3   编码 编译 1min  
      程序中使用制表符驶左对齐。
      4   编码 编译 1min  
     3月21 日 结对二实验中,输入数组的行列计算错误
      5   编码 编译 0.2min  
      测试正确错误题目错误,算好循环次数。
      6   编码 编译 0.2min  
      计算子数组中,加法中输入的数组不对应。
  • 相关阅读:
    ruby 二进制转十进制 Integer("0b101") = 5
    开始菜单和我的文档的我的图片及我的音乐变成 my pictrues 正常图标了
    ruby watir 莫名其妙的错误
    Excel SaveAS是去掉提示框
    apache && jboss安装
    ruby require include的区别
    ruby控制鼠标
    This error is raised because the column 'type' is reserved for storing the class in case of inheritance
    用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
    ASP.NET 如何动态修改 Header 属性如添加 Meta 标签 keywords description!
  • 原文地址:https://www.cnblogs.com/bmbcbyc/p/4356176.html
Copyright © 2020-2023  润新知