目录

  • 1 从这里开始你的学习
    • 1.1 欢迎词
    • 1.2 单元学习目标
    • 1.3 课程学习说明
      • 1.3.1 课程概述与内容
      • 1.3.2 学习目标
      • 1.3.3 学习安排
      • 1.3.4 学习活动
      • 1.3.5 考核标准
      • 1.3.6 学习准则
    • 1.4 先修知识与必备技能
      • 1.4.1 学习平台使用及技术支持
      • 1.4.2 必备基础要求
      • 1.4.3 学习资源使用指南
      • 1.4.4 教材电子版下载
      • 1.4.5 相关软件下载与安装方法
      • 1.4.6 答疑安排与教师课表
      • 1.4.7 作业和考试反馈
    • 1.5 FAQ:常见问题解答
    • 1.6 教师自我介绍和学生自我介绍
    • 1.7 计算思维能力调查
    • 1.8 学习风格调查
    • 1.9 交流协作分组情况
    • 1.10 第0讲 单元测试
  • 2 计算思维概述——第1周
    • 2.1 单元学习目标
    • 2.2 本章课件下载
    • 2.3 课程思政
      • 2.3.1 线上思政(自主学习)
      • 2.3.2 线下课程思政
    • 2.4 计算无所不在
    • 2.5 计算思维概述
    • 2.6 计算工具与计算机
    • 2.7 第1讲 单元测试
    • 2.8 上机实验1-1:计算思维概述——系统自动评阅
    • 2.9 延伸学习
  • 3 计算基础——第2~3周
    • 3.1 单元学习目标
    • 3.2 本章课件下载
    • 3.3 课程思政
      • 3.3.1 线上课程思政(自主学习)
      • 3.3.2 线下课程思政
    • 3.4 初识二进制
    • 3.5 二进制的运算(自主学习)
    • 3.6 数制转换
    • 3.7 数的表示
    • 3.8 字符编码
    • 3.9 声音图像编码(自主学习)
    • 3.10 第2讲 单元测试
    • 3.11 上机实验2-1:进制转换——系统自动评阅
    • 3.12 延伸学习
  • 4 计算平台——第4周
    • 4.1 单元学习目标
    • 4.2 本章课件下载
    • 4.3 课程思政
      • 4.3.1 线上课程思政(自主学习)
      • 4.3.2 线下课程思政
    • 4.4 计算机系统
    • 4.5 硬件之主板(自主学习)
    • 4.6 硬件之接口与总线(自主学习)
    • 4.7 硬件之CPU(自主学习)
    • 4.8 硬件之内存(自主学习)
    • 4.9 硬件之外存(自主学习)
    • 4.10 硬件之输入输出设备(自主学习)
    • 4.11 计算机基本工作原理
    • 4.12 操作系统之处理机功能
    • 4.13 操作系统之其他功能
    • 4.14 第3讲 单元测试
    • 4.15 上机实验3-1:计算机硬件系统——系统自动评阅
    • 4.16 延伸学习
  • 5 问题求解——第5~7周
    • 5.1 单元学习目标
    • 5.2 本章课件下载
    • 5.3 课程导图与设计
    • 5.4 典型课例(课堂实录)
    • 5.5 线上思政(自主学习)
    • 5.6 线下思政
    • 5.7 纸版教材在线阅读
    • 5.8 什么是问题求解?
    • 5.9 算法与算法描述
    • 5.10 顺序结构
    • 5.11 选择结构
    • 5.12 循环结构
    • 5.13 算法策略基础之数组
    • 5.14 算法策略基础之函数
    • 5.15 算法策略之枚举法
    • 5.16 算法策略之递归法
    • 5.17 算法策略之递推法
    • 5.18 算法策略之迭代法
    • 5.19 算法策略之分治法(自主学习)
    • 5.20 算法策略之动态规划(自主学习)
    • 5.21 算法策略之贪心算法(自主学习)
    • 5.22 算法策略之回溯法(自主学习)
    • 5.23 算法策略之查找
    • 5.24 算法策略之排序
    • 5.25 实验4-1:Raptor 软件基本操作(教师手工评阅)
    • 5.26 实验4-2:算法设计与分析(生生互评)
    • 5.27 实验4-3:问题求解(自主学习)
    • 5.28 实验7-1:解题报告
    • 5.29 实验7-2:解题报告
    • 5.30 实验7-3:解题报告(自主学习)
    • 5.31 第7讲 单元测试
    • 5.32 延伸学习
  • 6 网络技术与信息共享——第8周
    • 6.1 单元学习目标
    • 6.2 本章课件下载
    • 6.3 课程思政
      • 6.3.1 线上思政(自主学习)
      • 6.3.2 线下思政
    • 6.4 初识网络
    • 6.5 网络分类(自主学习)
    • 6.6 网络体系结构
    • 6.7 网络设备(自主学习)
    • 6.8 局域网的搭建(自主学习)
    • 6.9 IP与域名系统
    • 6.10 划分子网
    • 6.11 Internet 服务(自主学习)
    • 6.12 数字公民与网络安全(自主学习)
    • 6.13 组网实例(自主学习)
    • 6.14 第4讲 单元测试
    • 6.15 上机实验4(PBL):网络互联训练——生生互评
      • 6.15.1 思科网络实验室1:网络布线
      • 6.15.2 思科网络实验室2:将计算机添加到现有网络
      • 6.15.3 思科网络实验室3:连接无线路由器
      • 6.15.4 思科网络实验室4:测试无线连接
    • 6.16 延伸学习
  • 7 数据库技术与数据管理——第9-10周
    • 7.1 单元学习目标
    • 7.2 本章课件下载
    • 7.3 课程思政
      • 7.3.1 线上思政(自主学习)
      • 7.3.2 线下思政
    • 7.4 数据库基本概念(自主学习)
    • 7.5 数据库的设计方法
    • 7.6 数据库的规范化设计1
    • 7.7 数据库的规范化设计2
    • 7.8 Access数据库的创建与查询(自主学习)
    • 7.9 关系代数理论
    • 7.10 SQL语句编程(自主学习)
    • 7.11 实验5-1:数据库设计——互评作业
    • 7.12 实验5-2:窗体与报表——互评作业
    • 7.13 第5讲 单元测试
    • 7.14 延伸学习
  • 8 逻辑思维——第10-11周
    • 8.1 单元学习目标
    • 8.2 本章课件下载
    • 8.3 课程导图与设计
    • 8.4 典型课例(课堂实录)
    • 8.5 线上思政(自主学习)
    • 8.6 线下思政
    • 8.7 实验6-1:逻辑推理(PBL个人项目——教师手工评阅)
    • 8.8 前6章思维导图训练(PBL小组项目——互评)
    • 8.9 纸版教材在线阅读
    • 8.10 逻辑思维及其训练方法(自主学习)
    • 8.11 命题与命题判断
    • 8.12 命题符号化
    • 8.13 布尔代数与真值表
    • 8.14 命题演算与逻辑推理
    • 8.15 习题课
    • 8.16 实验6-1:解题报告
    • 8.17 第6讲 单元测试
    • 8.18 延伸学习
  • 9 数据分析与数据挖掘——第11~12周
    • 9.1 单元学习目标
    • 9.2 本章课件下载
    • 9.3 课程导图与设计
    • 9.4 课程思政
    • 9.5 线上思政(自主学习)
    • 9.6 线下思政
    • 9.7 上机实验8-1:数据分析(PBL个人项目——系统自动评阅)
    • 9.8 上机实验8-2:数据挖掘(自主学习)
    • 9.9 纸版教材在线阅读
    • 9.10 数据挖掘概述(自主学习)
    • 9.11 数据采集(自主学习)
    • 9.12 数据探索之数据质量分析
    • 9.13 数据探索之数据特征分析
    • 9.14 数据特征分析之分布分析
    • 9.15 数据特征分析之集中统计分析
    • 9.16 数据特征分析之离散统计分析
    • 9.17 数据预处理
    • 9.18 分类
    • 9.19 预测
    • 9.20 聚类分析(自主学习)
    • 9.21 关联规则(自主学习)
    • 9.22 第8讲 单元测试
    • 9.23 延伸学习
  • 10 课程思政案例篇
    • 10.1 课程思政案例
  • 11 特色思维训练库
    • 11.1 数学思维(50篇)
    • 11.2 逻辑思维(50篇)
    • 11.3 AI智能思维(50篇)
    • 11.4 专业思维(50篇)
  • 12 游戏编程案例篇
    • 12.1 编程游戏关卡(30篇)
    • 12.2 编程游戏制作(10关)
  • 13 大工程思训项目库
    • 13.1 综合性案例——北京冬奥会智能餐厅设计
    • 13.2 综合性案例——北京冬奥会运动员密码设置
    • 13.3 综合性案例——北京冬奥电脑装配
    • 13.4 综合性案例——北京冬奥网络安全培训
    • 13.5 综合性案例——北京冬奥会商品销售数据库系统设计
    • 13.6 综合性案例——北京冬奥金牌榜预测
    • 13.7 综合性案例——北京冬奥会奖牌榜自动更新算法设计
    • 13.8 综合性案例——北京冬奥会线上销售大数据分析
  • 14 考试专栏
    • 14.1 教材及教材修订
    • 14.2 考试纪律
    • 14.3 考试注意事项
    • 14.4 逻辑符号的录入方法
    • 14.5 期末考试模拟样卷
实验7-2:解题报告

题目一、水仙花数(枚举法)

春天是鲜花的季节,MM们也是花枝招展,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:

“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。请你用枚举法输出所有水仙花数。

----------------------------------------------------------------------------------------------------------------------------

分析:

(1)水仙花数是一个三位数,所以其范围应该为:【0,999】

(2)其各位的数字的立方和等于其本身,即:n=a^3+b^3+c^3

(3)需要在【0,999】范围内,逐一排查,搜索满足 n=a^3+b^3+c^3 式子的n。

故此,

(1)枚举范围:【0,999】;

(2)约束条件:n=a^3+b^3+c^3

想办法求出这个三位数的各位数字成为关键。解决方法如下:

百位上的数设为a,a=floor(n/100),即:n/100后取整,raptor中的取整函数:floor(下取整)、ceiling(上取整)。

十位上的数设为b,b有两种求解方法:1)b=floor(n/10) mod 10;2)b=floor((n mod 100)/10)

个位上的数设为c,c=n mod 10

◇ 伪代码:

for i = 100 to 999

    a=floor(i/100)

    b=floor(i/10) mod 10

    c=i mod 10

    if i=a^3+b^3+c^3 then

         output i

    endif

endfor

◇ 流程图

----------------------------------------------------------------------------------------------------------------------------

题目二、韩信点兵(枚举法)

相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。一次,韩信带1500名兵士打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信很快说出人数,现在请你用枚举法计算一下韩信剩余的士兵人数。

---------------------------------------------------------------------------------------------------------------------------------

分析:

(1)韩信带1500名士兵去打仗,战死四五百人,即:剩下一千多人。

(2)站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。即:剩余人数和3除,余2人;和5除,余4人;和7除余6人。

故此,

(1)枚举范围:【1000,1100】

(2)约束条件:n mod 3 =2 and n mod 5 =4 and n mod 7 =6

◇  伪代码:

for i=1000 to 1100

  if i mod 3 =2 and i mod 5 =4 and i mod 7 =6 then

       output "soldiers="+i

  endif

endfor

◇  流程图:

---------------------------------------------------------------------------------------------------------------------------------

题目三、棋迷俱乐部(枚举法、迭代法)

张三、李四、王五三个棋迷,定期去文化宫下棋。张三每五天来一次,李四每六天来一次,王五每九天来一次。问每过多少天他们才能一起在文化宫下棋?提示:可以用最小公倍数求解(迭代法)、也可以用枚举法求解。

---------------------------------------------------------------------------------------------------------------------------------

分析:

张三每五天来一次,李四每六天来一次,王五每九天来一次。即:求5、6、9的最小公倍数,即:90。

(1)迭代法求解

方法1:非递归实现:

m=5,n=6,p=9,辗转相除法求出m和n的最大公约数 1,然后,再求出m和n的最小公倍数 p=30。再次辗转相除法求p和q的最大公约数:3,再求出最小公倍数:r=90。

伪代码如下:

主调函数:

m=5

n=6

p=9

q=m*n/gcd(m,n)

r=p*q/gcd(p,q)

output r

被调函数:

function gcd ( x , y )

    r = x mod y

    while r !=0 do

          x = y

          y = r

          r = x mod y

    end while

    return y

end function

流程图如下:

        

            主调函数                              被调函数

方法2:递归实现:

递归式:gcd(n,m mod n)

递归出口:n=1

界函数:gcd(n,m mod n)

伪代码如下:

主调函数代码不变,同上。

被调函数:

function gcd ( x , y )

    r = x mod y

    if r = 0 then

          return y

    else

          return gcd ( y , r)

    end if

end function

流程图:

主调函数流程图不变,同上。

被调函数流程图如下:

(2)枚举法求解

枚举范围:【1,?】

约束条件:days mod 5 =0 and days mod 6=0 and days mod 9=0

枚举没有结束范围,怎么办?可以用while语句实现,循环次数未知。

伪代码:

days =0

flag =1

while flag=1 do

    days = days +1

    if days mod 5 =0 and days mod 6=0 and days mod 9=0 then

        flag=0

    end if

endwhile

output days

流程图如下:

---------------------------------------------------------------------------------------------------------------------------------

题目四、神秘三位数(递归法、枚举法)

有这样一个3位数,组成它的3个数字阶乘之和正好等于它的本身。即:abc=a!+b!+c!,请你用递归法搜索一下这样的3位数。

---------------------------------------------------------------------------------------------------------------------------------

分析:

和第一题类似,要先将这个数的个位、十位、百位分解出来,然后分别求阶乘,最后求和。

伪代码:

主调函数:

for i=100 to 999

    a=floor( i/100 )

    b=floor( i/10 ) mod 10

    c=i mod 10

    if i = fact(a) + fact(b) +fact(c)

          output i

    endif

被调函数:

function fact ( x )

    f=1

    for i =1 to x

          f =f *i

    endfor

    return f

endfunction

流程图:

      

                                             主调函数                                               被调函数

递归实现:

主调函数的伪代码和流程图都不变。被调函数的伪代码如下:

function fact ( x )

    if x=0 or x=1 then

         return 1

     else

          return x*fact ( x )

end function

流程图如下:

---------------------------------------------------------------------------------------------------------------------------------

题目五、经济大恐慌(递推法)

公元2505 年 1 月 1 日,发生了世界经济大恐荒。从那天起,物价飞涨。第一天一个馒头只要一元,第二天就要三元,第三天要卖六元,第四天要卖十元,以此类推。请你问第10天馒头卖多少钱?请你用递推法求解。

---------------------------------------------------------------------------------------------------------------------------------

分析:

第 1 天 —— 1 元

第 2 天 —— 3 元

第 3 天 —— 6 元

第 4 天 —— 10 元

......

第 10 天 —— ? 元

本题为递推法,第 i 天的钱数 = i-1 天 的钱数 + i,可以用数组实现、也可以用通项公式实现。

方法1:递推法

(1)伪代码如下:

a[10]={0}

a[1]=1

for i = 2 to 10

    a[i]=a[i-1]+i

endfor

(2)流程图如下:

方法2:通项公式法

        a1=1

        a2=a1+2

        a3=a2+3

        ......

+)    an=an-1+n

----------------------

        a10=1+2+3+...+n

              =(1/2)*n*(a1+an)

              =10*11/2

              =55

(1)伪代码1:

a1=1

an=10

n=10

s=(1/2)*n*(a1+an)

output s

(2)伪代码2:

s=0

for i =1 to 10

      s = s + i

endfor

output s