A * B = C 
随机生成这样一个式子,
要求:
A必须是小数\
B必须是整数\
A、B、C有效数字不大于四且最少为一.

解决方案 »

  1.   

    A=double(rand())/double(RAND_MAX);
    C=1.0+double(rand())/double(RAND_MAX)*3.0;
    B=int(C/A);
      

  2.   

    rand生成0 - RAND_MAX之间的整数。(rand() / RAND_MAX) * 3 + 1则为1 - 4间的有理数,int取整,float取小数。
      

  3.   

    A=double(rand())/double(RAND_MAX);
    A=0.62797936948759我最后要的结果是A*B==C&&C/A=B&&C/B==A
    &&  
    A必须是小数\
    B必须是整数\
    A、B、C有效数字不大于四且最少为一.
      

  4.   

    不对,重表达一下,不能用有效数字
    随机生成这样一个式子:A * B = C 
    要求:
    A*B==C && C/A=B && C/B==A
    A必须是小数\
    B必须是整数\
    ABC中整数的位数不得超过四;小数去掉小数点后的数字个数也不能超过四
      

  5.   

    double A = 5.0;
    double C = 5.0;
    int B = 5;
    do
    {
    A=double(rand())/double(RAND_MAX);
    C=1.0+double(rand())/double(RAND_MAX)*3.0;
    B=int(C/A);
    }while (!(A >= 1.0 && A <= 4.0 &&
          B >= 1   && B <= 4   &&
      C >= 1.0 && C <= 4.0)); CString ls;
            ls.Format("%f * %d = %f",A,B,C);
    this->m_Edit.SetWindowText(ls);
      

  6.   

    "我最后要的结果是A*B==C&&C/A=B&&C/B==A"
    ——你这个命题有问题:
    A必须是小数,又要C/B==A,在VC中小数可用float/double来表示,但判断两个浮点数是否相等是不能直接用==判断的,只能是小于一定精度范围:
    const double DECISION = 10e-6;
    abc(C/B-A)<=DECISION是否满足以下条件即可:
    C/A=B
    A必须是小数\
    B必须是整数\
    A、B、C有效数字不大于四且最少为一.
      

  7.   

    修改一下double A = 5.0;
    double C = 5.0;
    int B = 5;
    do
    {
    A=1.0+double(rand())/double(RAND_MAX)*3.0;
    B=(int)(1.0+double(rand())/double(RAND_MAX)*3.0);
    C=A*B;
    }while (!(A >= 1.0 && A <= 4.0 &&
          B >= 1   && B <= 4   &&
      C >= 1.0 && C <= 4.0)); CString ls;
            ls.Format("%f * %d = %f",A,B,C);
    this->m_Edit.SetWindowText(ls);