随机产生四则运算题

/*
信息:20133075   张勋  《随机生成30道四则运算题目》

要求:除整数外,还要支持真分数的四则运算

设计思路:
  1.通过radom函数生成自然数,给变量赋值
  2.另一个变量是真分数,分子比分母小
  3.随机生成四则运算符
  4.注意除数为0情况
注意:
   这是两个函数!一个是srand函数!这是在调用rand()这个函数之前使用的!
rand()是一个产生随机数的函数!而srand是一个设置随机数种子的函数!通常这两
个函数是一起使用的!来完成产生随机数的功能!而time(NULL)这个函数的返回值是作
为srand函数的参数的!意思是以现在的系统时间作为随机数的种子来产生随机数!至
于NULL这个参数。只有设置成NULL才能获得系统的时间!
*/

#include<iostream>
#include<time.h>
#include<string>
using namespace std;

int main()
{
    //以现在的系统时间作为随机数的种子来产生随机数
    srand(time(NULL));
    char X;
    
    cout << "请您选择四则运算题的难度:(1或2)\n" ;
    cout << "1.简单(纯整数的运算)\n"<<"2.困难(包含真分数的四则运算)\n";
    cin >> X;

//1.简单(纯整数的运算)
    if (X == ‘1‘)
    {   
        
        for (int count = 0; count < 30;count++)
        {
            int a = 0, b = 0;

a = rand() % 100;
            b = rand() % 100;

//随机产生四则运算符
            int sign = 0;
            sign = (rand() % 100) % 4;
            string opera_sign[4] = { "+", "-", "*", "/" };

//当b=0且运算为除法时重新生成
            while (b == 0 & sign == 3)
            {
                b = rand() % 100;
            }

switch (sign)
            {
            case 0:cout << a << opera_sign[sign] << b << "=" << endl; break;
            case 1:cout << a << opera_sign[sign] << b << "=" << endl; break;
            case 2:cout << a << opera_sign[sign] << b << "=" << endl; break;
            case 3:cout << a << opera_sign[sign] << b << "=" << endl; break;
            }
        }
    }

//2.困难(包含真分数的四则运算)
    if (X == ‘2‘)
    {
        for (int count = 0; count < 30; count++)
            {
                int a1 = 0, b1 = 0, a2 = 0, b2 = 0;

a1 = rand() % 100;
                b1 = rand() % 100;
                a2 = rand() % 100;
                b2 = rand() % 100;

//判断是否为真分数
                while (a1>b1||b1==0)
                {
                    a1 = rand() % 100;
                    b1 = rand() % 100;
                }

while (a2>b2||b2==0)
                {
                    a2 = rand() % 100;
                    b2 = rand() % 100;
                }

//随机产生四则运算符
                int sign = 0;
                sign = (rand() % 100) % 4;
                string opera_sign[4] = { "+", "-", "*", "/" };

switch (sign)
                {
                case 0:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break;
                case 1:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break;
                case 2:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break;
                case 3:cout << "(" << a1 << "/" << b1 << ")" << opera_sign[sign] << "(" << a2 << "/" << b2 << ")" << "=" << endl; break;
                }
        }
    }
                
}

运行程序后,会产生如下提示:

选择简单,可产生:

选择困难级别,可产生真分数运算:

本道题,需要注意的是:对 srand(time(NULL))函数的使用,可以保证每次运行时,系统产生的结果不一样!

这是两个函数!一个是srand函数!这是在调用rand()这个函数之前使用的!
rand()是一个产生随机数的函数!而srand是一个设置随机数种子的函数!通常这两
个函数是一起使用的!来完成产生随机数的功能!而time(NULL)这个函数的返回值是作
为srand函数的参数的!意思是以现在的系统时间作为随机数的种子来产生随机数!至
于NULL这个参数。只有设置成NULL才能获得系统的时间!
*/

时间: 2024-08-02 07:00:12

随机产生四则运算题的相关文章

随机输出30道四则运算题

题目要求:随机输出30道小学二年级四则运算题. 思路:用for循环实现数量30道,rand函数产生随机数,switch语句加0到3的随机数实现四种运算的随机输出,if语句添加限制条件,用取余方式限制运算数.结果不超过100,除法不出现分数等,以符合小学二年级的实际水平. 编写过程中,在写if语句添加限制条件时,不符合条件的不知道如何实现跳转,出现了数量不足30道的情况,后通过程序中定义的整型 i 自减实现. 代码如下: #include<iostream.h>#include <stdl

对随机产生分数或整数的四则运算题的代码实现

一设计思想: 一.完成如何实现随机调取两个数和一个四则运算符号 二.如何实现以四则运算题的形式输出 三.如何实现选择性输出多少题 四.如何补加输出分数的功能 二.代码实现 package com.minirisoft; import java.util.*; public class Yunsuan { public static void main(String[] args){ Scanner input=new Scanner(System.in); System.out.println(

随机生成30道四则运算题

思路:首先随机生成两个操作数.将运算符存到数组c中,随机生成0-3的整数作为数组下标.即相当于随机产生运算符. 利用for循环输出30道四则运算题 #include<iostream.h>#include<stdlib.h>int main(){     int a,b,d,i;     char c[4]={'+','-','*','/'};     for(i=0;i<30;i++)     {           a=int(rand()%11);           

随机生成30道四则运算题程序设计

编程思路: 因为是低年级四则运算题,我考虑出一些100以内的加减乘除,又是随机生成,所以用上了rand函数,又有选择性的用到了switch  case结构,达到30道题的无序性.而且针对减法和除法的特殊情况做了些细节考虑. 源代码: #include<iostream.h>#include<stdlib.h>int main(){ int a,b,c; for(int i=1;i<31;i++){ a=rand()%100; b=rand()%100; c=rand()%4;

随机产生三十道四则运算题程序

#include<stdio.h>#include<stdlib.h>#include<time.h>int main(){ int x,y,z,t,i; srand(time(NULL)); printf("三十道四则运算题\n"); for(i=0;i<30;i++) { x=rand()%100; y=rand()%100; z=rand()%4; switch(z) { case 0: printf("%d+%d=\n&quo

基于c编写的关于随机生成四则运算的小程序

基于http://www.cnblogs.com/HAOZHE/p/5276763.html改编写的关于随机生成四则运算的小程序 github源码和工程文件地址:https://github.com/HuChengLing/- 基本要求: 除了整数以外,还能支持真分数的四则运算. 对实现的功能进行描述,并且对实现结果要求截图. 主要功能:运算小学四则运算,可以选择加减乘除以及混合运算. 设计思想:首先思考运算数字范围,考虑小学生的运算能力,然后分类运算方法,分为加减乘除混合运算, 然后可以选择是

四则运算题2

本题新学知识点: itoa函数 char *itoa( int value, char *string,int radix);[1] 原型说明: value:欲转换的数据. string:目标字符串的地址. radix:转换后的进制数,可以是10进制.16进制等. 程序实例: #include <stdlib.h> #include <stdio.h> int main(void) {     int number = 12345;     char string[32];    

小学二年级四则运算题

一.题目要求 产生300道小学二年级的四则运算的数学题,减法不能出现负数,除法要整除. 二.编写过程 编写产生30道小学二年级的四则运算的数学题,用rand()产生随机数,和随机的符号,在除法运算中在被除数不为零的情况下利用一组随机数来产生被除数和除数是被除数的整数倍,这样保证了除法的整除,减法要先判断两个随机数的大小,输出的结果为大数减去小数.然后利用for循环30次输出30道题目. 三.程序运行 四.程序代码 #include<stdio.h>#include<stdlib.h>

30道小学生四则运算题C/C++编程

软件工程科课上,老师通过实例讲解什么是程序,程序和软件的区别,要求我们通过短时间写一道编程题, 题目就是编写30道小学生四则运算题.以下就是源代码: #include<iostream.h>#include<stdlib.h>#include<time.h>void demo(void)  //随机产生四则运算{ int m,n,k;   //随机数m,n,计数  m=rand()%100;//生成随机数 n=rand()%100; k=rand()%5; switch