• 四则运算2


    设计思路

    一、题目避免重复

    把题目的两个运算数和运算符号保存到三个数组里,之后每次出题依次比较运算数和运算符号是否已经储存在数组里。如果三者都相同就重新出题,如果不相同就把数据储存在数组里,继续出题。

    二、可定制

    设置两个变量控制数量和打印方式,由用户输入。

    三、是否有乘除法

    加减乘除可以取4的余数来控制,不支持乘除法可以取2的余数来控制。

    四、数值范围

    通过控制随机数的生成范围来决定数值的取值范围。

    五、加减有无负数

    通过随机产生一个数n,用(-1)的n次方来控制是否为负数,负数打印要加上括号如:1+(-3)=或者3-(-1)=。

    六、除法有无余数

    随机数产生后验证可以整除再打印,否则重新生成随机数。

    七、是否支持分数

    生成4个随机数分别表示两个分子和两个分母。

    源程序代码

    #include <iostream>

    #include <cstdlib>

    #include <ctime>

    using namespace std;

     

    void main()

    {

         int a,b,c,d,e,f,g,i;

         char x,y;

         cout<<"请输入出题数量:"<<endl;

         cin>>d;

         cout<<"请输入数值范围:"<<endl;

         cin>>f>>g;

         cout<<"请输入是否有乘除法?(Y/N)"<<endl;

         cin>>x;

         cout<<"请输入是否有余数?(Y/N)"<<endl;

         cin>>y;

         if (x=='Y') e=4;

         if (x=='N') e=2;

         srand(unsigned(time(0)));

         for (i=0;i<d;i++)

         {

             a=rand()%(g-f+1)+f;

             b=rand()%(g-f+1)+f;

             c=rand()%100;

             c=c%e;

             if (b>=0)

             {

                  if (c==0) cout<<i+1<<":"<<a<<"+"<<b<<"="<<endl;

                  if (c==1) cout<<i+1<<":"<<a<<"-"<<b<<"="<<endl;

                  if (c==2) cout<<i+1<<":"<<a<<"*"<<b<<"="<<endl;

                  if (c==3)

                  {

                       while(b==0)

                       {

                           b=rand()%(g-f+1)+f;

                       }

                       while(a%b!=0&&y=='N')

                       {

                           a=rand()%(g-f+1)+f;

                           b=rand()%(g-f+1)+f;

                       }

                       cout<<i+1<<":"<<a<<"/"<<b<<"="<<endl;

                  }

     

             }

             else

             {

                  if (c==0) cout<<i+1<<":"<<a<<"+("<<b<<")="<<endl;

                  if (c==1) cout<<i+1<<":"<<a<<"-("<<b<<")="<<endl;

                  if (c==2) cout<<i+1<<":"<<a<<"*("<<b<<")="<<endl;

                  if (c==3)

                  {

                       while(a%b!=0&&y=='N')

                       {

                           a=rand()%(g-f+1)+f;

                           b=rand()%(g-f+1)+f;

                       }

                       cout<<i+1<<":"<<a<<"/("<<b<<")="<<endl;

                  }

     

             }

     

         }

     

    }

    运行结果截图

    编程总结

    这个程序可以自定义出题数量,通过用户输入数字来控制。提示用户输入两个数来指定出题的数值范围,根据用户需要可以选择是否有乘除法,用户输入Y就包含乘除法,用户输入N就不含乘除法,保证除数不为零。根据用户指定的数值范围来控制是否产生负数,同时还优化了出现负数时的打印格式(添加小括号)。用户也可以控制除法有无余数,若要求无余数,当程序生成有余数的除法题会舍弃数据再生成一道题,看是否满足条件,若满足就打印出来,若不满足继续生成。

    时间记录日志

  • 相关阅读:
    屏蔽2003:在系统启动时至少有一个服务或驱动程序产生错误
    C#中有关string和byte[]转换的问题
    如何控制winform程序只能打开一个呢?
    ArrayList的使用方法【转载】
    ASP.NET中ajaX学习记录
    C#去除字符串空格的几种方法【转载】
    C# 中2,10,16进制及其ASCII码之间转化
    vc++下char数组赋值乱码问题
    c#关机时自动退出程序
    Android入门前言(一)之Android应用开发入门五问 (转自:http://blog.csdn.net/android_tutor/)
  • 原文地址:https://www.cnblogs.com/BUANG/p/4350998.html
Copyright © 2020-2023  润新知