zoukankan      html  css  js  c++  java
  • 《作业二》自动生成四则运算题目

    作业二:个人编程项目——四则运算

    本周的作业题目要求:

      编写一个自动生成小学四则运算题目的程序

    编程环境:

      编程语言选择了C#,编程软件选择了Visual Studio 2015

    编程思路:

      在看到题目首先想到了使用Random()这个随机方法进行随机产生数字,同时加减乘除四个运算符用0、1、2、3这个四个数字表示,也通过随机方法生成,在打印输出时再进行判断输出成相应的数学符号。我将题目分成了几个阶段进行编写,分别为整数阶段、分数阶段、混合阶段和优化阶段。

    阶段一:

      需要注意的部分是在C#语言中Random()在使用时随机生成的数字是小于你所输入的数字的。为了方便使用同时加入了设置了出题数目与最大值范围的语句,通过用户的输入进行设定,在接收时C#语句默认接收的为String

    源代码

    #include<iostream.h>
    #include<stdlib.h>
    #include<conio.h>
    
    void DealFenshu(int m, int a[][2])
    {
        for(int p=0;p<m;p++)
        {
            int i=(int)rand()%10;
            int j=(int)rand()%10;
            while(j==0||i>=j)
            {
                i=(int)rand()%10;
                j=(int)rand()%10;
            }
            int x=(int)rand()%10;
            int y=(int)rand()%10;
            while(y==0||x>=y)
            {
                x=(int)rand()%10;
                y=(int)rand()%10;
            }
            int k=(int)rand()%100/25;
            switch(k)
            {
                case 0:
                    cout<<"("<<i<<"/"<<j<<")"<<"+"<<"("<<x<<"/"<<y<<")"<<"=";
                    a[p][0]=i*y+x*j;
                    a[p][1]=j*y;
                    break;
                case 1:
                    cout<<"("<<i<<"/"<<j<<")"<<"-"<<"("<<x<<"/"<<y<<")"<<"=";
                    a[p][0]=i*y-x*j;
                    a[p][1]=j*y;
                    break;
                case 2:
                    cout<<"("<<i<<"/"<<j<<")"<<"*"<<"("<<x<<"/"<<y<<")"<<"=";
                    a[p][0]=i*x;
                    a[p][1]=j*y;
                    break;
                case 3:
                    a[p][0]=i*y;
                    a[p][1]=j*x;
                    cout<<"("<<i<<"/"<<j<<")"<<"/"<<"("<<x<<"/"<<y<<")"<<"=";
                }
                
                if(p%5==4)
                {
                    cout<<endl;
                }
                else
                {
                    cout<<'	';
                }
        }
    
    }
                       void DisplayFenshu(int a[][2],int w,int m)
    {
        if(w==1)
        {
            for(int q=0;q<m;q++)
            {
                if(a[q][0]==0)
                    cout<<"0"<<'	';
                else
                    cout<<a[q][0]<<"/"<<a[q][1]<<'	';
                if(q%5==4)
                {
                    cout<<endl;
                }
            }
        }
        
    }
                void DealInt(int m,int a[])
    {
            
                for(int p=0;p<m;p++)
        {
        int i=(int)rand()%10;
        int j=(int)rand()%10;
        int k=(int)rand()%100/25;
        switch(k)
        {
        case 0:
            cout<<i<<"+"<<j<<"=";
                a[p]=i+j;
            break;
        case 1:
            cout<<i<<"-"<<j<<"=";
            a[p]=i-j;
            break;
        case 2:
            cout<<i<<"*"<<j<<"=";
            a[p]=i*j;
            break;
        case 3:
            try
            {
            a[p]=i/j;
            cout<<i<<"/"<<j<<"=";
            }
            catch(...)
            {
                p--;
            }
            
    
        }
            
            if(p%5==4)
            {
                cout<<endl;
            }
            else
            {
                cout<<'	';
            }
        }
    }
    void DisplayInt(int a[],int w,int m)
    {
        if(w==1)
        {
            for(int q=0;q<m;q++)
            {
                cout<<a[q]<<'	';
                if(q%5==4)
                {
                    cout<<endl;
                }
            }
        }
        else
        {};
    }
    int main()
    {
        int p;
        do
        {
            system("cls");
            int a[1000],b[1000][2];
            int m,n,w;
            cout<<"请输入生成的四则运算题个数:";
            cin>>m;
            cout<<endl;
            cout<<"请输入要生成的四则运算种类(输入1为整数,否则为真分数):";
            cin>>n;
            cout<<endl;
            if(n==1)
            {
                DealInt(m,a);
                cout<<endl;
            }
            else
            {
                DealFenshu(m,b);
                cout<<endl;
            }
            cout<<"是否输出答案(输入1则输出答案否则不输出答案)"<<endl;
            cin>>w;
            if(n==1)
            {
                DisplayInt(a,w,m);        
            }
            else
            {
                DisplayFenshu(b,w,m);
            }
            cout<<endl;
            cout<<"是否继续生成运算题(输入1则生成否则不生成)"<<endl;
            cin>>p;
            cout<<endl;
        }while(1==p);
    
    } 
    
    

    程序运行截图



    总结

    通过本次课程设计,使我对这门课程有了更深入的理解。这是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。一个人的力量是有限的,要想把课程设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。
    程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。再总体解决大的问题。这样做起来不仅有条理也使问题得到了轻松的解决。
    在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的极简单的课程制作,可是平心而论,也耗费了我不少的心血,这就让我不得不佩服开发技术的前辈,才意识到老一辈对我们社会的付出,为了人们的生活更美好,他们为我们社会所付出多少心血对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!
    通过这次的课程设计我对于专业课的学习有了更加深刻的认识,以为现在学的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。以后努力学好每门专业课,让自己拥有更多的知识,才能解决更多的问题!

  • 相关阅读:
    【备忘录】Sublime Text编辑器如何在选中的多行行首增加字符串
    微信卡券领取页面提示签名错误,微信卡券JSAPI签名校验工具对比签名一模一样,cardExt扩展字段有问题
    程序运行时动态生成缓存时存在的问题
    golang的beego框架开发时出现的问题纪录
    【备忘录】CentOS服务器mysql忘记root密码恢复
    试玩swoole扩展 第一天
    spring 定时任务执行2次
    JVM CUP占用率过高排除方法,windows环境
    spring cloud 服务A调用服务B自定义token消失,记录
    java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp
  • 原文地址:https://www.cnblogs.com/myk130201136/p/5284683.html
Copyright © 2011-2022 走看看