1

如何利用PHP实现随机出100道20以内的数学加减法练习题

 2 years ago
source link: https://www.huhexian.com/27057.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何利用PHP实现随机出100道20以内的数学加减法练习题

2022-02-1611:06:42评论1613字

我们在家里的有的时候需要给孩子们提供20以内的加法和减法练习,这些练习每次都是手写的,让我们今天用的PHP编写一个方法来实现,自定义问题数量,任意设置数字范围和结果数字范围,题目不能重复。

如何利用PHP实现随机出100道20以内的数学加减法练习题以下是PHP出小学数学练习题的源代码:
  1. <?php
  2. $mrand_1 = 1; //数字范围,最小数
  3. $mrand_2 = 20; //数字范围,最大数
  4. $leibei_1_limit = 20; //加法得数最大值
  5. $leibei_2_limit = 0; //减法得数最小值
  6. $tinum = 100; //出题数量
  7. $leibie = 2; //加法1,减法2
  8. $tistr='';
  9. $jilu_str='';
  10. $now_num=1;
  11. function get_suanshi_jiafa($v1,$v2,$v3,$jilu_str,$tinum,$now_num){//加法
  12. $num_1=mt_rand($v1,$v2);
  13. $num_2=mt_rand($v1,$v2);
  14. $ee=$now_num;
  15. if (strpos($jilu_str,",".$num_1."|".$num_2.",")!==false){//重复题重新生成
  16. get_suanshi_jiafa($v1,$v2,$v3,$jilu_str,$tinum,$ee);
  17. }else{
  18. if ($num_1+$num_2<=$v3){//
  19. $str_e = $num_1." + ".$num_2." =<br>";
  20. $jilu_get = ",".$num_1."|".$num_2.",";
  21. $jilu_str .= $jilu_get;
  22. $ee++;
  23. echo $str_e;
  24. if ($ee<=$tinum){//题量不足再次出题
  25. get_suanshi_jiafa($v1,$v2,$v3,$jilu_str,$tinum,$ee);
  26. }else{//得数超纲了
  27. get_suanshi_jiafa($v1,$v2,$v3,$jilu_str,$tinum,$ee);
  28. function get_suanshi_jianfa($v1,$v2,$v3,$jilu_str,$tinum,$now_num){//减法
  29. $num_1=mt_rand($v1,$v2);
  30. $num_2=mt_rand($v1,$v2);
  31. $ee=$now_num;
  32. if (strpos($jilu_str,",".$num_1."|".$num_2.",")!==false){//重复题重新生成
  33. get_suanshi_jianfa($v1,$v2,$v3,$jilu_str,$tinum,$ee);
  34. }else{
  35. if ($num_1-$num_2>=$v3){//
  36. $str_e = $num_1." - ".$num_2." =<br>";
  37. $jilu_get = ",".$num_1."|".$num_2.",";
  38. $jilu_str .= $jilu_get;
  39. $ee++;
  40. echo $str_e;
  41. if ($ee<=$tinum){//题量不足再次出题
  42. get_suanshi_jianfa($v1,$v2,$v3,$jilu_str,$tinum,$ee);
  43. }else{//得数超纲了
  44. get_suanshi_jianfa($v1,$v2,$v3,$jilu_str,$tinum,$ee);
  45. if ($leibie=='1'){//加法
  46. get_suanshi_jiafa($mrand_1,$mrand_2,$leibei_1_limit,$jilu_str,$tinum,$now_num);
  47. if ($leibie=='2'){//减法
  48. get_suanshi_jianfa($mrand_1,$mrand_2,$leibei_2_limit,$jilu_str,$tinum,$now_num);
  49. ?>

曾尝试过用FOR循环显示,但因为增加了重复题的判断,for就不一定能达到结果得数的要求,所以就要用到了递归。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK