心欲呐喊

博客园 首页 新随笔 联系 订阅 管理

 #include<stdlib.h>
#include<stdio.h>
#include<time.h>
void main()
{
    int x,y,z,t,m,n,l;
    float p,q;
    srand(unsigned( time(NULL)));//防止重复
    printf ("请您想要多少个四则运算算式?");
    scanf("%d",&l);//按要求出算式
    for(int i=0;i<l;i++)
    {
        x=rand()%100;
        y=rand()%100;//在100内随机抽出一个整数
        z=rand()%5;//随机分为五种情况,+,-,*,/,真分数运算
        switch(z)
        {
            case 0: printf("%d + %d =\n", x, y);
            break;
            case 1:if(x<y){
            t=x;
            x=y;
            y=t;
        }
    printf("%d - %d =\n", x, y);//防止得数为负数
    break;
    case 2:
    printf("%d * %d =\n", x, y);
    break;
    case 3:
    while (y == 0)
    {
         y = rand() % 100;
    }
    printf("%d / %d =\n", x, y);//除数不为0
    break;
    case 4: m = rand() % 100;
    n = rand() % 100;
    z = rand() %4 ;
    while (y == 0)
    {
         y = rand() % 100;
    }
    while (n == 0)
    {
         n = rand() % 100;
    }
    if (x > y)
    {
         t = x;
         x = y;
         y = t;
    }
    if (m > n)
    {
        t = m;
        m = n;
        n = t;
    }
     switch (z)
    {
        case 0:printf("%d/%d + %d/%d =\n", x, y, m, n);
        break;
        case 1:
        p = (float)x / (float)y;
        q = (float)m / (float)n;
    if (q>p)
    {
         t = x;
         x = m;
         m = t;
         t = y;
         y = n;
         n = t;
    }
    printf("%d/%d - %d/%d =\n", x,y,m,n);//真分数相减大于0
    break;
    case 2:printf("%d/%d * %d/%d =\n", x, y, m, n);
    break;
    case 3:
    x = rand() % 100;
    y = rand() % 100;
    m = rand() % 100;
    n = rand() % 100;
    z = rand() % 4;
    while (m == 0)
    {
        m = rand() % 100;
    }
    printf("%d/%d / %d/%d =\n", x, y, m, n);
    break;
         }
    }
}
      system("pause");
}

 有三个要求。不重复,按要求数量出算式,可以计算真分数。

1.”srand((unsigned)time(NULL))是初始化随机函数种子:
    1、是拿当前系统时间作为种子,由于时间是变化的,种子变化,可以产生不相同的随机数。
    计算机中的随机数实际上都不是真正的随机数,如果两次给的种子一样,是会生成同样的随机序列的。 所以,一般都会以当前的时间作为种子来生成随机数,这样更加的随机。
    2、使用时,参数可以是unsigned型的任意数据,比如srand(10); 
    3、如果不使用srand,用rand()产生的随机数,在多次运行,结果是一样的。“-来自百度匿名用户。可以有效防止重复问题。
2.按要求数量,只需再加入一个未知数,使其代替30在赋值即可。
3.真分数必须注意相减不能为负数,而且相除要符合要求除数要存在且不能为零。

 

posted on 2018-10-07 23:35  心欲呐喊  阅读(187)  评论(0编辑  收藏  举报