程序设计方法(第二版) 第八章习题答案分享

        第八章的习题并不难,但是第八章的思想对于本新手来说还是很有意思,所以把自己做的习题答案分享给大家。

        如果各位觉着有帮助的话,动动小手给我点个赞哈

;chapter 8 test 129_1

(cons "Pluto"
      (cons "Neptune"
            (cons "Uranas"
                  (cons "Saturn"
                        (cons "Jupiter"
                              (cons "Mars"
                                    (cons "Earth"
                                          (cons "Venus"
                                                (cons "Mars"
                                                      '() )))))))))
;chapter 8 test 129_2
(cons "steak"
      (cons "French fries"
            (cons "beans"
                  (cons "bread"
                        (cons "water"
                              (cons "brie cheese"
                                    (cons "ice cream"
                                          '() )))))))
;chapter 8 test 129_3
(cons "infared"
      (cons "red"
            (cons "orange"
                  (cons "yellow"
                        (cons "green"
                              (cons "cyan"
                                    (cons "blue"
                                          (cons "purple"
                                                (cons "altraviolet"
                                                      '() )))))))))
;chapter 8 test 130
(cons "Zhang"
      (cons "Wang"
            (cons "Li"
                  (cons "Zhao"
                        (cons "Qian"
                              '())))))
;因为(cons 2 '())中,这个2是数字不是字符串


;chapter 8 test 131
;; List-of-booleans 
;; - '()
;; - (cons Boolean List-of-booleans)
;; 任意长的布尔值的列表

;; examples
'()   ; 空列表
(cons #true '())  
(cons #true (cons #false '()))

;chapter 8 test 132
; List-of-names -> Boolean
; 检测是否 "Flatt" 在 a-list-of-names 中

(check-expect (contains-flatt? '()) #false)

(check-expect (contains-flatt? (cons "Find" '()))
              #false)
(check-expect (contains-flatt? (cons "Flatt" '()))
              #true)

(check-expect
  (contains-flatt?
    (cons "A" (cons "Flatt" (cons "C" '()))))
  #true)

(check-expect
  (contains-flatt?
    (cons "A" (cons "Find" (cons "C" '()))))
  #false)


(define (contains-flatt? alon)
  (cond
    [(empty? alon) #false]
    [(cons? alon)
     (or (string=? (first alon) "Flatt")
         (contains-flatt? (rest alon)))]))

;chapter 8 test 133
(define (contains-flatt?-V2 alon)
  (cond
    [(empty? alon) #false]
    [(cons? alon)
     (cond
       [(string=? (first alon) "Flatt") #true]
       [else (contains-flatt?-V2 (rest alon))])]))
;哪个好就是见仁见智,我个人喜欢第一个的写法

;chapter 8 test 133
;; String List-of-String -> Boolean
;对于一个字符串和链表,判断这个字符串是否在这个链表之中

(check-expect (contains-string? "Flatt" '()) #false)

(check-expect
  (contains-string? "Flatt"
    (cons "A" (cons "Flatt" (cons "C" '()))))
  #true)

(check-expect
  (contains-string? "Flatt"
    (cons "A" (cons "Find" (cons "C" '()))))
  #false)

;(define (contains-string? str los) #false)  ; stub

(define (contains-string? str los)
  (cond
    [(empty? los) #false]
    [else
        (or (string=? (first los) str)
            (contains-string? str (rest los)))]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橡胶张小说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值