zoukankan      html  css  js  c++  java
  • 四则运算3

    题目:在四则运算2的基础上添加如下功能:让程序能接受用户输入答案,并判定对错。最后给出总共对/错的数量。

    一、设计思路

    在四则运算2的基础上,添加了接收用户输入答案的函数,存入数组,当遇到运算是除法时,若用户选择有余数,则除法运算需要接收两个答案,一个为商,一个为余数。

    当商和余数都和答案相同时,此题才判断为对。

    二、源代码

    #include<iostream.h>
    #include<stdlib.h>
    int a[100],b[100],c[100];             //两个数和运算符
    int answer[100]={0};                  //答案
    int huida[100]={0};                   //用户输入的答案
    int huiday[100]={0};                  //用户输入的余数
    int y[100]={0};                       //正确的余数
    int i;
    void Input(int timu,int yushu)        //用户输入函数
    {
         int k;
         int rcount=0;                     //正确题数
         int wcount=0;                     //错误题数
         cout<<"请输入答案:"<<endl;
         for(k=0;k<timu;k++)
         {
              if(c[k]==3&&yushu==0)         //有余数除法则先输入商再输入余数
              {
                   cout<<k+1<<". 商为:";
                   cin>>huida[k];
                   cout<<"余数为:";
                   cin>>huiday[k];
              }
              else
          {
                   cout<<k+1<<". ";
                   cin>>huida[k];
              }
         }
         for(k=0;k<timu;k++)
         {
              if(c[k]==3&&yushu==0)        //有余数除法,商和余数都正确才正确
              {
                   if(huida[k]==answer[k]&&huiday[k]==y[k])
                   {
                       rcount++;
                   }
                   else
                   {
                       cout<<"第"<<k+1<<"道题出错;"<<endl;
                       wcount++;
                   }
              }
              else
              {
                   if(huida[k]==answer[k])
                   {
                       rcount++;
                   }
                   else
                   {
                       cout<<"第"<<k+1<<"道题出错;"<<endl;
                       wcount++;
                   }
              }
         }
         cout<<"答对"<<rcount<<"道题,"<<"答错"<<wcount<<"道题。"<<endl;
    }
    void Display(int f,int yushu)                               //输出题目的函数
    {
         if(f==0)                                                //判断打印要求
         {
              if(c[i]==0)
              {
                  cout<<i+1<<". "<<a[i]<<'+'<<b[i]<<'='<<endl;
                  answer[i]=a[i]+b[i];
              }
              if(c[i]==1)
              {
                  cout<<i+1<<". "<<a[i]<<'-'<<b[i]<<'='<<endl;
                  answer[i]=a[i]-b[i];
              }
              if(c[i]==2)
              {
                  cout<<i+1<<". "<<a[i]<<'*'<<b[i]<<'='<<endl;
                  answer[i]=a[i]*b[i];
               }
               if(c[i]==3)
               {
                   cout<<i+1<<". "<<a[i]<<'/'<<b[i]<<'='<<endl;
                   answer[i]=a[i]/b[i];
                   if(yushu==1)
                   {         
                       y[i]=a[i]%b[i];
                   }
                }

         }
         else
         { 
              if(c[i]==0)
              {
                  cout<<i+1<<". "<<a[i]<<'+'<<b[i]<<'='<<' ';
                  answer[i]=a[i]+b[i];
              }
              if(c[i]==1)
              {
                  cout<<i+1<<". "<<a[i]<<'-'<<b[i]<<'='<<' ';
                  answer[i]=a[i]-b[i];
              }
              if(c[i]==2)
              {
                  cout<<i+1<<". "<<a[i]<<'*'<<b[i]<<'='<<' ';
                  answer[i]=a[i]*b[i];
              }
              if(c[i]==3)
              {
                  cout<<i+1<<". "<<a[i]<<'/'<<b[i]<<'='<<' ';
                  answer[i]=a[i]/b[i];
                  if(yushu==1)
                  {
                      y[i]=a[i]%b[i];
                  }
              }
              if((i+1)%f==0)
                  cout<<endl;
         }
    }
    void Carry()                                             //主要执行函数
    {
         int j,t;
         int cc,fw,zf,ys,tm,dy,an;
         cout<<"请选择是否有乘除法:(0为是,1为否)"<<endl;
         cin>>cc;
         if(cc!=0&&cc!=1)
         {
             cout<<"输入错误,请重新输入!"<<endl;
             Carry();
             exit(0);
         }
         cout<<"请输入取值范围:(0-?)"<<endl;
         cin>>fw;
         cout<<"请选择加减有无负数:(0为有,1为无)"<<endl;
         cin>>zf;
         if(zf!=0&&zf!=1)
         {
              cout<<"输入错误,请重新输入!"<<endl;
              Carry();
              exit(0);
         }  
         if(cc==0)
         {
              cout<<"请选择除法有无余数:(0为有,1为无)"<<endl;
              cin>>ys;
              if(ys!=0&&ys!=1)
              {
                   cout<<"输入错误,请重新输入!"<<endl;
                   Carry();
                   exit(0);
              }
         }
         cout<<"请输入题目个数:"<<endl;
         cin>>tm;
         if(tm<=0)
         {
              cout<<"输入错误,请重新输入!"<<endl;
              Carry();
              exit(0);
         }
         cout<<"请选择打印方式:(0为逐行打印,输入其他数字则为该行几道题)"<<endl;
         cin>>dy;
         if(dy<0)
         {
              cout<<"输入错误,请重新输入!"<<endl;
              Carry();
              exit(0);
         }
         for(i=0;i<tm;i++)
         {
              a[i]=rand()%fw;
              b[i]=rand()%fw;
              c[i]=rand()%4;
              for(j=0;j<i;j++)                               //避免重复
                   if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])
                        a[i]++;
              if(c[i]==3&&b[i]==0)
                   b[i]++;
              if(cc==0&&zf==0&&ys==0)
              {
                  Display(dy,ys);
              }

              else if(cc==1)                                 //无乘除法
             {
                  if(c[i]>=2)
                  c[i]=c[i]-2;
                  Display(dy,ys);
             }
             else if(cc==0&&zf==1&&ys==0)
             {      
                  if(a[i]<b[i])                              //无负数
                  {
                      t=a[i];
                      a[i]=b[i];
                      b[i]=t;
                  }
                  Display(dy,ys);
              }
              else
             {
                  if(c[i]==3)
                  {
                      if(a[i]<b[i])
                      {
                          t=a[i];
                          a[i]=b[i];
                          b[i]=t;
                      }
                      if(a[i]%b[i]!=0)                       //无余数,能够整除
                      {
                           a[i]=b[i]*(rand()%10);
                      }
                  }
                  Display(dy,ys);
              }
         }
         cout<<"请输入是否要输入答案:(0为是,其他为否)"<<endl;
         cin>>an;
         if(an==0)
             Input(tm,ys);
         else
             exit(0);
    }
    void main()
    {
         Carry();
    }

    三、运行结果

    四、遇到错误

          相同类型,相同参数的函数不能有两个,除法运算有余数时需要有两个答案,一个为商,一个为余数,没有余数时,则只需输入一个答案。

    五、工作表

    缺陷日志表

                                                      姓名:郭庆樑                                                                                  日期:3.21.2015

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3.20.2015

    01

    程序

    编码

    编译

    20min

    相同类型,相同参数不能有两个

    3.20.2015

    02

    程序

    编码

    编译

    20min

    在选择有余数时,需要接收用户两个答案,并且两个答案一致才能算此题正确

    项目计划总结表

                                                      姓名:郭庆樑                                                                                  日期:3.21.2015

          任务

    上课

    编程

    看书

    日总计

    周日

     

     

     

     

     

    周一

    400

     

     

     

    400

    周二

    400

    40

     

     

    440

    周三

    100

     

    60

     

    160

    周四

    300

     

     

     

    300

    周五

    200

    120

     

     

    320

    周六

     

     

    120

     

    120

    周总计

    1400

    160

    180

     

    1740

    时间记录总结表

                                                    姓名:郭庆樑                                                                                     日期:3.21.2015

    日期

    开始

    结束

    中断时间

    净时间

    活动

    备注

    C

    U

    3.17

    8:00

    9:50

    10

    100

    上课

     

     

     

    3.17

    9:50

    10:10

     

    20

    编程

     

     

     

    3.18

    14:00

    15:00

    10

    50

    看书

     

     

     

    3.20

    8:00

    9:50

    10

    100

    上课

     

     

     

    3.20

    14:00

    16:00

     

    120

    编程

     

     

     

    3.21

    21:00

    21:30

     

    30

    发博客

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Hdu3037 Saving Beans
    bzoj3994 [SDOI2015]约数个数和
    bzoj2154 Crash的数字表格
    bzoj3529 [Sdoi2014]数表
    bzoj2820 YY的GCD
    bzoj2301 [HAOI2011]Problem b
    bzoj2440 [中山市选2011]完全平方数
    Java基础知识强化之IO流笔记20:FileOutputStream写出数据实现换行和追加写入
    Java基础知识强化之IO流笔记19:FileOutputStream的三个write方法
    Java基础知识强化之IO流笔记18:FileOutputStream写入数据
  • 原文地址:https://www.cnblogs.com/benboerba/p/4356359.html
Copyright © 2011-2022 走看看