四则运算改进

一、题目要求

     每个同学对已有的四则运算生成器进行优化,让程序能接受用户输入答案,并判断对错,最后给出总共对/错的数量。

二、设计思想

    把结果算出来存入到一个数组中,与用户输入的答案进行比较,一样就是正确,不一样就是错误。

三、程序源代码

#include<iostream>
#include<stdlib.h>
using namespace std;
#define  MAX 10000
#include <ctime>
#include <cstdlib>
int answer(int a[],int length)  //判断正误
{
    int answer[100];

    int sum=0;
    for(int i=0;i<length;i++)
    {
           cout<<"请输入第"<<i+1<<"道题结果:";
           cin>>answer[i];
           if(a[i]==answer[i])
           {
               sum=sum+1;
           }

    }
    return sum;
}
int jisuan(char a,int op1,int op2)   //计算题目正确结果
{
    int correct;
    switch(a)
    {
        case '+':correct=op1+op2;break;
        case '-':correct=op1-op2;break;
        case '*':correct=op1*op2;break;
        case '/':correct=op1/op2;break;
    }
    return correct;
}
void display()
{
     int jieguo[100];
     char yun;
     int op1;
     int op2;
     char q[4]={'+','-','*','/'};
     int a,b,k,m,n,o,p;
     cout<<"请输入定制数量"<<endl;
     cin>>k;//定制数量
     cout<<endl;
     cout<<"请输入数值范围(如 10 50)"<<endl;
     cin>>m>>n;
     cout<<endl;//数值范围
     cout<<"0.无乘除法"<<endl;
     cout<<"1.有乘除法"<<endl;
     cin>>o;//有无乘除 0 无 1有
     if(m<n)
     {
          int temp=n;
          n=m;
          m=temp;
     }
     if(o!=0)
     {
          cout<<endl;//数值范围
          cout<<"0.无余数"<<endl;
          cout<<"1.有余数"<<endl;
          cin>>p;//有无余数 0无 1有
     }
     int d[MAX][2];
     srand(time(0));
     for(int i=0;i<k;i++)
     {
          d[i][0]=rand()%(m-n)+n;
          d[i][1]=rand()%(m-n)+n;
          a=rand()%4;
          if(o==1)
          {
              a=rand()%4;
          }
          else
          {
              a=rand()%2;
          }
          if(o==0)
          {
              cout<<""<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<"="<<endl;
                       yun=q[a];
                       op1=d[i][0];
                       op2=d[i][1];
                       jieguo[i]=jisuan(yun,op1,op2);
          }
          else if(p==0)
          {
              if(a==3)
              {
                  if(d[i][0]%d[i][1]==0)
                  {
                       cout<<""<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<"="<<endl;
                       yun=q[a];
                       op1=d[i][0];
                       op2=d[i][1];
                       jieguo[i]=jisuan(yun,op1,op2);
                  }
                  else
                  {
                      i=i-1;
                  }
              }
              else
              {
                  cout<<""<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<"="<<endl;
                   yun=q[a];
                       op1=d[i][0];
                       op2=d[i][1];
                       jieguo[i]=jisuan(yun,op1,op2);
              }

          }
          else
          {
               cout<<""<<i+1<<"道题:"<<d[i][0]<<q[a]<<d[i][1]<<"="<<endl;
                yun=q[a];
                       op1=d[i][0];
                       op2=d[i][1];
                       jieguo[i]=jisuan(yun,op1,op2);
          }

     }
     int s=answer(jieguo,k);
     cout<<"正确题目数量为:"<<s<<endl;


}
int main()
{
     display();
     return 0;
}

四、截图

五、实验总结

    本次实验运用了函数,运用一位数组。把结果算出来存入到一个数组中,与用户输入的答案进行比较,一样就是正确,不一样就是错误。实验运用了函数,本来对函数传参不是很懂,通过做这次实验,学会了函数传参。以后做程序不管题目有多难设计,多难编写,都要仔细分析,也不太犯憷。每一个大程序可能乍看起来比较多,其实他都是每一个小程序组成的,要一点一滴慢慢解决。

原文地址:https://www.cnblogs.com/yanyafeng/p/4357600.html