二柱子的第一次入坑

二柱子遇到了一个坑,要给他儿子出四则运算题,他以为用编程可以轻松实现,却没想到这只是坑的开始……

要求:1. 打印30个四则运算式;

        2. 包含真分数;

        3. 100以内运算。

……好吧,我拿不准98*74算不算100以内运算,据说他儿子小学二年级……我小学二年级是不会算98*74的……可学真分数时就会算98*74了!¥@%!!&&#……先当会算处理吧,有问题再改。

不说就当二元运算了……要输出算式的话,相当于形式上输出两个数和一个运算符,要注意除数和分母不能为0,分子要小于分母。其他就是调整格式了。

随机数函数忘了(๑°ㅁ°๑)‼……顺手补一个:


 

C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,和time()函数。

需要说明的是,iostream头文件中就有srand函数的定义,不需要再额外引入stdlib.h;而使用time()函数需要引入ctime头文件。

如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。

如果想要获取在一定范围内的数的话,直接做相应的除法取余即可。

我们上面已经可以获取随机数了,为什么还需要使用time函数呢?我们通过多次运行发现,该程序虽然生成了10个随机数,但是这个10个随机数是固定的,也就是说并不随着时间的变化而变化。

这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。

srand()函数定义 : void srand (unsigned int seed);

通常可以利用geypid()或time(0)的返回值来当做seed

如果你用time(0)的话,要加入头文件#include<ctime>

time(0)或者time(NULL)返回的是系统的时间(从1970.1.1午夜算起),单位:秒


#include<iostream>
#include<ctime>
using namespace std;
int main()
{
 srand(time(0));
 for(int i=0;i<10;i++)
 {
  //产生10以内的整数
  cout<<rand()%10<<endl;
 }
}

转自脚本之家,侵权请联系本人删除。


 

代码:

  1 //2016/03/06
  2 //打印100以内四则运算式,包含真分数。
  3 #include<iostream>
  4 #include<ctime>
  5 using namespace std;
  6 
  7 int main()
  8 {
  9     int numa, numb, numc, numd, tmp, x, y, n = 0;
 10     char sign;                                        //运算符
 11     srand(time(0));
 12     for (; n < 30; n++)                               //生成30个算式
 13     {
 14         x = rand() % 4;                               //生成算式符号
 15         switch (x)
 16         {
 17         case 0:sign = '+'; break;
 18         case 1:sign = '-'; break;
 19         case 2:sign = '*'; break;
 20         case 3:sign = '/';
 21         }
 22         y = rand() % 9;                               //生成算式形式
 23         switch (y)
 24         {
 25         case 0:                                       //整数与整数运算
 26         case 1:
 27         case 2:
 28         case 3:
 29         case 4:
 30             numa = rand() % 100;
 31             do{
 32                 numb = rand() % 100;
 33             } while (0 == numb&&'÷' == sign);
 34             cout << numa << sign << numb << "=" << endl << endl;   //打印
 35             break;
 36         case 5:                                       //分数与整数运算
 37             do{
 38                 numa = rand() % 100;
 39             } while (0 == numa);
 40             do{
 41                 numb = rand() % 100;
 42             } while (0 == numb||numb == numa);
 43             if (numa > numb)
 44             {
 45                 tmp = numa;
 46                 numa = numb;
 47                 numb = tmp;
 48             }
 49             do{
 50                 numc = rand() % 100;
 51             } while (0 == numc&&'÷' == sign);
 52             cout << numa << endl << "" << sign << numc << "=" << endl << numb << endl<<endl;   //打印
 53             break;
 54         case 6:                                       //整数与分数运算
 55             numa = rand() % 100;
 56             do{
 57                 numb = rand() % 100;
 58             } while (0 == numb);
 59             do{
 60                 numc = rand() % 100;
 61             } while (0 == numc||numb == numc);
 62             if (numb > numc)
 63             {
 64                 tmp = numc;
 65                 numc = numb;
 66                 numb = tmp;
 67             }
 68             cout << "   " << numb << endl << numa << sign << "—=" << endl << "   " << numc << endl << endl;   //打印
 69             break;
 70         case 7:                                       //分数与分数运算
 71         case 8:
 72             do{
 73                 numa = rand() % 100;
 74             } while (0 == numa);
 75             do{
 76                 numb = rand() % 100;
 77             } while (0 == numb||numb == numa);
 78             if (numa > numb)
 79             {
 80                 tmp = numa;
 81                 numa = numb;
 82                 numb = tmp;
 83             }
 84             do{
 85                 numc = rand() % 100;
 86             } while (0 == numc);
 87             do{
 88                 numd = rand() % 100;
 89             } while (0 == numd||numd == numc);
 90             if (numc > numd)
 91             {
 92                 tmp = numc;
 93                 numc = numd;
 94                 numd = tmp;
 95             }
 96             cout << numa << " ";
 97             if (numa < 10)                            //打印
 98                 cout << " ";
 99             cout << numc<< endl << "" << sign << "—=" << endl << numb ;
100             if (numb < 10)
101                 cout << " ";
102             cout<< " " << numd << endl << endl;
103             break;
104         }
105     }
106     return 0;
107 }

好像还让列编程用时来着……可我是边吃早饭边敲得( ⊙ o ⊙ )啊!敲了很久……我错了,以后注意。

酱紫,轻喷。


补图:

 

原文地址:https://www.cnblogs.com/ning-JML/p/5245635.html