zoukankan      html  css  js  c++  java
  • 小学四则运算题目自动生成

          原题目如下:     

          阿超有个儿子上小学二年级,老师每天让家长给孩子出30道加减法题,虽然不多,但是每天都做也算是个负担,阿超作为一个老牌程序员当然想用计算机来解决这个小问题,目前对于这个问题对于任何语言都不是问题,比如:

          C/C++、C#、Java、Python、VB、JavaScript、Perl……

        具体要求如下:

           1.能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!)

           2.除了整数外,还要支持真分数的四则运算

           分析可知需要采用一个自己熟悉的语言来变成实现自动生成30道小学四则运算题目且结果均为非负数,同时还要可以支持真分数的四则运算。这里我选择了C语言(毕竟我太菜,别的还不会)。一开始我的写的是四则混合运算,但是反复调试发现自己的判断非负的地方还存在很大问题,昨天晚上想了很久发现解决很麻烦,跟全算出结果差不多少,所以我还是放弃了。今天重新写了一个简单的。我觉得这个程序主要有3个地方需要注意。首先是随机生成问题,只使用rand()是不对的,这样生成的数是伪随机数,上网查了一下得知最简单的解决方法是应该在主函数里加上一句srand(time(0)),这里我最初是在每个rand()前都加上了srand(time(0)),导致产生的随机数都一样,应该只要在主函数里加一句就行了。这是个值得注意的地方。其次是关于如何保证结果都是非负数,由于是四则运算,因此只有出现“-”号的时候才会有这种可能。我是这样解决的:用x和y来表示整数题目时2个运算数,当出现“-”时(if(op==‘-’)),通过while(x-y<0)语句来循环进行重新随机,知道产生x大于等于y为止。当遇到分数题目时候,采用a/b,c/d形式,同理通过while(a*d-b*c<=0)语句来循环进行重新随即。最后关于真分数的问题,并不难,真分数简单来讲就是分母比分子大的分数,因此只要保证a>b且c>d就好了。整个程序的开发时间大概1个小时。下面是源代码:

    #include<iostream.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<time.h>
    
    char Operator()
    {
        char op;
        int i;
        i=rand()%4+1;
        switch(i)
        {
            case 1: return '+';
            case 2: return '-';
            case 3: return 'x';
            case 4: return '/';
        }
    }
    
    void integer()
    {
        int x,y;
        char op;
        x=rand()%100+1;
        y=rand()%100+1;
        op=Operator();
        if(op=='-')
            while(x<y)
            {
                x=rand()%100+1;
                y=rand()%100+1;
            }
        cout<<x<<op<<y<<"="<<endl;
    }
    
    void fraction()
    {
        int a,b,c,d;
        a=rand()%100+1;
        b=rand()%100+1;
        c=rand()%100+1;
        d=rand()%100+1;
        char op;
        while(a<=b||c<=d)
        {
            a=rand()%100+1;
            b=rand()%100+1;
             c=rand()%100+1;
            d=rand()%100+1;
        }
        op=Operator();
        if(op=='-')
            while((b*c-a*d)<0)
            {
                a=rand()%100+1;
                b=rand()%100+1;
                c=rand()%100+1;
                d=rand()%100+1;
            }
        cout<<b<<"/"<<a<<op<<d<<"/"<<c<<"="<<endl;
    }
    +
    void main()
    {
        srand(time(0));
        int i,n,m;
        cout<< "请输入出题类型"<<endl;
        cout<< "1.整数四则运算"<<endl;
        cout<< "2.分数四则运算"<<endl;
        cin>>i;
        cout<< "请输入出题数目"<<endl;
        cin>>n;
        for(m=1;m<=n;m++)
        {
            if(i==1)
                integer();
            else
                fraction();
        }
    }

       

           

  • 相关阅读:
    截除数值,分别获取数据与单位
    angularjs判断对象值是否存在
    angularjs文件上传实例
    获取Zxing.net 中所有barcodeformat
    创建QR CODE
    QR Code的容错级别
    验证QR Code版本
    Web API返回自定义数据给客户端
    理解Hive 不同组件的功能
    tcpdf中文解决方案
  • 原文地址:https://www.cnblogs.com/m108280546/p/5269702.html
Copyright © 2011-2022 走看看