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))); 9 for (i = 0; i < 30; i++) 10 { 11 a = rand() % 100; 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 }
阿超有個兒子上小學二年級,老師每天讓家長給孩子出30道加減法題,雖然不多,但是每天都做也算是個負擔,阿超作為一個老牌程序員當然想用計算機來解決這個小問題,目前對於這個問題對於任何語言都不是問題
題目要求:
- 能自動生成小學四則運算題目(注意是給小學生用的,要是結果出現負數的話他們會迷茫的!)
- 除了整數外,還要支持真分數的四則運算
題目分析:1.由於是給小學生用的,所以要求運算的時候不能有負數,因此,減法運算時,前面的數一定要大於后面的數。
2.除法運算的規則,分母不能為0。
3.題目要求支持真分數,由真分數的概念知,分子不能大於分母的數。
4.因為題目要求是隨機30道題,所以運用隨機生成數函數srand()和rand()。
程序運行截圖:
總結:
因為只學過C語言和C++,而C++用的不是太熟,所以就選擇的用C語言完成此次作業,編程用了一上午的時間,由於之前不知道隨機生成函數和include<time.h>,所以在班級同學的幫助下,順利的完成了此次作業。
這次作業不僅提高了我運用C語言編程的熟練度,還學習到了隨機生成數函數。期待下次的作業練習
恩,就是這樣!