zoukankan      html  css  js  c++  java
  • 小学数学算数出题程序

    程序调试运行过程:

     

    ①  开始的输入界面,可以选择计算的最大数值限制和题目个数。

    ②  题做对后,会有“√”号出现,表明评判完毕,题目做对。

    ③  题做错后,会有“×”号出现,表明评判完毕,题目做错。

    ④  除法运算,输入完商后,要求输入余数。

    ⑤  分数的运算。

    ⑥  做完规定的5道题后,会要求选择继续或退出。

     

    我自认为自己做的这个小程序功能还是比较全面的,主要利用随机数的产生从而随机出题,函数较多,所以代码敲的可能有点多,有不足之处,还希望老师指正!

     

    以下为程序源代码

    #include "iostream"
    #include "stdio.h"
    #include "stdlib.h"
    #include "math.h"
    using namespace std;
    int m,sum;
    int com (int x,int y)                          //求最大公约数
    {
        int p;
        if (y>x)
        {
            p=x;
            x=y;
            y=p;
        }
        while(x%y!=0)
        {
            p=x%y;
            x=y;
            y=p;
        }
        return y;
    }
    void add ()                                   //求加法
    {
        int i,j,l;
        i=rand()%m;
        j=rand()%m;
        cout<<i<<" + "<<j<<" = ";
        cin>>l;
        if (l==i+j)
        {
            sum++;
            cout<<""<<endl;
        }
        else
            cout<<"               ×"<<endl;
        return;
    }
    void sub ()                                  //求减法
    {
        int i,j,l;
        i=rand()%m;
        j=rand()%(i+1);
        cout<<i<<" - "<<j<<" = ";
        cin>>l;
        if (l==i-j)
        {
            sum++;
            cout<<""<<endl;
        }
        else
            cout<<"               ×"<<endl;
        return;
    }
    void mul ()                                  //求乘法
    {
        int i,j,l;
        i=rand()%m;
        j=rand()%m;
        cout<<i<<" × "<<j<<" = ";
        cin>>l;
        if (l==i*j)
        {
            sum++; 
            cout<<""<<endl;
        }
        else
            cout<<"               ×"<<endl;
        return;
    }
    void div ()                                 //求除法
    {
        int i,j,l,o;
        i=rand()%m;
        j=rand()%i+1;
        cout<<i<<" ÷ "<<j<<" = ";
        cin>>l;
        cout<<"     余数 : ";
        cin>>o;
        if ((l==i/j)&&(o==i%j))
        {
            sum++;
            cout<<""<<endl;
        }
        else
            cout<<"               ×"<<endl;
        return;
    }
    void fadd ()                                //求分数相加
    {
        int i1,j1,i2,j2,i3,j3,l,o,a,b,c;
        char g;
        i1=rand()%m;
        j1=rand()%(m-1)+1;
        i2=rand()%m;
        j2=rand()%(m-1)+1;
        c=com(j1,i1);
        j1=j1/c;
        i1=i1/c;
        c=com(j2,i2);
        j2=j2/c;
        i2=i2/c;
        while (j1==1)
        {
            j1=rand()%(m-1)+1;
            c=com(j1,i1);
            j1=j1/c;
            i1=i1/c;
        }
        while (j2==1)
        {
            j2=rand()%(m-1)+1;
            c=com(j2,i2);
            j2=j2/c;
            i2=i2/c;
        }
        cout<<i1<<"/"<<j1<<" + "<<i2<<"/"<<j2<<" = ";
        cin>>l>>g>>o;
        j3=j1*j2;
        i3=i1*j2+i2*j1;
        a=i3;
        b=j3;
        c=com(a,b);
        if ((l==a/c)&&(o==b/c))
        {
            sum++;
            cout<<""<<endl;
        }
        else
            cout<<"               ×"<<endl;
        return;
    }
    void fsub ()                                //求分数相减
    {
        int i1,j1,i2,j2,i3,j3,l,o,a,b,c,p;
        char g;
        i1=rand()%m;
        j1=rand()%(m-1)+1;
        i2=rand()%m;
        j2=rand()%(m-1)+1;
        c=com(j1,i1);
        j1=j1/c;
        i1=i1/c;
        c=com(j2,i2);
        j2=j2/c;
        i2=i2/c;
        while (j1==1)
        {
            j1=rand()%(m-1)+1;
            c=com(j1,i1);
            j1=j1/c;
            i1=i1/c;
        }
        while (j2==1)
        {
            j2=rand()%(m-1)+1;
            c=com(j2,i2);
            j2=j2/c;
            i2=i2/c;
        }
        if (i1/j1<i2/j2)
        {
            p=j2;
            j2=j1;
            j1=p;
            p=i2;
            i2=i1;
            i1=p;
        }
        cout<<i1<<"/"<<j1<<" - "<<i2<<"/"<<j2<<" = ";
        cin>>l>>g>>o;
        j3=j1*j2;
        i3=i1*j2-i2*j1;
        a=i3;
        b=j3;
        c=com(a,b);
        if ((l==a/c)&&(o==b/c))
        {
            sum++;
            cout<<""<<endl;
        }
        else
            cout<<"               ×"<<endl;
        return;
    }
    int main ()                                     //主函数
    {
        int k,n,x;
        char c;
        cout<<"请输入题目允许的最大数(输入0退出) : ";
        cin>>m;
        if (m==0)
            return 0;
        m++;
        cout<<endl<<"请输入题目个数 : ";
        while (cin>>n!=0)
        {
            cout<<endl;
            x=n;
            sum=0;
            while (x--)
            {
                k=rand()%5;
                switch (k)                         //随机数随机选出类型
                {
                    case 0:add();
                           break;
                    case 1:sub();
                           break;
                    case 2:mul();
                           break;
                    case 3:div();
                           break;
                    case 4:int t=rand()%2;
                        if (t=0)
                            fadd();
                        else if (t=1)
                            fsub();
                        break;
                }
            }
            cout<<endl<<"共做题目 "<<n<<" 道,其中做对 "<<sum<<" 道,做错 "<<n-sum<<" 道!"<<endl<<endl;
            cout<<"继续请按回车,退出请输入0 : ";
            c=getchar();
            c=getchar();
            if (c=='0')
                return 0;
            cout<<endl<<"请输入题目允许的最大数 : ";
            cin>>m;
             m++;
             cout<<endl<<"请输入题目个数 : ";
        }
        return 0;
    }

     

     
     
  • 相关阅读:
    JavaWeb网上商城项目中用户注册,使用MailServer和FoxMail搭建本地邮件服务器
    myeclipse编码问题
    Date日期类型的绑定
    springmvc学习之jdk版本,tomcat版本,spring版本
    mybatis-ehcache整合中出现的异常 ibatis处理器异常(executor.ExecutorException)解决方法
    .net里面<app.config>中value值不能填写特殊符号问题
    sqldeveloper中Excel数据的导入与导出
    IntelliJ IDEA 2019.2最新版本免费激活码(转)
    sqlserver 的一些小总结
    SQL 跨数据库同步数据 、跨数据库跨更新数据
  • 原文地址:https://www.cnblogs.com/hgcrown/p/5263168.html
Copyright © 2011-2022 走看看