问题

要求定义一个int型数组a,包含100个元素,保存100个随机的4位数。再定义一个int型数组b,包含10个元素。统计a数组中的元素对10求余等于0的个数,保存到b[0]中;对10求余等于1的个数,保存到b[1]中,……依此类推。

解决(python)

  1. #!/usr/bin/env python
  2. #coding:utf-8
  3. import random
  4. if __name__=="__main__":
  5. a =[random.randint(1000,9999)for i in range(101)]
  6. a_remainder =[i%10for i in a]
  7. b =[a_remainder.count(i)for i in range(10)]
  8. print a
  9. print a_remainder
  10. print b

解决 (racket 5.2.1)

  1. #lang racket
  2. ;定义函数 equal-to-k
  3. ;它接受一个整数输入 k
  4. ;它输出一个只返回true/false的匿名函数
  5. ; k =1时, equal-to-k 的功能可以这样理解
  6. ;(equal-to-k 1)=>true
  7. ;(equal-to-k 2)=>false
  8. (define (filter-by-k k)
  9. (lambda(n)(if(= k n)truefalse)))
  10. ;定义函数 random-list-100-remainder-stats
  11. ;它不接受任何输入
  12. ;它输出一个整数型列表 b,其每个元素的定义如下
  13. ;>给定一个整数型列表 a,包含100个元素,保存100个随机的4位数。
  14. ;>整数型列表 b,包含10个元素。
  15. ;>统计a列表中的元素对10求余等于0的个数,保存到b[0]中;
  16. ;>10求余等于1的个数,保存到b[1]中,……依此类推。
  17. (define (random-list-100-remainder-stats)
  18. (let*
  19. ([rand-e4 (lambda()(+1000(random 9000)))];定义1000~9999之间的随机数"生成器"
  20. [rand-list-100(for/list ([i 100])(rand-e4))];生成长度为100的列表,其中每个元素都是1000~9999之间的随机数
  21. [get-remainder-by-10(lambda(n)(modulo n 10))];定义对某整数除以10取余数的"生成器"
  22. [remainder-list-100(map get-remainder-by-10 rand-list-100)];对前面长为100的列表批量除以10取余数
  23. ;最后,对余数做统计,生成 b 列表
  24. [remainder-list-stats (for/list ([k (in-range 010)])(count (filter-by-k k) remainder-list-100))])
  25. ;把生成的 b 列表输出出来
  26. remainder-list-stats))
  27. ;函数调用,正常执行时,应输出一个整数的列表
  28. ;此列表的展现形式类似于'(7 11 13 10 5 11 6 11 12 14)
  29. (random-list-100-remainder-stats)