二柱子遇到了一个坑,要给他儿子出四则运算题,他以为用编程可以轻松实现,却没想到这只是坑的开始……
要求: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 ⊙ )啊!敲了很久……我错了,以后注意。
酱紫,轻喷。
补图: