zoukankan      html  css  js  c++  java
  • 二柱子

    一、设计思想

    1、首先完成一个四则运算的出题程序,其次运用循环的方式完成30道题;
    2、使用随机函数生成四则运算中的第一个数的随机数,随机数要求是整数和真分数,其他的数不支持;

        (1)首先生成一个随机数,取值为1或2,以此来确定四则运算中第一个随机数应该是整数还是真分数。若随机数为1则为整数,若随机数为2则为真分数;

         (2)若为四则运算中的数为真分数,则随机生成两个数,作为分子和分母,并使得分母大于分子。

    3、使用随机函数生成四则运算中的第二个数的随机数,此随机数的要求以及操作同第二步;

    4、运用一定的方法完成运算符的选择:使用四个数字来代表不同的运算符,生成一个随机数,然后用这个随机数整除4取余数,通过case语句选择不同的运算符进行运算,并将四则运算中的所有元素(被加数、运算符、加数)组合起来构成四则运算并打印输出。

    二、源程序代码

    #include<iostream>
    #include<stdlib.h> //调用随机函数void rand(void)时需要调用此库
    #include<time.h> //调用随机函数void time()时需调用此库
    #define MIN 1
    #define MAX 99
    using namespace std;

    int main()
    {
    srand((int)time(0));
    int num1=1, num2=1; //存储生成的随机变量
    int num1_1, num1_2;
    int num2_1, num2_2;
    int i = 0; //设置循环
    for (i = 0; i < 30; i++)
    {
    int true_false_num; //生成随机数,用来判断是真分数还是假分数
    true_false_num = 1 + rand() % (2); //为1则为整数,为2则为真分数
    if (1 == true_false_num) //判断第一个数是什么类型的数
    {
    num1 = MIN + rand() % (MAX + 1);
    }
    else
    {

    num1_1 = MIN + rand() % (MAX-1); //若为真分数,则分子必须小于99,所以应该%(MAX-1)
    num1_2 = num1_1 + rand() % (MAX - num1_1) + 1; //此处应当注意分母不能为0,注意(MAX-num1_1)不能为0
    num1 = 0;
    }

    true_false_num = 1 + rand() % (2);
    if (1 == true_false_num) //判断第一个数是什么类型的数
    {
    num2 = MIN + rand() % (MAX);
    }
    else
    {
    num2_1 = MIN + rand() % (MAX-1);
    num2_2 = num2_1 + rand() % (MAX - num2_1) + 1;
    num2 = 0;
    }

    int sign; //设置四则运算符号的代号
    sign = 1 + rand() % (4); //1,2,3,4分别代表不同的四则运算符号

    switch (sign)
    {
    case 1:
    {
    if (0 == num1)
    cout << "(" << num1_1 << "/" << num1_2 << ")";
    else
    cout << num1;
    cout << "+";
    if (0 == num2)
    cout << "(" << num2_1 << "/" << num2_2 << ")";
    else
    cout << num2;
    cout << "=" << endl;
    break;

    }
    case 2:
    {
    if (0 == num1)
    cout << "(" << num1_1 << "/" << num1_2 << ")";
    else
    cout << num1;
    cout << "-";
    if (0 == num2)
    cout << "(" << num2_1 << "/" << num2_2 << ")";
    else
    cout << num2;
    cout << "=" << endl;
    break;

    }
    case 3:
    {
    if (0 == num1)
    cout << "(" << num1_1 << "/" << num1_2 << ")";
    else
    cout << num1;
    cout << "*";
    if (0 == num2)
    cout << "(" << num2_1 << "/" << num2_2 << ")";
    else
    cout << num2;
    cout << "=" << endl;
    break;

    }
    case 4:
    {
    if (0 == num1)
    cout << "(" << num1_1 << "/" << num1_2 << ")";
    else
    cout << num1;
    cout << "/";
    if (0 == num2)
    cout << "(" << num2_1 << "/" << num2_2 << ")";
    else
    cout << num2;
    cout << "=" << endl;
    break;

    }
    }
    }

    //cout << "产生小数:" << 0+rand()/double(RAND_MAX);


    return 0;
    }

  • 相关阅读:
    javascript超过容器后显示省略号效果(兼容一行或者多行)
    javascript仿新浪微博图片放大缩小及旋转效果
    javascript瀑布流效果
    javascript日历插件
    JS图片Switchable切换大集合
    JS简单的倒计时(代码优化)
    JS全选功能代码优化
    JS日期格式化转换方法
    Jquery简单的placeholder效果
    jQuery封装自定义事件--valuechange(动态的监听input,textarea)之前值,之后值的变化
  • 原文地址:https://www.cnblogs.com/wrx166/p/14169738.html
Copyright © 2011-2022 走看看