自动生成四则运算题目
1 #include<stdio.h> 2 #include<Windows.h> 3 #include<time.h> 4 void main() 5 { 6 int a, b, c, d,i,m,n; 7 float p, q; 8 srand(unsigned( time(NULL)));//这个函数调用中使用(time(NULL));这个函数调用中使用time(NULL)函数返回值(当前时间)作实参。初始化随机数发生器。 9 for (i = 0; i < 30; i++) 10 { 11 a = rand() % 100;//rand()返回一个随机数,但是每次调用时,随机数发生器返回的随机数序列都是一样的,所以,用当前时间(time(NULL))返回值作为种子对随机数发生器进行初始化,由于每次当前时间不一样,所以随机数发生器产生的随机数序列不一样,即rand()函数调用的返回值不一样,就达到了得真随机数而不是伪随机数的目的。 12 b = rand() % 100; 13 c = rand() % 5; 14 switch (c) 15 { 16 case 0: printf("%d + %d =\n", a, b); 17 break; 18 case 1:if (a < b) 19 { 20 d = a; 21 a = b; 22 b = d; 23 } 24 printf("%d - %d =\n", a, b); 25 break; 26 case 2:printf("%d * %d =\n", a, b); 27 break; 28 case 3: 29 while (b == 0) 30 { 31 b = rand() % 100; 32 } 33 printf("%d / %d =\n", a, b); 34 break; 35 case 4: 36 a = rand() % 100; 37 b = rand() % 100; 38 m = rand() % 100; 39 n = rand() % 100; 40 c = rand() %4 ; 41 while (b == 0) 42 { 43 b = rand() % 100; 44 } 45 while (n == 0) 46 { 47 n = rand() % 100; 48 } 49 if (a > b) 50 { 51 d = a; 52 a = b; 53 b = d; 54 } 55 if (m > n) 56 { 57 d = m; 58 m = n; 59 n = d; 60 } 61 switch (c) 62 { 63 case 0:printf("%d/%d + %d/%d =\n", a, b, m, n); 64 break; 65 case 1: 66 p = (float)a / (float)b; 67 q = (float)m / (float)n; 68 if (p < q) 69 { 70 d = a; 71 a = m; 72 m = d; 73 d = b; 74 b = n; 75 n = d; 76 } 77 printf("%d/%d - %d/%d =\n", a,b,m,n); 78 break; 79 case 2:printf("%d/%d * %d/%d =\n", a, b, m, n); 80 break; 81 case 3: 82 a = rand() % 100; 83 b = rand() % 100; 84 m = rand() % 100; 85 n = rand() % 100; 86 c = rand() % 4; 87 while (m == 0) 88 { 89 m = rand() % 100; 90 } 91 printf("%d/%d / %d/%d =\n", a, b, m, n); 92 break; 93 } 94 } 95 } 96 system("pause"); 97 }
主要功能:
- 能自动生成小学四则运算题目(注意是给小学生用的,不能出现负数)
- 除了整数外,还要支持真分数的四则运算
题目分析设计思想:1.由于是给小学生用的,所以要求运算的时候不能有负数,因此,减法运算时,前面的数一定要大于后面的数。
2.除法运算的规则,分母不能为0。
3.题目要求支持真分数,由真分数的概念知,分子不能大于分母的数。
4.因为题目要求是随机30道题,所以运用随机生成数函数srand()和rand()。
程序运行截图:
总结:
本次作业我采用C语言来完成的,虽然途中有所困难,但还是通过看书以及跟同学交流解决了问题成功运行了程序。还需要看书、学习。