分课时教案

 

2024-2025 学年第 1学期

 

 

 

 

课程名称:程序设计算法与数据结构实验(一)

课程性质:基础实践课

授课学时:46学时

授课对象:计算机、软件、网络、通信新生

任课教师:宋云

 

 

 

 

长沙理工大学计通学院

2024.8


全课程教案

 

一、基本信息

课程名称

程序设计、算法与数据结构实验(一)

课程编号

0812000317

课程性质

基础实践课

学分

1.5

教学安排

总学时46。其中讲授0学时,实验 46 学时,上机 0 学时,实训 0 学时

授课时间:第6 周至第17

周学时

4

相关课程与环节

先修课程:无

后续课程:程序设计、算法与数据结构(二)实验、程序设计、算法与数据结构(三)实验。

 

二、授课对象

基本情况

专业

软件工程

年级

24

班级

软件4

修读人数

35

授课对象分析

网络工程专业大一新生,学生高考素质较好,但对计算机相关知识了解不多,没有产生计算机理论的相关认识。对计算机的使用不够熟悉,对计算机操作系统和系统软件的使用不熟悉,对计算机的UI使用不熟练。

 

三、教学内容与安排

课程简介与要求

1、课程思政教学目标:筛选适合教学和专业拔高的特色案例;精心设计融入思政元素的上机实践作业和综合实践项目;为整个课程选定诸如科技强国、大国重器、大国工匠等课程主题,确定专业课程的思政色彩;构建实时动态更新的计算机领域前沿成果库;搜集学生的优秀作品,建设学生优秀作品库。以此形成多层次、多维度的课程特色立体资源库,为课程思政的实施提供丰富教学资源。在实验进行的过程中,学生基于建构主义学习理论的合作探究式学习,涉及任务分工、交流意见、指导操作等过程,在此过程中培养学生的合作精神、集体主义、理解与表达等重要思政元素。

2、课程教学总目标:在学习C语言过程中,通过编程实验使学生能够针对具体的问题,输入数据获得运行结果,并在编程过程中提炼解题算法,得到有效的结论并获得编程经验。能够搭建合适的软件环境,掌握C语言的编辑、编译、运行、调试的流程,并完成验证自己所编写的程序。并能灵活运用OpenJudge平台,进行大量的编程实训,使学生在实训中加强编程能力并对系统进行验证。

3、课程目标与学生能力培养的关系:课程思政目标的实施有利于培养学生职业责任感,团队合作、组织、沟通等社会能力。

课程教学目标的实施有利于培养学生的系统分析和程序设计能力,培养学生分析实验数据,进行故障进行定位与排查的能力。

课程目标

课程目标

支撑毕业要求指标点

与课程关联度

课程目标1:本实验课程通过搭建codeblocks编程环境、OJ在线测试平台、学宝、头歌等课程管理工具,构建了面向学生编程学习及效果考核的实践教学体系,学生能熟练顺利的开展实验,记录实验结果,分析实验数据。实验开展的过程中,在深入理解理论课程知识的基础上,模拟真实的应用场景,设计贴近现实的项目背景案例,以此为基础引导学生对项目进行分析,能探讨各种可能的开发路线的优劣,拟定合理的开发方案。学生在实践中进行充分的演练,为后续分析更大规模的复杂问题做好准备。

4.3能够选用或搭建合适的实验环境,安全地开展实验,正确采集实验数据。

L0.1

课程目标2:通过使用codeblocks 、GCC编译器和GDB调试工具,掌握代码编译、调试及生成可执行文件的过程;掌握编程过程中一般语法错误及运行错误出现的原因与解决思路;掌握必要的调试技巧对故障进行定位与排查。能够综合运用单步运行、多步运行及中间结果显示等方法,并了解各种方法的适用场景及应用局限性。

5.1在工程项目中,能够掌握现代工程工具的使用原理和方法,并理解其局限性。

H0.3

课程思政

引导学生正确的编程思维:教师可以引导学生形成正确的编程思维,强调程序设计的逻辑性、严谨性和系统性,培养学生的创新意识、问题解决能力和团队合作精神。

培养学生的职业道德和责任感:教师可以通过案例分析、讨论和作业设计等方式讨论编程中的伦理和社会责任问题,教育学生遵守编程规范、保护用户隐私、防范网络安全风险等。

引导学生正确使用信息技术:教师可以引导学生认识到信息技术对社会、经济和文化的影响,教育学生正确使用信息技术、遵守网络道德,提高信息素养和信息技术安全意识。

引导学生关注社会问题和热点:教师可以选择与C语言相关的社会问题和热点作为案例,引导学生思考和讨论与之相关的道德、法律、社会等方面的问题,培养学生的社会责任感和公民意识。

通过将思政教学融入C语言程序课程中,可以帮助学生在学习技术的同时,培养正确的价值观和社会责任感,为他们的未来发展打下坚实的基础。

教学方法

 指导实验:教师通过讲解实验要求和步骤,引导学生进行实验操作。教师可以提供实验指导书或实验报告模板,指导学生完成实验任务。教师可以在实验过程中随时解答疑惑,帮助学生克服实验中遇到的困难。

实验演示:教师通过实验演示的方式,展示C语言的实际应用场景和技术操作。教师可以演示常用库函数的使用、程序调试技巧和问题解决方法等。学生可以通过观察和分析教师的演示,理解实验原理和技术实现方法。

探究式实验:教师提供一个开放性的实验问题,鼓励学生进行自主探究和实验设计。学生可以通过思考、讨论和实验验证等方式,寻找问题的解决方案,并进行实验验证。教师在实验过程中起到辅导和指导的作用,引导学生进行问题分析和实验思考。

项目实验:教师组织学生进行具有一定复杂度和实际应用价值的项目开发实验。教师可以提供项目需求和设计要求,鼓励学生进行项目规划、设计和开发。教师在实验过程中进行指导和评估,帮助学生解决技术难题和团队协作问题。

实验报告:学生在完成实验后,需要撰写实验报告,详细记录实验过程、结果和分析。教师可以对学生的实验报告进行批改和评价,帮助学生加深对实验内容的理解和掌握。

实验讨论和交流:教师可以组织学生进行实验讨论和交流,学生可以分享实验经验、解决问题的方法和技巧等。教师在讨论中起到引导和促进学生思考的作用,帮助学生深入理解实验原理和技术细节。

通过以上教学方法,可以激发学生的学习兴趣,提高他们的实践操作能力和问题解决能力。同时,教师在实验过程中对学生进行指导和评估,促进学生的全面发展。

教学重点

与难点

重点:数组与线性表;字符串;函数;指针、结构体、链表。

难点:函数的递归调用;字符串;指针;链表。

课程各教学环节内容与安排

知识单元

知识点

课内学时

教学方式

作业/测验

课外学习

程序设计基础

程序设计介绍;

C语言程序设计开发工具

基本输入输出

4

课前预习,

教师讲授,

小组讨论;

完成实验题

实验1-1程序设计基础和数据类型

学了C语言到底能做什么,能从事什么工作?

数据类型与表达式

基本数据类型

运算符与表达式

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验1-2程序设计基础和数据类型

整数在内存中是如何存储的;小数在内存中是如何存储的。

程序的基本控制结构

顺序结构;

分支结构;

循环结构;

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验2-程序设计的结构

谈编程思维的培养,初学者如何实现自我突破。

数组

一维数组;

二维数组;

字符串;

6

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验3-1数组编程与实现(分组)

数组的越界和溢出;变长数组:使用变量指明数组的长度。

顺序表

顺序表插入、删除;

顺序表查找:顺序、二分;

排序:选择、冒泡

6

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验3-2数组编程与实现(分组)

顺序表的优缺点详解

函数

函数的作用、定义及使用;

函数的嵌套调用;

变量的作用域与生存期;

函数的综合性应用

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验4-函数编程与实现(项目实验)

C语言函数调用详解(从中发现程序运行的秘密)

递归函数

简单递归问题

经典递归问题

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

OJ实验

C语言多层递归函数;递归函数的致命缺陷:巨大的时间开销和内存开销。

指针

指针的定义及基本使用;

指针与数组;

指针与结构体;

指针与函数;

函数的返回值为指针;

动态内存分配;

6

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验5指针编程与实现(分组)

C语言空指针NULL以及void指针;数组到底在什么时候会转换为指针;main()函数的高级用法:接收用户输入的数据。

 

结构体

结构体的定义及使用;

结构体作为函数参数;

2

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验6-结构体编程与实现

大端小端以及判别方式;使用位运算对数据或文件内容进行加密。

链表

链表的创建;

链表的插入;

链表的删除;

链表的综合应用;

4

课前预习,

教师讲授,

小组讨论;

OJ刷题

实验7-链表编程与实现(分组)

链表的优缺点详解;静态链表和动态链表区别详解;双向循环链表。

文件

文件的使用

文本文件

二进制文件

2

课前预习,

教师讲授,

课堂研讨

实验8-文件编程与实现

文本文件和二进制文件到底有什么区别?C语言实现文件复制功能(包括文本文件和二进制文件)

注:课程目标、教学方法、重难点、教学环节(知识单元、知识点等)等内容应与教学大纲、教学日历一致。课外学习可包括学时和内容要求。

 

 

四、考核方式

考核项目

考核内容

考核方式

分值或占比

实验报告

程序运行效果、回答情况、实验报告

实验报告书

20

OJ刷题情况

OJ判断结果,刷题通过数量

OJ刷题情况统计

20

期末考试

考试系统机试判定结果

期末机试成绩

60

注:考核方式应符合课程教学大纲的要求。

 

五、教学资源

推荐教材

李峰等主编《C语言程序设计上机指导与习题选解》(1). 上海:北京大学出版社,2020

参考材料

[1] 李文新,郭炜,余华山.《程序设计导引及在线实践》,北京大学信息科学技术学院,2007

[2] 谭浩强 《C程序设计》(第五版).北京:清华大学出版社,2018

[3] www.openjudge.cn在线判定系统

[4] ACM集训队,OJ习题汇总(电子版)

课程资源

教务处网络教学综合平台: http://pt.csust.edu.cn

OJ刷题网站:http://noi.openjudge.cn/

希冀教学平台:https://course.educg.net/

自制教学视频:https://space.bilibili.com/26340287?spm_id_from=333.1007.0.0

教材分析与处理

实验内容实用性分析:教材实验内容具有实用性,能够帮助学生掌握C语言的关键知识点和技能。实验内容与实际应用紧密相关,并且具有足够的挑战性,以激发学生的实践能力和创新思维。

实验课程教材与理论课程应该是紧密联系的。实验内容应该能够帮助学生巩固和加深对理论知识的理解,同时也可以通过实验课程中的问题解决过程,提高学生的理论应用能力。实验课程的设计应该与理论课程相辅相成,形成有机的知识体系。

对学生编程能力的评估分析:实验教材中包含对学生编程能力的评估环节。这可以通过布置难度适中的编程作业和设计相应的编程挑战来实现。通过评估学生的编程能力和问题解决能力,教师可以了解学生的学习进度和需求,从而进行有针对性的教学调整。

 


分课时教案1

知识单元名称

程序设计基础

课次

1

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 掌握C语言的基本语法和编程规范,理解C语言程序的结构和特点。
  2. 熟悉常用的C语言集成开发环境,例如Turbo CCode::Blocks等,掌握在这些开发环境中编辑、编译、连接和运行C程序的基本操作。
  3. 学会调试C程序的方法和技巧,包括使用调试器进行逐步调试、观察变量的值、查看调用栈等信息,能够快速定位和解决程序中的错误。
  4. 熟悉C语言中常见的数据类型、运算符和表达式,掌握它们的使用方法和注意事项。
  5. 能够编写简单的C程序,例如进行数学计算、数据处理、文件读写等,并能够进行基本的调试和排错。
  6. 学会使用版本控制工具进行代码管理和协作开发,例如GitSVN等,掌握这些工具的基本操作和使用方法。
  7. 了解C语言的发展和应用场景,掌握C语言在实际工程中的应用和技巧,例如在嵌入式系统、操作系统、游戏开发等领域的应用。

总之,应该注重基本语法和编程规范的理解与掌握、常用开发环境的使用和调试技巧的掌握、常用数据类型和算法的应用、模块化和指针的使用、版本控制工具的使用等方面的知识和技能的培养,同时培养学生的独立思考和解决问题的能力,提高其编程思维和实践能力。

本单元重点

与难点内容

重点:

C语言的基本语法和编程规范的理解与掌握:学生需要掌握C语言的基本语法和编程规范,理解C语言程序的结构和特点,能够熟练地编写简单的C程序。

常用开发环境的使用和调试技巧的掌握:学生需要熟悉常用的C语言集成开发环境,例如Turbo CCode::Blocks等,掌握在这些开发环境中编辑、编译、连接和运行C程序的基本操作,同时需要学会调试C程序的方法和技巧。

常用数据类型和算法的应用:学生需要熟悉C语言中常见的数据类型、运算符和表达式,掌握它们的使用方法和注意事项。

版本控制工具的使用:学生需要学会使用版本控制工具进行代码管理和协作开发,例如GitSVN等,掌握这些工具的基本操作和使用方法。

难点:

C语言的基本语法和编程规范的理解与掌握:C语言的语法和编程规范比较繁琐和复杂,学生需要系统地学习和理解,同时需要进行大量的练习和实践。

常用开发环境的使用和调试技巧的掌握:调试C程序需要一定的实践经验和技巧,学生需要在学习和实践中不断积累和提高。

版本控制工具的使用:版本控制工具的使用对于初学者来说可能比较陌生,学生需要在学习中进行实践和深入理解。

实际应用中的问题解决:学生需要学会在实际应用中解决问题的方法和技巧,包括错误定位、代码优化等。

总之,C语言的开发环境和代码调试实验教学应该注重基本语法和编程规范的理解与掌握、常用开发环境的使用和调试技巧的掌握、常用数据类型和算法的应用、模块化和指针的使用、版本控制工具的使用等方面的知识和技能的培养,同时培养学生的独立思考和解决问题的能力,提高其编程思维和实践能力。

课程思政

 

培养学生的计算思:通过编程实践,学生可以锻炼计算思维,而这是信息时代中解决问题的一种重要方式。同时,可以引入社会主义核心价值观,培养学生的爱国主义情怀和主人翁意识。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

  1. 教师讲述实验要求和实验目的,给出C语言编译器的下载链接,指导学生使用安装软件进行编译器的安装。下载和安装编译器:指导学生如何下载和安装C语言编译器,例如在官网下载适合自己操作系统的安装包,然后按照提示进行安装。
  2. 教师回顾理论基础知识,指出编译器的作用,编译器的重要组成部分。介绍编译器的用途和功能:首先向学生介绍C语言编译器的作用和功能,包括将源代码转换成可执行程序、进行语法检查、优化代码等。
  3. 教师依次讲解实验题目的要求,讲解编译器的使用方法。
  4. 学生进行实验。编写C程序:要求学生编写一个简单的C程序,例如输出Hello, World!的程序。这可以帮助学生熟悉C语言的语法和编程环境。编译C程序:指导学生如何使用编译器将C程序编译成可执行文件。例如在命令行界面输入gcc 文件名.c -o 可执行文件名进行编译。运行和调试C程序:告诉学生如何运行编译后的可执行文件,并介绍一些常用的调试方法,例如使用printf函数输出变量的值进行调试。
  5. 教师进行实验指导,解决实验中出现的各种问题。常见问题解答:在课堂上解答学生遇到的一些常见问题,例如编译错误、链接错误等。
  6. 实验结束,挑选学生讲解实验成果,和学生讨论解决编译器出现的各种问题的方法。
  7. 教师总结实验情况,对表现优异的学生进行表扬,对后续要注意的问题进行总结。
  8. 课后实践操作:给学生提供一些OJ练习题目,要求他们编写并编译运行C程序,以此来巩固所学知识。

在教学过程中,可以结合实际操作演示,让学生更加直观地了解编译器的使用方法。同时,可以给学生提供一些参考学习资料,例如教材、技术文档等,帮助他们更好地掌握相关知识。

作业与

思考题设置

安装编译环境

设置和调试编译环境

运行hello world程序

在屏幕上输出我爱C语言

学习效果、学生反馈、反思改进措施等

目前学生已经开始预习工作,今年学生群建立时间较晚,未能在军训前布置预习和刷题任务,以后应督促年级辅导员尽早建立班级群,方便老师尽早进入班级督促学生刷题。

备注

 


分课时教案2

知识单元名称

程序设计基础

课次

2

授课类型

理论课讨论课实验习题课其他

学时

2

课程目标与要求

  1. 掌握C语言的数据输入和输出的基本方法,包括printfscanf函数的使用。
  2. 掌握C语言中的格式化输入输出函数的用法,例如%d%f%c等格式说明符。
  3. 学会使用C语言中的循环结构实现数据的多次输入和输出。
  4. 能够根据实际需求,灵活运用C语言的输入输出函数,解决实际问题。
  5. 熟悉C语言中文件输入输出的基本方法,例如fopenfclose等函数的使用。
  6. 掌握C语言中常用的数据类型转换函数的使用方法,例如atoisprintf等函数。
  7. 熟悉C语言中的可变长度参数列表函数的使用方法,例如printfscanf等函数的变长参数版本。
  8. 了解C语言中的字符数组和字符串处理函数的使用方法,例如strcpystrlen等函数。
  9. 掌握C语言中的条件语句和循环语句的用法,能够运用这些语句实现输入输出的控制。
  10. 熟悉C语言中的指针和数组的运用方法,能够使用指针和数组实现数据的输入输出。

总之,C语言的输入输出实验教学应该注重基本方法、格式化输入输出函数、循环结构、数据类型转换函数、可变长度参数列表函数、字符数组和字符串处理函数、条件语句和循环语句、指针和数组等方面的知识和技能的培养,同时培养学生的独立思考和解决问题的能力,提高其编程思维和实践能力。

本单元重点

与难点内容

重点:

  1. C语言的数据输入和输出的基本方法,包括printfscanf函数的使用。
  2. C语言中的格式化输入输出函数的用法,例如%d%f%c等格式说明符。
  3. C语言中的循环结构实现数据的多次输入和输出。
  4. C语言中文件输入输出的基本方法,例如fopenfclose等函数的使用。
  5. C语言中常用的数据类型转换函数的使用方法,例如atoisprintf等函数。
  6. C语言中的可变长度参数列表函数的使用方法,例如printfscanf等函数的变长参数版本。
  7. C语言中的字符数组和字符串处理函数的使用方法,例如strcpystrlen等函数。
  8. C语言中的条件语句和循环语句的用法,能够运用这些语句实现输入输出的控制。
  9. C语言中的指针和数组的运用方法,能够使用指针和数组实现数据的输入输出。

难点:

  1. C语言中的格式化输入输出函数的用法,尤其是%d%f%c等格式说明符的具体含义和使用方法。
  2. C语言中的循环结构实现数据的多次输入和输出的逻辑设计和实现。
  3. C语言中文件输入输出的基本方法的实际应用,需要考虑到打开方式、读写顺序、数据格式等因素。
  4. C语言中常用的数据类型转换函数的使用方法,需要注意数据类型转换的规则和限制。
  5. C语言中的可变长度参数列表函数的使用方法,需要理解变长参数的原理和实现方式。
  6. C语言中的字符数组和字符串处理函数的使用方法,尤其是字符串的操作和处理需要注意字符串长度和结尾标志等细节。
  7. C语言中的条件语句和循环语句的逻辑设计和实现,需要注意条件判断和循环终止的条件设置。
  8. C语言中的指针和数组的运用方法,需要注意指针的正确使用和数组的边界条件等细节问题。

总之,应该注重基本方法、格式化输入输出函数、循环结构、数据类型转换函数、可变长度参数列表函数、字符数组和字符串处理函数、条件语句和循环语句、指针和数组等方面的知识和技能的培养,同时培养学生的独立思考和解决问题的能力,提高其编程思维和实践能力。

课程思政

注重课程的实用性和应用性:可以引入实际项目,让学生在学习过程中进行实践操作,提高其实践能力。同时,通过实践,学生可以更好地理解课程知识,树立爱国意识和主人翁意识,体会自身所担负的社会责任。

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程:

  1. 教师回顾上节课的编译器使用的知识,引入实验内容:介绍本次实验的目标和意义,激发学生的学习兴趣。
  2. 教师理论讲解:讲解实验所涉及的知识点和基本原理,结合教材和课件进行讲解。
  3. 教师示例演示:通过演示实例代码,展示实验内容的实际应用和效果。
  4. 学生操作:学生根据实验指导书或实验指导PPT,进行实验操作。分别完成第1关温度转换,第2关分数序列求和,第3关计算平均成绩,第4关进制转换。
  5. 教师实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑。
  6. 学生进行实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。
  7. 教师进行实验评估:教师对学生实验报告和操作过程进行评估和批改,给予反馈和建议。

教学措施:

  1. 实验难度适中:根据学生的实际水平和课程进度,设计实验难度,在保证学习效果的同时,避免过于复杂或过于简单。
  2. 实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。
  3. 实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。
  4. 实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学设计,可以有效地帮助学生在实践中掌握C语言程序设计的基础知识和技能,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

课堂互动设计:

  1. 小组讨论:将学生分成小组,让他们共同讨论问题,解决问题。这样可以鼓励学生互相合作,相互学习,共同进步。
  2. 实时反馈:在学生回答问题或提交作业后,及时给予反馈。对于正确回答或优秀作业,给予肯定和表扬,对于错误或不足之处,给予指导和建议。这样可以让学生感受到教师的关注和认可,同时及时纠正错误,加深印象。
  3. 课堂辩论:对于一些具有争议性的问题,可以组织课堂辩论。让学生分别代表不同的观点,进行辩论和交流。这样可以培养学生的思维能力和表达能力,同时加深他们对问题的理解和掌握。

作业与

思考题设置

题目1:从键盘输入1个字符,要求大写变小写,小写变大写。此题有多种实现方法,请尝试多种解法。

测试数据1

输入A 输出a

测试数据2

输入x 输出X

 

学习效果、学生反馈、反思改进措施等

这个章节历届学习效果较好,帮助学生快速掌握程序设计基本概念。不过每次总有部分同学习惯高中思维,不能主动学习,需要进一步加强他们的自主学习能力。

备注

 

 

 


分课时教案3

知识单元名称

数据类型与表达式

课次

3

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 熟练掌握并熟悉C语言程序设计的基本数据类型,包括整型、实型、字符型等,了解其定义、表示、范围等基本知识。
  2. 理解数据类型的概念和类别,包括基本数据类型和复合数据类型,了解结构体、联合体等内容。熟悉C语言中的基本数据类型及其特点,包括整型、浮点型、字符型、布尔型等,掌握其定义方法、范围、内存占用、符号位等重要特征。
  3. 掌握变量的定义和初始化方法,了解变量的存储方式和内存分配,理解变量的作用域和生命周期。掌握数据类型的转换及其作用,包括强制类型转换和隐式类型转换,了解类型转换的原则和规则。
  4. 掌握各种类型的变量、常量、运算符、表达式等数据处理的常见方法及其应用,包括算术运算、关系运算、逻辑运算等。
  5. 能够正确地选择适合的数据类型来表示和解决实际问题,理解数据类型在程序设计中的重要性。
  6. 通过实验和课程设计等方式,培养学生的实践能力和创新意识,使其能够基于所学的数据类型知识,设计实现简单的数据处理程序。

在教学过程中,除了理论知识讲解之外,还应当关注学生的实践能力培养,通过案例分析、编程实践等方式,使学生能够深入理解并掌握C语言的数据类型及其应用方法。同时,对于难点和重点问题,需要进行反复的强化训练,以达到熟练程度。

本单元重点

与难点内容

重点:

  1. 掌握C语言的基本数据类型,包括整型、浮点型、字符型等。
  2. 熟悉各种基本数据类型的表示和输入输出方法,包括%d%f%c等格式说明符的使用。
  3. 理解不同数据类型之间的混合运算和数据类型的转换规则。

难点:

  1. 理解数据类型的概念和作用,以及数据类型的选择和应用。
  2. 掌握各种基本数据类型的不同表示方法,包括十六进制、八进制、二进制等。
  3. 熟悉不同数据类型之间的混合运算和数据类型的转换规则,包括隐式转换和显式转换等。
  4. 能够正确地运用各种格式说明符和类型转换函数进行数据的输入输出和类型转换。

课程思政

 

  1. 强化基础概念的理解:数据类型是计算机语言中的重要概念,它定义了数据的存储方式和可操作的范围。通过学习数据类型,学生可以更深入地理解数据的本质和使用方式,为后续的程序设计和开发打下坚实的基础。同时,可以引入社会主义核心价值观,培养学生的严谨思维和扎实的专业基础知识。
  2. 提升计算思维能力:数据类型与表达式是培养计算思维的重要环节。计算思维是一种重要的思维方式,能够帮助学生在信息时代中更好地解决问题。通过数据类型的学习,学生可以锻炼自己的计算思维,从而更好地理解和解决问题。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

  1. 教师讲述实验要求和实验目的
  2. 教师回顾C语言的数据类型和表达式的理论基础知识
  3. 教师依次讲解实验题目的要求
  4. 学生进行实验,分别完成:第5关千分位分隔符,第6关歌手评分系统,第7关输入三个正实数,如果能构成三角形,编程求三角形的面积,第8关等差数列末项计算。
  5. 教师进行实验指导
  6. 实验结束,教师挑选学生讲解实验成果,讨论将数学公式应用于编码设计的方法。
  7. 教师总结实验情况

教学措施:

  1. 让学生通过编写和调试程序来理解和掌握不同数据类型的定义和用法。
  2. 结合歌手评分三角形的构成等实际案例,让学生了解不同数据类型的应用场景和注意事项,加深对数据类型的理解。
  3. 强调数据类型的关键概念,如变量的命名规则、变量的存储方式、数据类型的分类等。
  4. 通过互动式教学方式,如课堂讨论、小组合作等,让学生积极参与课堂,提高学习效果。
  5. 提供丰富的练习题和作业,让学生巩固所学知识,提高编程能力和问题解决能力。
  6. 通过以上教学措施,可以帮助学生更好地掌握C语言的数据类型,为后续的学习打下坚实的基础。

作业与

思考题设置

题目1:有两个变量ab,在执行以下代码后,输出分别为32768-32768,请问a b的数据类型分别是什么?请说明原因。

a=32768;

b=a;

printf(%d %d\n,a,b);

题目2:定义两个整数类型变量,分别赋值为3,7,并在屏幕上输出这两个变量。

题目3

下列程序的输出结果。请说明原因。

int a=65;

char b='c';

printf("%d %d\n",a,b);

printf("%c %c\n",a,b);

printf("%d %d\n",0,'0');

学习效果、学生反馈、反思改进措施等

这个章节一般学习效果较好,帮助学生用研讨和探索的方法回避输入输出中容易遇到的问题,快速掌握输入输出基本概念。部分同学依然习惯高中思维,不能主动学习,需要督促研讨小组长组织研讨,加强他们的自主学习能力。

备注

 

 


分课时教案4

知识单元名称

数据类型与表达式

课次

4

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

课程目标与要求包括以下几个方面:

  1. 掌握各种运算符的优先级和结合性,能够正确使用算术运算符、关系运算符、逻辑运算符、位运算符等。掌握表达式的概念及其特点,能够正确使用算术表达式、布尔表达式、条件表达式等,掌握自增和自减运算符的使用方法。
  2. 了解表达式的求值规则和方法,掌握表达式的计算和输出方法,能够根据实际需求编写表达式。掌握各种类型的数据在表达式中的使用方法,包括整型、浮点型、字符型、布尔型等,了解数据类型的转换规则。
  3. 通过编写程序和实验操作,掌握表达式的实际应用和操作方法,提高编程能力和问题解决能力。了解表达式的优化和注意事项,如避免重复计算、减少运算次数等,提高表达式的效率。
  4. 通过实验操作和问题解决,培养学生的实践能力和创新精神,加深对C语言数据类型的理解和掌握。

通过实验教学,可以帮助学生更好地掌握C语言的数据类型,为后续的学习打下坚实的基础。

本单元重点

与难点内容

重点:

  1. 掌握C语言的基本运算符和表达式,包括算术运算符、关系运算符、逻辑运算符等。
  2. 理解表达式的概念和作用,以及表达式的结果和类型。
  3. 掌握各种表达式之间的混合运算和优先级规则,例如算术四则混合运算表达式的求值等。

难点:

  1. 理解表达式的概念和作用,以及表达式的结果和类型。
  2. 掌握各种运算符和表达式的优先级规则和使用方法,例如算术四则混合运算表达式的求值等。
  3. 能够正确地运用各种运算符和表达式进行数据的计算和类型转换。
  4. 能够正确地运用C语言的函数和语句进行程序设计和实现,例如自定义函数、条件语句、循环语句等。

课程思政

 

  1. 增强团队合作精神:在数据类型与表达式的学习中,需要经常进行小组讨论和团队协作,这可以培养学生的团队合作精神和沟通能力。通过小组讨论,学生可以互相学习、互相帮助,提高学习效果。
  2. 培养创新意识:数据类型与表达式的学习不仅需要掌握基础概念,更需要培养学生的创新意识。通过引入创新案例、创新思想和创新方法,可以引导学生积极思考、主动探索,培养学生的创新意识和创新能力。
  3. 强化信息安全意识:在数据类型与表达式的学习中,可以引入信息安全的相关知识,例如数据的加密和解密、数据的完整性等。通过学习这些知识,可以增强学生的信息安全意识,提高其信息安全的防范能力。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、教师导入实验题目:教师通过提问和讲解的方式,以BMI的计算为例引导学生了解实验的目的和要求,激发学生的学习兴趣和积极性。

2、回顾理论知识点:教师通过讲解或演示的方式,帮助学生回顾和掌握与实验相关的知识点,每个关卡开始前都进行理论知识的回顾:如数据类型的定义与赋值表达式的组成与分类运算符的优先级与结合性等。

3、教师指导学生编写程序:学生根据实验要求,自行编写程序并调试运行,以实现实验任务。教师可以在学生编写程序的过程中进行巡视和指导,及时发现和解决问题。

4、教师进行问题解答,学生进行讨论:在实验过程中或实验结束后,教师组织学生进行讨论和交流,让学生分享自己的经验和问题,通过互相解答和教师的指导,共同解决问题并提高编程能力。

5、教师进行总结评价:教师对学生的实验结果和操作过程进行评价和总结,指出问题和不足之处,提出改进意见和建议。同时也可以通过练习题或扩展知识,帮助学生巩固和提高自己的编程能力和问题解决能力。

6、学生进行课后巩固提高:给出不同数据类型进行转换的课外阅读资料,学生通过练习题或扩展知识,进一步巩固和提高自己的编程能力和问题解决能力。教师可以在课后布置相应的练习题或思考题,让学生自主探究和学习。

教学方法和手段:

  1. 通过实例引入表达式概念,包括算术表达式、关系表达式、逻辑表达式等,让学生理解表达式的本质和作用。
  2. 重点讲解C语言中运算符的优先级和结合性,通过实例让学生掌握运算符的运用。
  3. 演示如何利用C语言实现表达式求值过程,包括算术四则混合运算表达式的求值等,通过实验验证运算符优先级和结合性的运用。
  4. 通过具体程序实例,让学生理解和掌握C语言表达式的应用方法,包括表达式求值、类型转换等。
  5. 结合实验题目,让学生自己编写程序实现表达式的求值,并对其结果进行验证和调试。
  6. 介绍常见的错误和异常情况,让学生理解其产生原因和处理方法,提高学生的编程能力和调试技巧。
  7. 通过课程设计等方式,让学生自主设计实现一个简单的计算器程序,实现对表达式的求解和应用。

在实验过程中,可以借助一些辅助软件,如编译器和调试器等,帮助学生理解实验内容和调试程序。同时,需要注意培养学生的逻辑思维能力和创新意识,以提高学生解决问题的能力。

作业与

思考题设置

1. 设计一个程序,定义6个变量,分别2个整型变量,2个单精度型变量,2个双精度型变量,然后从键盘依次输入这6个变量的值,完成同类型变量的相加,并输出相加的结果。

2. 输入2个数,完成这两个数相除,如a = 4,b = 5,相除后要求得到0.8,这2个数应该定义为什么数据类型呢?

3.给定3个整数abc计算表达式(a+b)*c的值。

4. 对于多项式f(x) = ax3 + bx2 + cx + d 和给定的a, b, c, d, x,计算f(x)的值。

学习效果、学生反馈、反思改进措施等

这个章节一般学习效果较好,大写变小写题有很多中实现方法,部分同学掌握了一种方法就不想思考了,这里要引导学生用多种方法解决单一问题的习惯,培养学生发散性思维。对于不能主动学习的同学,教师要督促研讨小组长组织研讨,加强他们的发散学习能力。

备注

 

 


分课时教案5

知识单元名称

程序的基本控制结构

课次

5

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 掌握if语句和switch语句的语法、使用方法和应用场景。
  2. 理解if语句和switch语句的执行流程和逻辑。
  3. 能够根据实际问题的需求,运用if语句和switch语句实现程序的控制流程。
  4. 掌握if语句嵌套和switch语句嵌套的使用方法。
  5. 理解if语句和switch语句中各个层次的执行流程和使用方法。
  6. 掌握if语句和switch语句中条件表达式和表达式语句的运用方法。
  7. 掌握if语句和switch语句中条件表达式和表达式语句的常见错误和异常情况的处理方法。
  8. 能够运用所学知识进行程序设计和调试,实现程序的正确性和健壮性。
  9. 能够根据实际应用的需求,运用if语句和switch语句实现程序的优化和改进。

总之,C语言的选择结构的实验教学应该注重语法、使用方法、应用场景、执行流程、嵌套使用、错误处理等方面的知识和技能的培养,同时培养学生的独立思考和解决问题的能力,提高其编程思维和实践能力。

本单元重点

与难点内容

重点:

  1. if语句和switch语句的语法和执行流程:if语句和switch语句是C语言中常用的选择结构,需要熟练掌握其语法和执行流程,包括条件表达式和表达式语句的使用方法。
  2. if语句和switch语句的嵌套使用:if语句和switch语句都可以嵌套使用,以实现更为复杂的程序逻辑,需要注意if语句和switch语句嵌套的层次和匹配原则。
  3. if语句和switch语句的条件表达式和表达式语句的运用方法:条件表达式和表达式语句是if语句和switch语句的重要组成部分,需要根据实际问题的需求,正确使用条件表达式和表达式语句来实现程序的逻辑。

难点:

  1. if语句和switch语句的嵌套使用中,嵌套层次的判定和使用方法可能比较复杂,需要注意if语句和switch语句的执行流程和逻辑,以及条件表达式的值和表达式语句的作用。
  2. 条件表达式的值只有0和非0两种情况,但条件表达式的计算顺序可能不同,需要注意条件表达式的计算方法和计算顺序。
  3. switch语句中的case语句的匹配原则可能比较复杂,需要注意case语句的匹配方法和匹配顺序,以及break语句的作用和使用方法。
  4. if语句和switch语句中条件表达式和表达式语句的常见错误和异常情况的处理方法可能比较复杂,需要注意错误提示和异常情况的处理方法。

总之,C语言的选择结构是程序设计中比较重要的一部分,需要熟练掌握其语法、使用方法、应用场景、执行流程、嵌套使用、错误处理等方面的知识和技能,同时需要培养独立思考和解决问题的能力,以提高编程思维和实践能力。

课程思政

 

  1. 强化程序控制结构的重要性:程序控制结构是计算机程序设计的核心,它决定了程序执行的流程和顺序。通过学习程序的基本控制结构,学生可以更好地理解程序设计和算法的实现,为后续的学习和实践打下坚实的基础。
  2. 培养逻辑思维和问题解决能力:程序的基本控制结构包括顺序、选择和循环结构,这些结构可以组合和嵌套,形成复杂的程序。通过学习和实践,学生可以锻炼自己的逻辑思维和问题解决能力,从而更好地理解和应用程序控制结构。
  3. 提升编程兴趣和职业素养:通过学习和实践程序的基本控制结构,学生可以感受到编程的魅力和应用价值,从而提升对编程的兴趣和职业素养。同时,通过引入实际项目和案例,学生可以更好地理解程序控制结构的应用,从而更好地掌握编程技能。

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、教师导入实验题目:教师通过提问和讲解的方式,回顾程序设计的三种结构的理论知识,引导学生了解实验的题目和要求,激发学生的学习兴趣和积极性。

2、教师讲解实验原理和知识点:教师通过讲解和演示交换数值运费计算两个例子,给出算法分析和流程图,帮助学生回顾和掌握程序的基本控制结构、运算符、语句和表达式等知识点。

3、学生进行实验操作:学生根据实验要求,自行编写程序、调试和运行程序,以实现实验任务。在实践平台上分别完成交换两个数的值水仙花数学生成绩等级换算三个整数进行排序运输公司对用户计算运费5个实验习题,教师可以在学生操作过程中进行巡视和指导,及时发现和解决问题。

4、教师进行问题解答和讨论:在实验过程中或实验结束后,教师组织学生进行讨论和交流,让学生分享自己的经验和问题,通过互相解答和教师的指导,共同解决问题并提高编程能力。

5、教师总结评价:教师对学生的实验过程和结果进行评价和总结,指出问题和不足之处,提出改进意见和建议。同时也可以通过练习题或扩展知识,帮助学生巩固和提高自己的编程能力和问题解决能力。

6、巩固提高:学生通过练习题或扩展知识,进一步巩固和提高自己的编程能力和问题解决能力。教师在课后布置相应的练习题或思考题,让学生自主探究和学习。

通过以上实验教学过程,可以让学生更好地掌握程序的基本控制结构,加深对程序的理解和掌握。同时也可以促进教师和学生之间的交流和互动,提高教学效果。

教学方法和手段:

在教学手段方面,可以结合板书、PPT、编程环境和实物展示等多种方式,帮助学生更好地理解和掌握程序的基本控制结构。同时,还可以使用一些教学辅助工具,如投影仪、教学软件等,提高教学效果。

在实验方面,可以采用分组实验或者个人实验的方式,让学生自主探究和操作。同时,教师也可以进行巡视和指导,及时发现和解决问题。通过实验,可以让学生更好地理解和应用程序的基本控制结构,提高他们的编程能力和问题解决能力。

作业与

思考题设置

题目14个圆塔,圆心分别为(22)、(- 22)、(- 2- 2)、(2- 2单位m,圆半径为 1m ,这4个圆塔高度10m, 塔以外无建筑物。今输入任一点的坐标,求该点的建筑物高度(塔外的高度为零)。

4.12.PNG

题目2输入1个成绩,判断是否大于等于60分,是输出pass,否则输出NO,编程完成上述功能。

学习效果、学生反馈、反思改进措施等

因为内容较简单,这个章节学生一般都掌握得比较好,均能跟上进度。

后续要继续督促学生提前学习,尽早进入较难的循环编程环节。

备注

 

 

 


课时教案6

知识单元名称

程序的基本控制结构

课次

6

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 掌握C语言中常用的循环结构及其语法和运用方法。具体来说,需要熟练掌握whiledo-whilefor语句实现循环的方法,以及这些语句的适用场合和注意事项。
  2. 能够使用循环结构解决实际问题,如算出指定数列的和、乘积、平均值等常见统计量,或者实现对数据的遍历和筛选等常见任务。因此,学生需要理解并掌握循环结构与条件结构的区别及应用场景,并能灵活应用循环结构于各种实际场景中。
  3. 熟练使用breakcontinue语句控制循环结构的执行流程。对于实验过程中可能出现的各种情况,学生需要能够使用breakcontinue语句进行正确的流程控制,以确保程序的正确性和健壮性。
  4. 在程序设计中注重代码的逻辑性和可读性,写出简洁、清晰明了、易于维护的代码。这是编程工作的重要素质之一,也是学生需要培养的重要能力。
  5. 通过本次实验,培养学生的独立思考能力和解决问题的能力。同时,通过小组讨论、协作完成实验任务等方式,培养学生的团队协作精神。

实验过程中,教师需要对每一个实验题目进行详细讲解,并在实验过程中及时解答学生的问题,以保证实验的顺利进行。同时,教师还需要注重培养学生的实践能力和创新意识,鼓励学生尝试不同的方法解决问题,并对学生提出的问题进行深入讨论,以促进学生对所学知识的深入理解和掌握。

本单元重点

与难点内容

重点:

  1. if语句的基本语法和执行流程;
  2. if语句嵌套的层次判定和使用方法;
  3. switch语句的语法和执行流程;
  4. switch语句中case语句的匹配原则和break语句的作用。

难点:

  1. if语句嵌套的层次判定的理解;
  2. switch语句中case语句的匹配原则的理解;
  3. break语句在if语句和switch语句中的使用方法和作用的理解;
  4. 如何在实验中运用所学知识进行程序设计和调试,实现程序的正确性和健壮性。

在实验过程中,需要结合具体的案例和题目,通过编写程序、调试运行、讨论辨析等方式,重点掌握if语句和switch语句的语法、使用方法和应用场景,理解嵌套的if语句和switch语句中各个层次的执行流程和使用方法,同时注意观察和分析程序运行中的异常情况和错误提示,提高学生的编程能力和解决问题的能力。

课程思政

 

  1. 培养严谨的编程态度和方法:程序的基本控制结构需要精确的控制和逻辑,这需要学生具备严谨的编程态度和方法。通过学习和实践,学生可以培养自己的编程规范和习惯,从而更好地应对实际项目中的各种问题和挑战。
  2. 增强创新意识和团队协作精神:程序的基本控制结构是计算机程序设计的基础,但也是创新的重要源泉。通过学习和实践,学生可以增强自己的创新意识,探索新的算法和应用。同时,也需要培养学生的团队协作精神,共同完成复杂的项目和任务。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

  1. 教师导入实验题目:教师通过提问或讲解的方式,引导学生了解实验的目的和要求,激发学生的学习兴趣和积极性。分别介绍实验习题的算法和编码中要注意的问题,重点讲解算法较难的计算两个正整数的最大公约数”“杨辉三角形两个问题。要求学生自处完成立体几何计算题求解出n以内所有能被5整除的正整数的乘积两个实验习题。
  2. 教师进行实验讲解:教师通过讲解或演示的方式,帮助学生回顾和掌握循环控制结构的基本概念和用法,包括循环的终止条件、循环体内的语句结构、循环的嵌套等。
  3. 学生编写程序:学生根据实验要求,自行编写程序并调试运行,以实现实验任务。教师可以在学生编写程序的过程中进行巡视和指导,及时发现和解决问题。
  4. 教师进行问题解答和学生进行讨论:在实验过程中或实验结束后,教师组织学生进行讨论和交流,让学生分享自己的经验和问题,通过互相解答和教师的指导,共同解决问题并提高编程能力。
  5. 教师进行总结评价:教师对学生的实验结果和操作过程进行评价和总结,指出问题和不足之处,提出改进意见和建议。同时也可以通过练习题或扩展知识,帮助学生巩固和提高自己的编程能力和问题解决能力。
  6. 学生课后巩固提高:学生通过练习题或扩展知识,进一步巩固和提高自己的编程能力和问题解决能力。教师可以在课后布置相应的练习题或思考题,让学生自主探究和学习。

通过以上实验教学设计,可以让学生在实验中更好地掌握循环控制结构的基本概念和用法,加深对循环控制结构的理解和掌握。同时也可以促进教师和学生之间的交流和互动,提高教学效果。

作业与

思考题设置

题目1:编程完成1 + 2 + 3 + ... + 100的计算,并输出结果。

题目2有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。

题目3日本著名数学游戏专家中村义作教授提出这样一个问题:父亲将2520个桔子分给六个儿子。分完后,父亲说:老大将分给你的桔子了1/8给老二;老二拿到后,连同原先的桔子分1/7给老三;老三拿到后,连同原先的桔子分1/6给老四;老四拿到后,连同原先的桔子分1/5给老五;老五拿到后,连同原先的桔子分1/4给老六;老六拿到后,连同原先的桔子分1/3给老大。结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔子。

学习效果、学生反馈、反思改进措施等

因为内容较简单,这个章节学生一般都能较好的完成刷题任务,大多能跟上进度。

部分同学比较粗心,编程进度较慢,要指点学生尽早掌握学习方法,多刷题。

备注

 

 

 

 


分课时教案7

知识单元名称

数组(一维)

课次

7

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

C语言一维数组的实验课程教学目标与要求主要包括以下几个方面:

  1. 掌握一维数组的定义和引用方法,理解数组的下标范围和引用方式。
  2. 掌握一维数组的初始化方法,包括静态初始化和动态初始化。
  3. 掌握与一维数组相关的应用编程方法,包括数组的输入输出、排序、查找等操作。
  4. 提高编程能力和解决问题的能力,能够编写简单的程序来处理一维数组,并能够解决实际问题。

通过实验课程的学习和实际操作,学生应该能够掌握C语言一维数组的基本概念和方法,理解一维数组的应用场景和操作方式,提高编程能力和解决问题的能力。同时,教师也应该根据学生的实际情况进行针对性的指导,帮助他们更好地掌握C语言一维数组的相关知识和技能。

本单元重点

与难点内容

重点:

  1. 一维数组的定义和引用。学生需要了解如何声明和定义一维数组,如何使用数组名来引用数组元素。
  2. 一维数组的初始化方法。学生需要了解如何对一维数组进行初始化,包括在定义时赋值和在程序运行过程中赋值的方法。

难点:

  1. 与一维数组有关的应用编程方法。学生需要掌握如何使用一维数组解决实际问题,例如排序、查找、统计等。
  2. 数组名实质是数组所在内存中第一个元素地址的别称。学生需要理解数组名是指针的概念,它指向数组首元素的地址。
  3. 不能用变量定义数组维数。学生需要了解数组的维度是在定义时确定的,不能在程序运行过程中改变。

 

课程思政

 

  1. 强化数组基本概念的理解:数组是一种特殊的数据结构,用于存储相同类型的数据序列。通过学习数组的基本概念和操作,学生可以更深入地理解数据的组织和存储,为后续的程序设计和开发打下坚实的基础。
  2. 培养逻辑思维和问题解决能力:在数组学习中,学生需要掌握各种操作,例如插入、删除、查找等。这些操作需要逻辑思维和问题解决能力。通过学习和实践,学生可以锻炼自己的逻辑思维和问题解决能力,从而更好地理解和应用数组。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

实验教学流程:

1、教师引入实验内容:介绍一维数组的概念和用途,说明学习一维数组的重要性和实际应用场景。

2、教师进行理论讲解:讲解一维数组的定义、初始化、访问、遍历和操作等基本知识点。解释数组下标的概念和取值范围。

3、教师进行示例演示:通过实例代码演示一维数组的使用,例如创建一个存储学生成绩的数组,计算平均成绩等。

4、学生进行实验操作:

学生根据实验指导书或实验指导PPT,完成一维数组的基本操作和应用。

学生创建一个整型数组,并初始化数组元素。

学生编写代码,实现对数组的遍历、求和、最大值、最小值等操作。

学生通过输入、输出实现对数组的动态操作。

5、学生进行实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、教师进行实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述一维数组在实际问题中的应用和意义。

7、教师实验评估:教师对学生实验报告和操作过程进行评估和批改,给予反馈和建议。

教学方法和手段:

  1. 实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。
  2. 实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。
  3. 实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。
  4. 教师可以采用举例法、引导法等多种教学方法,通过提出实际问题,引导学生思考如何使用一维数组解决该问题,并逐步展示代码实现过程,使学生逐步掌握相关知识和技能。

教具准备:

教师需要准备黑板、计算机、投影仪等教具,以便在课堂内外进行演示和讲解,同时也可以准备一些实际案例的代码实现,供学生参考和学习。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言一维数组的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

 

作业与

思考题设置

题目1:写一个程序打印一个整形一维数组

题目2: 将[2,100]之间所有的素数放入到一个一维数组中,并输出这些素数。

题目3:猜数字游戏

题目描述:

首先由计算机产生一个随机数,并给出这个随机数所在的区间,然后由游戏者来猜测这个数,如果游戏者猜中这个数,则显示成功并结束游戏;如果猜测次数超过8次,则显示猜测失败并结束游戏。要求在猜测过程中给出必要的提示信息。

程序运行结果范例:

随机数secret8

请输入一个1~ 100之间的整数:20

大了,请重新猜!

请输入一个1~ 19之间的整数:7

小了,请重新猜!

请输入一个1~ 8之间的整数:8

恭喜,猜对了!共猜测3次!

 

随机数secret33

请输入一1~ 100之间的整数:5

小了,请重新猜!

请输入一个6~ 100之间的整数:80

大了,请重新猜!

请输入一个6~79之间的整数:20

小了,请重新猜!

请输入一个21~ 79之间的整数:60

大了,请重新猜!

请输入一个21~ 59之间的整数:50

大了,请重新猜!

请输入一个21~ 49之间的整数:30

小了,请重新猜!

请输入一个31~ 49之间的整数:40

大了,请重新猜!

请输入一个31~39之间的整数:34

大了,请重新猜!

超过次数,游戏结束!

提示:

首先由计算机产生一个随机数secret,然后调用函数Guess实现猜数游戏,在每次猜数之前,都给出区间提示。

讨论问题1:分析猜数字时可能出现哪几种情况?

设变量secret表示计算机给出的随机数,变量guess表示游戏者给出的数,guesssecret进行比较,有以下三种情况:

1guess大于secret,则显示大了,请重新猜!,游戏者重新给出一个数;

2guess小于secret,则显示小了,请重新猜!,游戏者重新给出一个数;

3guess等于secret,则显示恭喜,猜对了!

重复上述过程,直到游戏者猜中或超过规定次数。

讨论问题2: 猜测过程中给出的提示信息指的是什么?

讨论问题3: 猜测过程中随机数区间需要改变吗?

学习效果、学生反馈、反思改进措施等

从这个章节开始,学生开始感觉难度,部分同学不能很好的在数组的基础上建立循环思路,不知道如何将算术问题转换为程序员角度来思考问题,这里需要形象演示,归纳总结,帮助学生尽早建立循环编程的观念。

备注

 

 


分课时教案8

知识单元名称

数组(二维)

课次

8

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

二维数组的实验教学课程目标与要求主要包括以下几个方面:

  1. 掌握二维数组的定义和引用方法,理解二维数组的行列关系和访问方式。
  2. 掌握二维数组的初始化方法,包括静态初始化和动态初始化。静态初始化可以通过花括号的方式给数组元素赋值,动态初始化则是通过指针操作来给数组元素赋值。
  3. 掌握与二维数组相关的应用编程方法,包括数组的输入输出、矩阵运算等操作。
  4. 提高编程能力和解决问题的能力,能够编写简单的程序来处理二维数组,并能够解决实际问题。

通过实验课程的学习和实际操作,学生应该能够掌握C语言二维数组的基本概念和方法,理解二维数组的应用场景和操作方式,提高编程能力和解决问题的能力。同时,教师也应该根据学生的实际情况进行针对性的指导,帮助他们更好地掌握C语言二维数组的相关知识和技能。

本单元重点

与难点内容

重点:

  1. 二维数组的定义和引用。学生需要了解如何声明和定义二维数组,如何使用数组名和下标来引用二维数组的元素。
  2. 二维数组的初始化方法。学生需要了解如何对二维数组进行初始化,包括在定义时赋值和在程序运行过程中赋值的方法。

难点:

  1. 与二维数组有关的应用编程方法。学生需要掌握如何使用二维数组解决实际问题,例如矩阵运算、行列式计算、二维数据存储等
  2. 理解二维数组的内存分布。学生需要理解二维数组在内存中如何排列和存储,以便更好地理解和使用二维数组。
  3. 动态分配二维数组。学生需要了解如何使用内存分配函数来动态地分配二维数组的大小,以便在程序运行过程中改变数组的维度。

课程思政

 

  1. 提升编程兴趣和职业素养:通过学习和实践数组,学生可以感受到编程的魅力和应用价值,从而提升对编程的兴趣和职业素养。同时,通过引入实际项目和案例,学生可以更好地理解数组的应用,从而更好地掌握编程技能。
  2. 培养严谨的编程态度和方法:数组操作需要精确的控制和逻辑,这需要学生具备严谨的编程态度和方法。通过学习和实践,学生可以培养自己的编程规范和习惯,从而更好地应对实际项目中的各种问题和挑战。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、教师引入实验内容:介绍二维数组的概念和用途,说明学习二维数组的重要性和实际应用场景。

2、教师理论讲解:讲解二维数组的定义、初始化、访问和操作等基本知识点。解释二维数组的行和列的概念,以及二维数组在内存中的存储方式。

3、教师示例演示:通过实例代码演示二维数组的使用,示例1创建一个存储学生成绩的二维数组,示例2计算平均成绩

3、学生操作:

学生根据实验指导书或实验指导PPT,完成二维数组的基本操作和应用。

学生创建一个整型二维数组,并初始化数组元素。

学生编写代码,实现对二维数组的遍历、求和、最大值、最小值等操作。

学生通过输入、输出实现对二维数组的动态操作。

4、学生实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

5、教师实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述二维数组在实际问题中的应用和意义。

6、教师实验评估:教师对学生实验报告和操作过程进行评估和批改,给予反馈和建议。

教学方法和手段:

  1. 实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。
  2. 实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。
  3. 实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。
  4. 教师可以采用举例法、引导法等多种教学方法,通过提出实际问题,引导学生思考如何使用二维数组解决该问题,并逐步展示代码实现过程,使学生逐步掌握相关知识和技能。
  5. 针对难点,教师可以采用演示法、讨论法等方式,通过实际操作或具体案例的讲解,帮助学生更好地理解和掌握难点内容。

教具准备:

教师需要准备黑板、计算机、投影仪等教具,以便在课堂内外进行演示和讲解,同时也可以准备一些实际案例的代码实现,供学生参考和学习。

通过以上的教学设计,可以帮助学生深入理解和掌握C语言二维数组的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

题目1:求一个三行三列的二维数组的对角线之和。

题目2:二维数组求和

题目描述:

设置一个n*m的二维数组,使其最后一行元素值是其所对应列的元素和,最后一列元素值是其所对应行的元素和,而表中最后一个元素是除最后一行和一列外的所有元素的总和。

输入数据 nm,然后输入一个矩阵n-1行,m-1列;输出计算得出的矩阵

输入范例:

3 4

1 2 3

4 5 6

输出范例:

1 2 3 6

4 5 6 15

5 7 9 21

本题小组讨论主持人:

讨论问题1:二维数组的大小如何设置?

讨论问题2:完成本题需要遍历数组几次?

学习效果、学生反馈、反思改进措施等

从这个章节开始,部分同学在参与讨论时开始感觉跟不上进度,因为不能树立地将算术问题转换为循环结构,从而实现代码,这里要引导学生以程序员角度来思考问题,帮助学生尽早建立循环编程的观念。

备注

 


分课时教案9

知识单元名称

数组(字符串)

课次

9

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 理解字符串的基本概念和特点,包括字符串的表示、长度、结束标志等。
  2. 熟练掌握常用的字符串操作函数和字符串处理方法,如strcpystrlenstrcatstrcmp等。
  3. 理解字符串的内存分配方式以及字符串和字符数组的区别和联系。
  4. 通过实际应用案例,培养学生的编程思维和实际应用能力,使学生能够灵活运用字符串解决实际问题。
  5. 提高学生的程序调试和错误处理能力,使学生能够正确处理程序中的错误和异常。
  6. 通过团队合作和交流,培养学生的团队协作精神和沟通能力。

实验内容可以包括以下几个方面:

  1. 字符串的表示和输入输出,包括从键盘输入字符串,将字符串输出到屏幕等。
  2. 字符串的基本操作,如拼接、比较、排序、查找等。
  3. 字符串的函数应用,如求字符串长度、复制字符串、连接字符串等。
  4. 字符串的内存分配方式,如动态分配字符串内存等。
  5. 综合应用案例,如字符串加密、字符串转换等。

实验过程中需要注意以下几点:

  1. 学生必须独立完成实验内容,不能抄袭或剽窃他人代码。
  2. 学生需要按照实验指导书的要求,按时完成实验内容,不能迟到早退。
  3. 学生需要根据实验指导书的评分标准,对自己的程序进行评估和调整,以达到最佳效果。
  4. 学生需要认真听讲、积极思考、勤于实践,尽可能多地掌握字符串处理的常用方法和技巧。

通过以上实验教学课程目标与要求,学生可以更好地掌握C语言中字符串处理的相关知识,提高编程能力和解决问题的能力,为后续语言学习打下良好的基础。

本单元重点

与难点内容

重点:

  1. 掌握字符串的定义和存储方式,包括字符串常量、字符数组和指针等。
  2. 掌握字符串的输入输出方法,包括scanf()函数和gets()函数用于输入,printf()函数和puts()函数用于输出。
  3. 掌握字符串的基本操作,包括复制、比较、拼接和反转等,能够使用strcpy()函数、strcmp()函数等库函数进行操作。
  4. 掌握字符串数组的定义和使用方法,包括字符指针数组和二维字符数组等。
  5. 能够编写简单的程序来处理字符串和字符串数组,如输入输出、复制和比较等操作。

难点:

  1. 字符串的存储和表示方式,包括字符串常量和字符数组,需要理解字符串在内存中的存储方式和字符数组的引用方式。
  2. 字符串的输入输出,需要理解scanf()函数和gets()函数的使用方法,以及如何避免输入字符串时越界等问题。
  3. 字符串的操作,需要掌握各种字符串操作函数的用法,如strcpy()函数、strcmp()函数等,并能够灵活运用。
  4. 字符串数组的定义和使用方法,需要理解字符指针数组和二维字符数组的定义和使用方法,以及如何进行字符串数组的输入输出和操作。
  5. 实际应用中的问题,如字符串的查找、字符串数组的排序等,需要编写较为复杂的程序来解决这些问题。

因此,在实验教学中,需要注重实践操作,通过具体的实例和实践来帮助学生掌握C语言字符串和字符串数组的基本概念和方法,并提高他们的编程能力和解决问题的能力。同时,教师也需要进行针对性的指导和帮助,解决学生在实验过程中遇到的问题。

课程思政

 

  1. 增强创新意识和团队协作精神:数组是计算机程序设计的基础,但也是创新的重要源泉。通过学习和实践,学生可以增强自己的创新意识,探索新的算法和应用。同时,也需要培养学生的团队协作精神,共同完成复杂的项目和任务。
  2. 引导学生物以类聚、人以群分:在数组学习中,可以引导学生认识到物以类聚、人以群分的道理,即要与具有正能量的人交往。通过数组引用方法的教学,可以进一步引导学生要有团队精神,要有看齐意识。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、教师引入实验内容:介绍字符串的概念和用途,说明学习字符串的重要性和实际应用场景。

2、教师进行理论讲解:讲解字符串的定义、初始化、输入输出和常见操作等基本知识点。解释字符串在内存中的存储方式和结束符的作用。

3、教师进行示例演示:通过实例代码演示字符串的使用,示例1:创建一个存储学生姓名的字符串,示例2:实现字符串的拼接和比较

4、学生操作:

学生根据实验指导书或实验指导PPT,完成字符串的基本操作和应用。

学生创建一个字符串并初始化,理解字符串的字符数组特性。

学生编写代码,实现对字符串的操作,例如字符串的拷贝、连接、比较等。

学生通过输入、输出实现对字符串的动态操作。

5、学生进行实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、学生进行实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述字符串在实际问题中的应用和意义。

7、教师进行实验评估:教师对学生实验报告和操作过程进行评估和批改,给予反馈和建议。

在整个实验教学流程中,使用的教学方法及手段:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言字符串和字符串数组的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

 

作业与

思考题设置

题目1: 编程求出字符串中数字、字母分别有多少个。

题目2: 编程比较两个字符串的大小,然后把两个字符串连接,连接时,小的那个字符串放前面,大的字符串放后面,调用字符串函数实现。

题目3:给定一个字符串,将其中所有的小写字母转换成大写字母。

学习效果、学生反馈、反思改进措施等

学完这个章节后,可刷的OJ题大量增加,难度也开始加大。要引导学生多刷题,需要加强进度管理,检查个人及小组刷题进度,保证顺利度过编程较难关卡。

备注

 

 


分课时教案10

知识单元名称

顺序表(查找)

课次

10

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1.       掌握顺序表的基本概念和实现方法,理解顺序表的查找算法的时间复杂度。
  2.       掌握顺序查找算法,能够编写程序实现顺序查找操作。
  3.       掌握折半查找算法,能够编写程序实现折半查找操作。
  4.       能够通过分析数据量和查找概率等因素,选择合适的查找算法,提高查找效率。

通过本课程的学习和实际操作,学生应该能够熟练掌握顺序表的基本概念和方法,理解顺序表的应用场景和操作方式,掌握顺序查找和折半查找等查找算法的实现方法,并能够在实际情况中选择合适的查找算法来提高查找效率。同时,教师也应该根据学生的实际情况进行针对性的指导,帮助他们更好地掌握C语言顺序表的查找的相关知识和技能。

本单元重点

与难点内容

重点:

掌握顺序表的基本概念和实现方法,理解顺序表的查找算法的时间复杂度。

掌握顺序查找算法,能够编写程序实现顺序查找操作。

掌握折半查找算法,能够编写程序实现折半查找操作。

能够通过分析数据量和查找概率等因素,选择合适的查找算法,提高查找效率。

 

难点:

顺序表的结构和实现方法,需要理解顺序表的逻辑结构和存储结构,以及如何实现顺序表的插入、删除和查找等操作。

顺序查找算法的实现,需要编写程序实现从表头开始逐个比较的查找方式,并能够处理查找失败的情况。

折半查找算法的实现,需要理解二分查找的思想,并能够编写程序实现折半查找操作。

查找算法的选择,需要分析数据量和查找概率等因素,选择合适的查找算法来提高查找效率。

 

因此,在实验教学中,需要注重实践操作,通过具体的实例和实践来帮助学生掌握C语言顺序表的查找的基本概念和方法,并提高他们的编程能力和解决问题的能力。同时,教师也需要进行针对性的指导和帮助,解决学生在实验过程中遇到的问题。

课程思政

 

  1. 强化顺序表基本概念的理解:顺序表是一种线性数据结构,其元素之间的逻辑关系通过元素的顺序来表达。通过学习顺序表的基本概念和操作,学生可以更深入地理解数据结构的基本概念和原理,为后续的计算机程序设计打下坚实的基础。
  2. 培养逻辑思维和问题解决能力:在顺序表的学习中,学生需要掌握各种操作,例如插入、删除、查找等。这些操作需要逻辑思维和问题解决能力。通过学习和实践,学生可以锻炼自己的逻辑思维和问题解决能力,从而更好地理解和应用顺序表。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、教师引入实验内容:介绍顺序表的概念和用途,说明学习顺序表查找的重要性和实际应用场景。

2、教师理论讲解:讲解顺序表的定义和基本操作,包括插入、删除和查找等。特别强调顺序表查找的原理和方法。

3、教师进行示例演示:通过实例代码演示顺序表查找的过程,示例1创建一个存储学生信息的顺序表,示例2:实现按照学号查找学生信息

4、学生操作:

学生根据实验指导书或实验指导PPT,完成顺序表查找的基本操作。

学生创建一个顺序表,并初始化顺序表元素。

学生编写代码,实现按照某个关键字进行查找,并输出查找结果。

学生通过输入、输出实现对顺序表的动态操作,测试查找功能的正确性。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述顺序表查找在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和操作过程进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言顺序表的查找操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

题目1已知一个数组,求数组的长度 。

题目2编程找出数组中最小的数,并将最小的一个数与第一个数交换。

题目3在一个非降序列中,查找与给定值最接近的元素。

题目4将两个有序序列合并为一个有序序列。

题目5输入n行,每行不超过100个无符号整数,无符号数不超过4位。请输出最大整数以及最大整数所在的行号(行号从1开始)。如果该数据在多个行中出现,则按从小到大输出相应行号,行号之间以一个逗号分开。

学习效果、学生反馈、反思改进措施等

这章通过加强预习能督促学生以算法思想思考与数组相关的问题,是引入算法分析的第一步。重点要让学生思考查找算法的效率问题,要让学生认识到仅仅完成任务是不够的,还要设法高效的完成任务。经过这些算法的训练,前几届均具有较好的效果。

备注

 

 


分课时教案11

知识单元名称

顺序表(插入删除)

课次

11

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1.       掌握C语言中顺序表的表示和实现方法。
  2.       掌握顺序表的基本操作,包括初始化、插入、删除和查找等。
  3.       掌握C语言中数组和指针的使用方法,能够使用数组和指针来实现顺序表的操作。
  4.       提高学生的编程能力和解决问题的能力,能够编写简单的程序来实现顺序表的基本操作。

实验环境方面,需要在PC机上安装C语言编译器,如CodeBlocks等。实验内容方面,可以通过编写程序来实现顺序表的各种基本操作,并在此基础上设计一个主程序来完成特定的功能,例如初始化顺序表、插入元素、删除元素、查找元素等操作。

同时,实验课程中也需要进行实验指导和实验评估,教师需要对学生的实验过程和结果进行指导和评估,学生需要对实验过程进行反思和总结,巩固所学知识和技能。通过实验课程,学生可以更好地掌握C语言中顺序表的基本操作和实现方法,提高编程能力和解决问题的能力。

本单元重点

与难点内容

重点

掌握C语言中顺序表的表示和实现方法。

掌握顺序表的基本操作,包括初始化、插入、删除和查找等。

掌握C语言中数组和指针的使用方法,能够使用数组和指针来实现顺序表的操作。

难点:

顺序表的初始化,需要理解如何使用数组和指针来实现顺序表的初始化操作。

顺序表的插入和删除操作,需要理解如何使用数组和指针来实现顺序表的插入和删除操作,并保证顺序表的完整性。

顺序表的查找操作,需要理解如何使用数组和指针来实现顺序表的查找操作,并能够处理查找失败的情况。

顺序表的存储分配,需要理解如何根据需要动态分配顺序表的存储空间,并能够根据需求调整存储空间的大小。

因此,学生需要在学习过程中注重实践操作,通过编写程序来实现顺序表的基本操作,并理解顺序表的各种操作的实现原理和注意事项。同时,教师也需要进行针对性的指导和帮助,解决学生在实验过程中遇到的问题。

课程思政

 

  1. 提升编程兴趣和职业素养:通过学习和实践顺序表,学生可以感受到编程的魅力和应用价值,从而提升对编程的兴趣和职业素养。同时,通过引入实际项目和案例,学生可以更好地理解顺序表的应用,从而更好地掌握编程技能。
  2. 培养严谨的编程态度和方法:顺序表操作需要精确的控制和逻辑,这需要学生具备严谨的编程态度和方法。通过学习和实践,学生可以培养自己的编程规范和习惯,从而更好地应对实际项目中的各种问题和挑战。

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、引入实验内容:介绍顺序表的概念和基本操作,说明学习顺序表的重要性和实际应用场景。

2、理论讲解:讲解顺序表的定义和基本操作,包括插入、删除、查找、获取长度等。解释顺序表的存储结构和实现原理。

3、示例演示:通过实例代码演示顺序表的基本操作过程,示例1创建一个存储学生信息的顺序表,示例2实现学生信息的插入、删除

4、学生操作:

学生根据实验指导书或实验指导PPT,完成顺序表的基本操作。

学生创建一个顺序表,并初始化顺序表元素。

学生编写代码,实现顺序表的插入、删除、查找等操作,并输出操作结果。

学生通过输入、输出实现对顺序表的动态操作,测试操作功能的正确性。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述顺序表在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和操作过程进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师采用的教学方法和手段:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言顺序表的基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

题目1定义一个二维字符串数组,存储5个身份证号码,并输出。

题目2将一个字符串复制到另一个字符串中,并求它们的长度。

题目3将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I

输入描述:每个测试输入包含1个测试用例:  I like beijing. 输入用例长度不超过100

输出描述:依次输出倒置之后的字符串,以空格分割

题目4一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号,。从第1号开始报数,每轮从1报到m,凡报到m的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请输出退出的猴子的顺序,请问是原来第几号猴子当选猴王?

学习效果、学生反馈、反思改进措施等

这章通过加强预习能督促学生以算法思想思考与数组相关的问题,是引入算法分析的第一步。重点要让学生思考插入和删除算法效率问题,要让学生认识到仅仅完成任务是不够的,还要设法高效的完成任务,不仅如此,还要周全的考虑问题。经过这些算法的训练和讲解分析。前几届均具有较好的效果。

备注

 

 


分课时教案12

知识单元名称

顺序表(排序)

课次

12

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 掌握排序算法的基本原理和实现方法。
  2. 理解排序算法的时间复杂度,能够进行时间复杂度分析。
  3. 掌握常见的排序算法,如冒泡排序、选择排序、插入排序等,并能够实现这些算法。
  4. 通过实验操作,加深对排序算法的理解,提高编程能力和解决问题的能力。
  5.     实验环境方面,需要在PC机上安装C语言编译器,如CodeBlocks等。实验内容方面,可以通过编写程序来实现各种排序算法,并在此基础上设计一个主程序来完成特定的功能,例如对给定的数组进行排序等。

时,实验课程中也需要进行实验指导和实验评估,教师需要对学生的实验过程和结果进行指导和评估,学生需要对实验过程进行反思和总结,巩固所学知识和技能。通过实验课程,学生可以更好地掌握排序算法的基本原理和实现方法,提高编程能力和解决问题的能力。

本单元重点

与难点内容

重点:

排序算法的基本原理和实现方法。

排序算法的时间复杂度分析。

常见的排序算法,如冒泡排序、选择排序、插入排序等的实现。

难点:

理解排序算法的原理,尤其是复杂的排序算法,如快速排序、归并排序等。

掌握排序算法的实现技巧,如递归、循环等。

对复杂排序算法的时间复杂度分析,包括最好情况、最坏情况和平均情况下的时间复杂度。

在实验操作中调试程序,解决出现的问题。

因此,学生需要在实验过程中注重实践操作,通过编写程序来实现各种排序算法,并理解排序算法的实现原理和注意事项。同时,教师也需要进行针对性的指导和帮助,解决学生在实验过程中遇到的问题。

课程思政

 

增强创新意识和团队协作精神:顺序表是计算机程序设计的基础,但也是创新的重要源泉。通过学习和实践,学生可以增强自己的创新意识,探索新的算法和应用。同时,也需要培养学生的团队协作精神,共同完成复杂的项目和任务。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、教师引入实验内容:介绍顺序表的排序操作的重要性和实际应用场景,说明学习顺序表排序的必要性。

2、教师进行理论讲解:讲解顺序表的排序算法,例如冒泡排序、插入排序、选择排序等。解释排序算法的原理和步骤。

3、教师进行示例演示:通过实例代码演示顺序表排序的过程,示例1创建一个存储学生成绩的顺序表,示例2实现按照成绩进行排序

4、学生操作:

学生根据实验指导书或实验指导PPT,完成顺序表的排序操作。

学生创建一个顺序表,并初始化顺序表元素。

学生编写代码,实现顺序表的排序操作,并输出排序结果。

学生通过输入、输出实现对顺序表的动态操作,测试排序功能的正确性。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述顺序表排序在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和操作过程进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师采用如下的教学方法和手段:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学设计,可以帮助学生深入理解和掌握C语言顺序表的排序操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

实现冒泡排序和选择排序。

学习效果、学生反馈、反思改进措施等

本章重点要让学生思考两种排序的算法的不同应用场合,从而进一步理解经典算法。这里需要引导学生考虑编程效率问题,并设置实验对比另种算法的应用场景。经过这些训练和讲解分析。前几届均具有较好的效果。

备注

 

 


分课时教案13

知识单元名称

函数(一)

课次

13

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 掌握函数的概念、分类、定义和调用方法。
  2. 掌握函数的参数传递方式,包括按值传递和按指针传递。
  3. 掌握函数的返回值及其处理方法。
  4. 能够编写简单的函数,实现特定的功能。
  5. 能够通过调用函数来解决实际问题。
  6. 熟悉函数在程序中的组织和管理方式。

实验环境方面,需要在计算机上安装C语言编译器,如CodeBlocksVC++6.0等。实验内容方面,选择一些常见的函数进行编写和测试,例如求两个整数的最大公约数、求一个数组的最大值和最小值等。

同时,在实验过程中,需要注重实践操作,掌握函数的编写和调试方法,理解函数在程序中的作用和地位,提高编程能力和解决问题的能力。

本单元重点

与难点内容

重点:

  1. 函数的概念、分类、定义和调用方法。
  2. 函数的参数传递方式,包括按值传递和按指针传递。
  3. 函数的返回值及其处理方法。
  4. 能够编写简单的函数,实现特定的功能。
  5. 能够通过调用函数来解决实际问题。

难点:

  1. 函数定义和调用的规则和规范,以及参数的传递和处理方式。
  2. 函数返回值的处理和判断方法,以及返回值的类型和值的获取方式。
  3. 函数的组织和管理方式,以及函数在程序中的作用和地位。
  4. 函数的调试和测试方法,以及如何解决函数调用时可能出现的错误和问题。

课程思政

 

函数的定义与对应法则:函数的定义告诉我们,在一定的定义域内找到一点,这一点在一定法则下会变成值域内的一点或一个集合。这个过程类似于探讨问题的范围、探讨问题的方法、探讨问题的结果,或者说讨论问题的方法与结果依赖于该问题所圈定的范围。因此,我们可以从中引申出界定讨论范围的思政元素,告诫学生在探讨问题时一定要明确探讨的范围,不能想当然或者一概而论。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、教师引入实验内容:介绍函数的概念和作用,说明学习函数的重要性和实际应用场景。

2、理论讲解:讲解函数的定义、声明、调用和返回值等基本知识点。解释函数的参数传递方式和函数的封装性。

3、示例演示:通过实例代码演示函数的使用,示例1创建一个函数来计算两个数的和并返回结果,示例2创建一个函数判断是否是偶数

4、学生操作:

学生根据实验指导书或实验指导PPT,完成函数的基本操作和应用。

学生创建一个带有参数和返回值的函数,并在主函数中调用该函数进行测试。

学生编写代码,实现函数的功能,例如计算阶乘、求最大公约数等。

学生通过输入、输出实现对函数的动态操作。

4、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

5、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述函数在实际问题中的应用和意义。

6、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教学方法和教学手段:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言函数的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

 

作业与

思考题设置

题目1——自定义函数和函数的声明

题目描述:

设计一个程序计算f (x) = x2 + 2x + 1,采用函数声明方式。

提示:

掌握C程序的典型结构:

如果在所有函数之前声明函数原型,则该函数原型的作用域是整个程序,即在程序的任何位置都可以调用这个函数;如果在某个函数内部声明函数原型,则该函数原型的作用域只在这个函数内部。

讨论内容:

(1)如何自定义函数f(x)

(2)这个程序采用函数声明方式实现,函数在什么位置进行声明?

(3)可不可以不采用函数声明方式实现程序?

题目2——字符串匹配

题目描述:

    给定一个主串s和一个模式(也称为子串)t,在主串s中寻找模式t的过程称为字符串匹配,也称为模式匹配。如果匹配成功,则返回模式t中第一个字符在主串s中的序号。

学习效果、学生反馈、反思改进措施等

这章内容设计做了案例改革,引导学生不仅仅是学习函数知识本身,还要初步进入复杂系统的分析和设计理念,采用自顶向下的规划和引导,能让学生意识到原来复杂问题都是这样解决的呀!本周学习效果普遍较好,后续应尽量多采用这种案例规划法引导学生。

备注

 


分课时教案14

知识单元名称

函数(二)

课次

14

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 理解模块化程序设计的概念和原理,了解模块化程序设计的基本原则和方法。
  2. 熟悉C语言的基本语法和程序结构,掌握C语言编程的基本技巧和方法。
  3. 能够编写简单的模块化程序,掌握模块化程序的基本组成和结构,理解模块之间的接口和调用关系。
  4. 能够通过编写模块化程序来解决实际问题,提高编程能力和解决问题的能力。
  5. 掌握模块化程序设计的调试和测试方法,能够通过调试和测试来保证程序的正确性和稳定性。
  6. 了解模块化程序设计的实际应用和发展趋势,能够通过模块化程序设计来解决实际问题,提高应用能力。

在实验课程中,应该注重实践操作,通过编写具体的模块化程序来掌握模块化程序设计的基本原理和方法。同时,教师也应该进行针对性的指导和帮助,解决学生在实验过程中遇到的问题。最后,应该通过实验结果的评估和总结,以达到实验课程的教学目标。

本单元重点

与难点内容

重点:

  1. 掌握模块化程序设计的结构和方法,理解模块之间的接口和调用关系。
  2. 掌握C语言的基本语法和程序结构,熟悉C语言编程的基本技巧和方法。
  3. 能够编写简单的模块化程序,通过编写模块化程序来解决实际问题。
  4. 掌握模块化程序设计的调试和测试方法,能够通过调试和测试来保证程序的正确性和稳定性。

难点:

  1. 模块化程序的设计需要掌握其模块化设计的结构,如何合理地划分模块,如何定义模块之间的接口,如何实现模块之间的调用等都是比较难以掌握的。
  2. 模块化程序的调试和测试也是一项比较困难的任务,需要掌握调试和测试的方法和技巧,能够有效地发现和解决问题。
  3. 实际应用中,模块化程序设计需要考虑的问题比较多,如程序的性能、程序的可靠性、程序的稳定性等,需要有一定的实践经验和解决问题的能力。

课程思政

 

  1. 函数的特性:函数的特性包括有界性、单调性、奇偶性等。这些特性可以用来描述客观事物的变化规律,帮助我们更好地理解和掌握函数知识。同时,我们也可以从中引申出规律性的认识世界的思政元素,告诫学生要用规律性的眼光去看待世界,努力发现和掌握事物的变化规律。
  2. 函数的应用:函数知识广泛应用于现实生活中,例如物理学、工程学、经济学等。我们可以从中引申出函数的应用的思政元素,鼓励学生将函数知识应用到实际生活中,提高自己的实践能力和创新意识。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、引入实验内容:介绍模块化程序设计的概念和优势,说明学习模块化程序设计的重要性和实际应用场景。

2、理论讲解:讲解模块化程序设计的原理和方法,包括函数的定义、调用和参数传递等。解释模块化程序设计的优点和模块的封装性。

3、示例演示:通过实例代码演示模块化程序设计的过程,示例:创建多个模块来实现学生成绩管理系统

4、学生操作:

学生根据实验指导书或实验指导PPT,完成模块化程序设计的基本操作和应用。

学生根据实验要求,设计并实现一个模块化程序,分为五个步骤,9个模块,使用自顶向下逐步求精的方法完成一个小型项目--日历程序的实现

学生编写代码,实现模块之间的调用和数据传递,并测试程序的正确性。

学生通过输入、输出实现对模块化程序的动态操作。

在每个关卡结束时,学生完成对应的一个模块,使用教师给出的测试数据测试模块的准确性,然后进行下一个模块进行测试。最后对所有模块进行整合,体验模块化程序设计从分析、设计、编码、测试的全过程。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述模块化程序设计在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言模块化程序设计的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

用户如入年份和月份,系统显示对应年份的日历。

举例:当用户输入2017和10,则系统显示2017年10月份的日历。

说明: C:\Users\MacBook\AppData\Roaming\Tencent\Users\110684527\QQ\WinTemp\RichOle\CBD$N))K1LYOIN[0319CJKL.png说明: C:\Users\MacBook\AppData\Roaming\Tencent\Users\110684527\QQ\WinTemp\RichOle\K2$DQMD`~KJ@EV1ZDIB7R@M.png

学习效果、学生反馈、反思改进措施等

在学生研讨时,发现学生还是不习惯使用函数,甚至尽量回避函数。因此,在研讨总结时,需要跟学生强调函数的重要性,对比有函数和无函数两种情形下实现代码时,代码的效果区别,引导学生尽快学会利用函数把复杂问题简单化。

备注

 

 


分课时教案15

知识单元名称

递归函数

课次

15

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 掌握递归的基本概念和原理,了解递归在程序设计和算法中的重要性和应用。
  2. 熟悉C语言的基本语法和程序结构,掌握递归函数的设计和实现方法。
  3. 能够编写简单的递归程序,掌握递归的基本结构和递归函数的调用过程。
  4. 能够通过递归方式解决实际问题,提高编程能力和解决问题的能力。
  5. 掌握递归程序的调试和测试方法,能够通过调试和测试来保证程序的正确性和稳定性。

在实验课程中,应该注重实践操作,通过编写具体的递归程序来掌握递归的基本结构和递归函数的调用过程。同时,教师也应该进行针对性的指导和帮助,解决学生在实验过程中遇到的问题。最后,应该通过实验结果的评估和总结,以达到实验课程的教学目标。

本单元重点

与难点内容

重点:

掌握递归的基本概念和原理,了解递归在程序设计和算法中的重要性和应用。

熟悉C语言的基本语法和程序结构,掌握递归函数的设计和实现方法。

能够编写简单的递归程序,掌握递归的基本结构和递归函数的调用过程。

能够通过递归方式解决实际问题,提高编程能力和解决问题的能力。

掌握递归程序的调试和测试方法,能够通过调试和测试来保证程序的正确性和稳定性。

难点:

递归程序设计是一种很高级的编程技巧,需要掌握递归的基本结构和递归函数的调用过程,而这个过程往往比较抽象,不容易理解和掌握。

递归函数的实现需要有一定的数学功底和逻辑思维能力,需要能够将问题转化为可以递归求解的形式。

递归函数的调试和测试也是一项比较困难的任务,需要掌握调试和测试的方法和技巧,能够有效地发现和解决问题。

课程思政

 

  1. 递归思想:递归函数体现了分而自治的数学思想,通过将大型复杂问题分解为与原问题相同但规模较小的问题进行处理,从而解决问题。这种思想可以引导学生思考问题、解决问题的方法,培养分析问题和解决问题的能力。
  2. 递归出口与边界条件:递归函数需要有边界条件,当边界条件不满足时,递归继续进行;当边界条件满足时,递归停止。这可以启发学生理解生活中需要具备的条件和限制,例如法律法规、道德规范等。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、引入实验内容:介绍递归程序设计的概念和应用,说明学习递归程序设计的重要性和实际应用场景。

2、理论讲解:讲解递归的基本原理和递归函数的定义,解释递归调用和递归终止条件的重要性。

3、示例演示:通过实例代码演示递归程序的设计和实现过程,示例:创建一个递归函数来计算阶乘

4、学生操作:

学生根据实验指导书或实验指导PPT,完成递归程序的基本操作和应用。

学生根据实验要求,设计并实现一个递归程序,例如创建一个递归函数来计算斐波那契数列。

学生编写代码,实现递归函数的功能,并测试程序的正确性。

学生通过输入、输出实现对递归程序的动态操作。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述递归程序设计在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言递归程序设计的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

题目1设计一个程序,使用递归程序实现一个数的阶乘

题目2编写递归函数getPower计算xy次方。

(1) 分析

    //xy次方的整形形式,当y<0时,返回0

    int getPower(int x, int y);

    在主程序中实现输入输出,分别输入整数x底数,再输入一个整数y作为指数,然后输出xy次方的计算结果。

(2) 要求

不使用库函数,编写自定义函数,使用递归方法完成。

学习效果、学生反馈、反思改进措施等

这章学生入门较难,有三分之一的同学处于较懵的状态,似懂非懂,似是而非。这里采取的措施是:让学生做好预习工作,首先要玩游戏理解汉诺塔的理念,然后抽象化,最后转变为程序代码。然后引导学生将其他问题用类似的方法实现抽象化,转变成递归代码。

备注

 

 


分课时教案16

知识单元名称

递归函数(二)

课次

16

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 理解递归和递推的概念及关系,掌握将递归转化为递推的方法。
  2. 能够将递归函数转化为递推式,并使用循环语句实现递推计算。
  3. 熟悉递推算法的优缺点和应用场景,了解递推算法在程序设计和算法中的重要性和应用。
  4. 为了达到上述实验教学目标与要求,实验课程应该包括以下几个方面的要求:
  5. 给出一些典型的递归函数,通过分析递归调用过程,理解递归和递推的关系。
  6. 学习将递归函数转化为递推式的方法,包括提取公共子序列、利用递推式计算中间结果等。
  7. 通过编写递推计算程序,掌握递推算法的实现技巧和循环语句的使用方法。
  8. 分析递推算法的优缺点和应用场景,了解递推算法在排序、搜索、数值计算等领域的应用。
  9. 通过实验结果的评估和总结,达到实验课程的教学目标,使学生掌握递归和递推的概念及关系,并能够将递归函数转化为递推式并实现。

本单元重点

与难点内容

重点:

  1. 理解递归和递推的概念及关系,掌握将递归转化为递推的方法。
  2. 能够将递归函数转化为递推式,并使用循环语句实现递推计算。
  3. 熟悉递推算法的优缺点和应用场景,了解递推算法在程序设计和算法中的重要性和应用。

难点:

  1. 递归和递推的概念和关系比较抽象,学生需要具备较强的抽象思维能力和数学基础才能深入理解。
  2. 将递归函数转化为递推式需要一定的技巧和经验,学生需要掌握相关的算法和编程技巧。
  3. 递推算法的优缺点和应用场景比较复杂,学生需要通过对具体问题的分析和实践来理解和掌握。

课程思政

 

  1. 递归函数的设计与实现:递归函数的设计需要技巧和方法,例如利用递归模型求解字符串长度、斐波那契数列等。这可以鼓励学生观察问题、分析问题和创造性地解决问题,培养学生的创新意识和实践能力。
  2. 递归算法的优化:对于某些递归算法,例如求解斐波那契数列,可能会遇到效率低下的问题,需要对其进行优化。这可以引导学生思考算法优化的重要性,培养优化算法的意识和方法。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程:

1、引入实验内容:介绍递归和递推的概念和区别,说明学习递归变递推的重要性和实际应用场景。

2、理论讲解:讲解递归和递推的原理和方法,解释递归调用和递推思路的不同之处。

3、示例演示:通过实例代码演示递归变递推的过程,示例:创建一个递归函数和一个递推函数来计算斐波那契数列

4、学生操作:

学生根据实验指导书或实验指导PPT,完成递归变递推的基本操作和应用。

学生根据实验要求,设计并实现一个递归函数和一个递推函数,例如创建一个递归函数和一个递推函数来计算阶乘。

学生编写代码,实现递归函数和递推函数的功能,并测试程序的正确性。

学生通过输入、输出实现对递归和递推函数的动态操作。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述递归变递推在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言递归变递推的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

题目1用递归实现汉诺塔问题,并分析汉诺塔程序的执行过程。

要求参照幻灯片中的例3的分析来编程:

 函数头为:

   void hanoi (int n,char X,char Y,char Z)

 实现思路:

   N个盘子,X移到Z,Y作临时存放,可以用三次调用过程完成。

 hanoi (N-1,X,Z,Y)

 move(X,Z)

 hanoi (N-1,Y,X,Z)

递归出口为N1

 其中,move(X,Z)函数用来输出盘子从X移动到Z这样的效果。

    可以访问以下链接,通过汉诺塔游戏验证你程序的正确性。

               http://www.3454.com/91990p

题目2用递归实现折半查找函数。折半查找的函数头为:

    int BinarySearch(int *array, int target, int low, int high)

 

学习效果、学生反馈、反思改进措施等

在研讨过程中,发现不少同学对递归开始有了较深入理解,部分同学在做题时能够自主加入较深入的递归要素。不过并不是所有学生都能做到这一步,这是很正常的现象,因为大部分学生要到下个学期学习树的时候才能真正理解递归精髓。假期需要引导学生对这个章节进行复习,才能保证下个学期学习得更顺利一些。

备注

 

 


分课时教案17

知识单元名称

指针(一)

课次

17

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 掌握指针的概念,了解指针在C语言中的重要性和应用,掌握如何定义和使用指针变量。
  2. 掌握指针变量的定义、赋值、引用,了解指针变量作为函数参数的使用。

通过实验,帮助学生加深对指针的理解和掌握,提高编程能力和解决问题的能力。同时,教师也可以根据实际情况进行针对性的指导和帮助,并对实验结果进行评估和总结,以达到课程的目标。

本单元重点

与难点内容

重点:

  1. 理解地址和指针的概念,了解指针变量的定义和使用方法。
  2. 掌握通过指针访问内存地址的方式,能够使用指针操作数组和字符串。
  3. 了解指针作为函数参数的使用方法,能够通过指针实现复杂的数据传递和操作。

难点:

  1. 理解地址和指针的概念,掌握指针变量的操作,尤其是指针的算术运算和关系运算,理解这些运算的原理和作用。
  2. 了解指针作为函数参数的使用方法,理解如何通过指针实现复杂的数据传递和操作,包括传递多个参数、传递数组、传递结构体等。

为了帮助学生掌握这些重点和难点,可以设计相应的实验题目和实践环节,例如定义一个数组和指针变量,通过指针访问数组元素;定义一个字符串和指向该字符串的指针,输出该字符串并计算字符串长度;编写一个函数,实现数组中的元素倒序排列;编写一个函数,实现两个数的交换等。同时,教师也需要进行针对性的指导和帮助,并对实验结果进行评估和总结,以达到课程的目标。

课程思政

 

指针是内存中一个最小单元的编号,也就是地址。这个概念可以帮助学生理解程序中数据的存储和访问方式,我们可以更好地理解这些系统的内部结构和实现原理,为未来的职业发展打下基础。这可以引导学生关注现实生活中的问题,培养他们的应用能力和创新意识。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、引入实验内容:介绍指针变量的概念和作用,说明学习指针变量的重要性和实际应用场景。

2、理论讲解:讲解指针变量的定义、初始化和使用方法。解释指针变量与内存地址的关系,以及指针变量的间接访问。

3、示例演示:通过实例代码演示指针变量的使用,示例:创建一个指针变量来访问数组元素

4、学生操作:

学生根据实验指导书或实验指导PPT,完成指针变量的基本操作和应用。

学生按顺序完成实验习题:

1关验证程序,观察指针的含义

2关指针-直接输出和间接输出两个数

3关指针-输入ab两个整数,按先大后小的顺序输出ab

4关指针-用函数实现三个数的排列

5关指针-数组反序输出

6关指针-用指针做函数的参数访问二维数组。

学生编写代码。

学生通过输入、输出实现对指针变量的动态操作。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述指针变量在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师采用的教学方法和手段:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

过以上的教学流程设计,可以帮助学生深入理解和掌握C语言指针变量的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

题目1: 传值方式和传地址方式验证

阅读并调试以下两段程序,理解并分析为什么会有不同的运行结果?

程序1

void swap(int a, int b)

{    int temp = a;

     a = b;

     b = temp;

}

int main()

{    int x = 5, y = 9;

     printf("swap函数调用前:x = %d  y = %d\n",x,y);

     swap(x, y);

     printf("swap函数调用后:x = %d  y = %d\n",x,y);

     return 0;

}

程序2

void swap(int *p1, int *p2)

{

    int temp = *p1;

    *p1 = *p2;

    *p2 = temp;

}

int main()

{

    int x = 5, y = 9;

    printf("swap函数调用前:x = %d  y = %d\n",x,y);

    swap(&x, &y);

    printf("swap函数调用后:x = %d  y = %d\n",x,y);

    return 0;

}

 

题目2: 一维数组传参

题目描述:

输入10个整数,将其中最小的数与第一个数交换,把最大的数与最后一个数交换。

程序运行结果范例(蓝色字体表示输入):

请输入10个整数:2  3  4  23  5  78  0  1  6  12

交换后的结果为:0  3  4  23  5  12  2  1  6  78

 

请输入10个整数:1  25  7  40  5  6  12  8  30  19

交换后的结果为:1  25  7  19  5  6  12  8  30  40

 

提示:

要求用数组及数组传参方式实现上述程序。

要求写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。

这个程序有多种实现思路,尝试使用数组和指针两种方法实现。

 

学习效果、学生反馈、反思改进措施等

这章内容采用案例教学模式,历届同学学习效果均较好。定义好的模板,经过精心设计,使学生能掌握自定向下的学习理念,并能将复杂问题简单化。

关键是要继续加强小组的合作机制,这点不能放松。

备注

 

 


分课时教案18

知识单元名称

指针(二)

课次

18

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 掌握指针的基本概念和用法,包括指针的定义、指针的赋值、指针的运算等。
  2. 掌握通过指针访问数组元素的方法,包括通过指针访问数组元素的值、通过指针修改数组元素的值等。
  3. 了解指针和数组的关系,包括指针的移动、数组的遍历等。
  4. 能够根据具体问题,设计出合理的指针访问数组的方案。
  5. 能够通过代码实现指针访问数组的操作,并能够进行调试和测试。
  6. 了解实验的要求和步骤,能够按照实验要求进行操作。
  7. 了解实验中的注意事项和安全要求,保证实验的正确性和安全性。
  8. 能够根据实验结果进行分析和总结,加深对指针和数组的理解和掌握。

本单元重点

与难点内容

重点:

  1. 掌握指针的基本概念和用法,尤其是指针的指针和数组名的关系。
  2. 掌握通过指针访问数组元素的方法,包括通过指针访问数组元素的值、通过指针修改数组元素的值等。
  3. 了解指针和数组的关系,包括指针的移动、数组的遍历等。

难点:

  1. 理解指针的概念和用法,尤其是指针的指针和数组名的关系,需要深入理解才能掌握。
  2. 掌握通过指针访问数组元素的方法,需要熟练掌握指针的运算和数组的遍历方法。
  3. 了解指针和数组的关系,需要理解指针的移动和数组的遍历方法。
  4. 设计出合理的指针访问数组的方案,需要具备一定的编程经验和问题分析能力。

总之,C语言的指针访问数组是C语言中的一个重要知识点,需要深入理解和掌握相关概念和方法,才能在实际应用中灵活运用。

课程思政

 

指针变量是用来存放内存地址的变量。通过使用指针变量,我们可以操作内存中的变量和数组等数据结构。这可以引导学生理解事物之间相互联系和相互依存的关系,培养他们的系统思维和整体观念。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

1、教师引入实验内容:介绍指针访问数组的概念和作用,说明学习指针访问数组的重要性和实际应用场景。

2、理论讲解:讲解指针和数组的关系,解释指针访问数组元素的原理和方法。介绍指针算术运算和指针与数组名的特殊关系。

3、示例演示:通过实例代码演示指针访问数组的过程,示例:使用指针变量来遍历和修改数组元素

4、学生操作:

学生根据实验指导书或实验指导PPT,完成指针访问数组的基本操作和应用。

学生创建一个数组,并使用指针变量来访问数组元素。

学生编写代码,通过指针变量来修改或访问对应的数组元素。

学生通过输入、输出实现对数组的动态操作。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述指针访问数组在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言指针访问数组的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

 

作业与

思考题设置

题目1: 二维数组传参

题目描述:写一个inverse函数,此函数的功能是:将一个3*4的二维数组中的值按逆序重新存放。

程序运行结果范例(蓝色字体表示输入):

请输入3*4的二维数组:

1 2 3 4

5 6 7 8

9 10 11 12

逆序存放后的结果为:

12 11 10 9 

8 7 6 5 

4 3 2 1

提示:

这个程序有多种实现思路,尝试使用两种方法实现。

讨论内容:

(1) 这个例子采用什么方法传参?

(2) 如何用两种不同的思路解决程序的问题?

(3) 如何使编写的程序扩展性更好?

 

 

题目2: 字符型的二维数组传参

题目描述:

定义一个二维字符数组,这个数组可以存储5个身份证号码。输入五个身份证号码,并把这些身份证存储到二维字符数组中。编程判断这些身份证号码的格式是否正确,并输出身份证号码对应的年月日信息以及性别信息。

 

程序运行结果范例(蓝色字体表示输入):

请输入5个身份证号码:

430103198406301023

43010519830623101x

43010819830229102x

1234

aaaaaaaaaaaaaaaaaa

身份证号码430103198406301023验证正确,持有人出生日期为:1984630,持有人性别为:女

身份证号码43010519830623101x验证正确,持有人出生日期为:1983623,持有人性别为:男

身份证号码43010819830229102x日期错误

身份证号码1234长度错误

身份证号码aaaaaaaaaaaaaaaaaa非法字符

 

提示:

需要上网查询身份证的编码方式,然后提取出表示年月日,性别的字串,并进行判断。

 

讨论内容:

(1) 输入的5个身份证号码如何正确存储在字符数组中?画出内存图

(2) 如何从身份证号码中提取出年月日和代表性别的子串?

(3) 如何判断年月日是否是正确的年月日,有哪些需要考虑的因素?

(4) 如何针对身份证格式各种错误的情况进行不同的提示?

 

实验要求:

    利用下面的代码模版,填写子程序的空白处。要求:除了output函数和main函数可以使用输入输出语句,其他函数内部均不可使用输入输出语句。

学习效果、学生反馈、反思改进措施等

在学生讨论过程中,一般情况下会发现学生代码写得还比较规范,部分同学代码还可以改进,这节课可以充分对比学生代码的优劣,让学生养成良好的编程习惯。

备注

 


分课时教案19

知识单元名称

指针(三)

课次

19

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 了解动态内存分配的概念和重要性。
  2. 掌握C语言中的动态内存分配函数,包括malloc()calloc()realloc()
  3. 掌握动态内存分配的基本用法和注意事项,包括分配指定大小的内存空间、检查分配是否成功、避免内存泄漏等。
  4. 掌握动态内存的释放,使用free()函数释放已经分配的内存空间。
  5. 了解动态内存分配的注意事项和安全要求,包括避免重复释放、避免野指针等。
  6. 通过编写程序实现动态内存的分配和释放,并进行调试和测试。
  7. 了解C语言中的内存管理机制,包括堆和栈的区别、内存分配的方式等。
  8. 通过实验加深对动态内存分配的理解和掌握,提高编程能力和程序调试能力。

本单元重点

与难点内容

重点:

  1. 掌握C语言中的动态内存分配函数,包括malloc()calloc()realloc()
  2. 掌握动态内存分配的基本用法和注意事项,包括分配指定大小的内存空间、检查分配是否成功、避免内存泄漏等。
  3. 掌握动态内存的释放,使用free()函数释放已经分配的内存空间。
  4. 了解动态内存分配的注意事项和安全要求,包括避免重复释放、避免野指针等。

难点:

  1. 理解动态内存分配的概念和重要性,需要深入理解才能掌握。
  2. 掌握动态内存的分配和释放方法,需要熟练掌握相关函数和注意事项。
  3. 了解动态内存的内存管理机制,包括堆和栈的区别、内存分配的方式等,需要深入理解才能掌握。
  4. 设计出合理的动态内存分配方案,需要具备一定的编程经验和问题分析能力。

课程思政

 

指针可以进行各种操作,例如取地址、取值、加法、减法等。这些操作可以帮助学生理解指针在程序中的作用和操作方式,这些基本概念和原理是计算机专业学生必须掌握的基础知识,可以帮助学生建立计算机系统的整体概念,为后续课程的学习打下基础。同时也可以引导学生思考人类社会的组织结构和运行方式,从中汲取智慧。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、引入实验内容:介绍动态内存分配的概念和作用,说明学习动态内存分配的重要性和实际应用场景。

2、理论讲解:讲解动态内存分配的原理和方法,介绍malloccallocrealloc等函数的使用方法,解释内存分配和释放的过程。

3、示例演示:通过实例代码演示动态内存分配的过程,示例:创建动态数组来存储用户输入的数据

4、学生操作:

学生根据实验指导书或实验指导PPT,完成动态内存分配的基本操作和应用。

学生设计一个程序,动态分配内存来存储用户输入的数据,并进行相关的操作。

学生编写代码,使用malloccallocrealloc函数来动态分配内存,并进行内存释放操作。

学生通过输入、输出实现对动态内存分配的动态操作。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述动态内存分配在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言动态内存分配的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

 

学习效果、学生反馈、反思改进措施等

一般情况下,这个章节的代码学生会感觉较难。所以部分作业可以改为选做,并且在讲解时应多画图,帮助学生理解。

备注

 


分课时教案20

知识单元名称

结构体

课次

20

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

  1. 掌握结构体变量的定义和结构体变量的定义和使用方法。
  2. 掌握结构体数组的基本使用方法,包括定义、初始化和访问元素等。
  3. 掌握结构的简单嵌套应用,包括定义和访问嵌套结构体变量。
  4. 掌握结构指针的概念、及结构指针作为函数参数的编程方法。
  5. 通过编写程序,进一步理解结构体的应用和优势。
  6. 能够根据具体问题,设计出合理的结构体解决方案。
  7. 提高编程能力和结构化思维的能力。

实验条件:PC计算机,Windows7Windows10操作系统,Office2010及以上版本,Dev-C++5.11及以上版本或Code Blocks16.01及以上版本。

本单元重点

与难点内容

重点:

  1. 掌握结构体类型的定义和使用方法。
  2. 掌握结构体数组的定义、初始化和访问元素的方法。
  3. 理解结构的简单嵌套使用,包括定义和访问嵌套结构体变量。
  4. 掌握结构指针的概念、及结构指针作为函数参数的编程方法。

难点:

  1. 理解结构体内部各个成员变量的含义和用法,以及结构体变量成员的引用方法。
  2. 理解结构体数组和结构体指针的概念和应用,以及如何正确使用它们。
  3. 掌握结构体类型的定义和使用方法,以及如何根据具体问题设计出合理的结构体解决方案。
  4. 提高编程能力和结构化思维的能力,能够熟练运用结构体解决实际问题。

课程思政

 

在程序中,我们需要为结构体变量分配内存空间,以存储结构体中的各个数据成员。当不再需要该结构体变量时,我们还需要释放它所占用的内存空间。这个知识点可以帮助学生理解结构体的内存分配和释放的操作方法和重要性,这些知识可以帮助学生了解计算机系统的性能和优化方法,培养学生的计算机系统性能优化意识和能力。同时也可以引导学生思考计算机系统性能优化与社会发展的关系,提高学生的社会责任感和使命感。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、引入实验内容:介绍结构体的概念和作用,说明学习结构体的重要性和实际应用场景。

2、理论讲解:讲解结构体的定义、成员访问和使用方法,介绍结构体与数组、指针等的关系。

3、示例演示:通过实例代码演示结构体的使用,例如创建一个学生信息结构体,存储学生的姓名、年龄和成绩。

4、学生操作:

学生根据实验指导书或实验指导PPT,完成结构体的基本操作和应用。

学生设计一个程序,创建结构体变量并进行相关的操作,例如输入学生信息、计算平均成绩等。

学生编写代码,通过结构体变量来访问和修改对应的成员。

学生通过输入、输出实现对结构体的动态操作。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述结构体在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言结构体的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

题目1:计算两个日期之间的天数(请定义结构体日期)

http://noi.openjudge.cn/ch0113/25/

描述

给定两个日期,计算相差的天数。比如2010-1-12010-1-3相差2天。

输入

共两行:

第一行包含三个整数startYearstartMonthstartDay,分别是起始年、月、日。

第二行包含三个整数endYearendMonthendDay,分别是结束年、月、日。

相邻两个整数之间用单个空格隔开。

年份范围在1~3000。保证日期正确且结束日期不早于起始日期。

输出

输出一个整数,即是两个日期相差的天数。

样例输入

2008 1 1

2009 1 1

样例输出

366

提示

闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。闰年的2月份有29天。

 

题目2:输出最高分数的学生姓名(定义学生信息结构体)

http://noi.openjudge.cn/ch0109/02/

 输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

描述

输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

输入格式

第一行输入一个正整数NN <= 100),表示学生人数。接着输入N行,每行格式如下:分数 姓名分数是一个非负整数,且小于等于100;姓名为一个连续的字符串,中间没有空格,长度不超过20。数据保证最高分只有一位同学。

输出格式

获得最高分数同学的姓名。

样例输入

5

87 lilei

99 hanmeimei

97 lily

96 lucy

77 jim

样例输出

hanmeimei

学习效果、学生反馈、反思改进措施等

这个章节学生会感觉内容比较杂乱,因为C语言这个章节的语法有好多种可能,这样也行,那样写也行,然后学生学着就懵了。我觉得后续应该督促学生预习,采取的办法可以是要求学生上台当老师讲解,然后在学生讲解的过程中,发现学生容易迷糊的点,然后当场解决指正。

备注

 

 


分课时教案21

知识单元名称

链表(一)

课次

21

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

链表是数据结构中的一种重要数据类型,它在C语言程序设计实验教学中具有重要的作用。

课程目标:

  1. 掌握链表的基本概念和特点,了解链表在程序中的应用场景。
  2. 学会使用C语言实现链表的基本操作,包括创建、插入、删除、遍历等操作。
  3. 理解链表中的指针概念,掌握指针的使用方法,避免指针错误。
  4. 通过实验案例和实际应用,了解链表在解决实际问题中的应用,培养学生的编程思维和实践能力。

课程要求:

  1. 理解链表的基本概念和特点,包括链表节点的结构、链表的创建和销毁、链表的基本操作等。
  2. 学会使用C语言实现链表节点的定义和初始化,能够正确地创建和销毁链表。
  3. 掌握链表的基本操作,包括插入、删除、遍历等操作,理解链表操作的原理和实现方法,能够编写相关的函数。
  4. 理解链表中的指针概念,掌握指针的使用方法,包括指针的定义、初始化、移动、解引用等操作,能够正确地操作链表中的指针。
  5. 掌握链表在实际问题中的应用,包括链表在数据结构中的使用、链表在动态内存分配中的应用等,能够正确地使用链表解决实际问题。
  6. 能够独立思考和解决问题,具备良好的编程习惯和代码风格,能够编写高质量的代码。

通过链表的实验教学,学生应该能够掌握链表的基本概念和操作方法,理解链表的原理和实现方法,了解链表在实际问题中的应用,从而提高学生的编程思维和实践能力。

本单元重点

与难点内容

链表实验教学的重点和难点如下:

重点:

  1. 链表节点的定义和初始化:链表节点是链表中的基本单位,包括数据域和指针域,需要正确地定义和初始化。
  2. 链表的创建和销毁:链表的创建和销毁是链表操作的基础,需要掌握链表的创建和销毁方法。
  3. 链表的基本操作:链表的基本操作包括插入、删除、遍历等,需要掌握这些操作的原理和实现方法。
  4. 指针的使用:链表中的指针是实现链表的关键,需要理解指针的概念和用法,能够正确地操作指针。
  5. 链表的应用:需要掌握链表在实际问题中的应用,包括链表在数据结构中的使用、链表在动态内存分配中的应用等。

难点:

  1. 指针错误:链表中的指针操作容易出现错误,如指针丢失、指针越界等,需要正确地理解和使用指针。
  2. 链表操作的算法:链表操作的算法比较复杂,需要理解算法的原理和实现方法,能够正确地编写相关的函数。
  3. 链表的应用:链表的应用比较广泛,需要掌握链表在不同领域中的应用方法,能够正确地使用链表解决实际问题。
  4. 代码优化:链表的代码比较复杂,需要进行代码优化,使代码更加清晰易懂,提高代码的质量。

总之,链表实验教学需要让学生掌握链表的基本概念和操作方法,理解链表的原理和实现方法,了解链表在实际问题中的应用,同时还需要提高学生的编程思维和实践能力。

课程思政

 

链表不像数组那样需要连续的内存空间,它的元素可以分散地存储在内存中。这种灵活性可以类比为思政教育中的灵活性,即在学习和生活中需要灵活应对各种情况,不拘泥于固定的思维和方式。

每个链表节点包含数据域和指针域,数据域存储元素信息,指针域存储下一个节点的地址。这种结构可以类比为思政教育中的人生观,即一个人的生活由他的思想和行动构成,而他的思想指导他的行动,影响着他的未来发展方向。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、引入实验内容:介绍链表的概念和作用,说明学习链表的重要性和实际应用场景。

2、理论讲解:讲解链表的定义、节点结构和基本操作,解释链表的插入、删除和遍历过程。

3、示例演示:通过实例代码演示链表的使用,例如创建一个链表来存储学生信息,并实现插入和打印功能。

4、学生操作:

学生根据实验指导书或实验指导PPT,完成链表的基本操作和应用。

学生设计一个程序,创建链表并进行相关的操作,例如插入、删除、查找等。

学生编写代码,通过链表操作来实现对节点的插入、删除和遍历操作。

学生通过输入、输出实现对链表的动态操作。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述链表在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

1、实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

2、实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

3、实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言链表的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

题目1 多项式输出

一元n次多项式可用如下的表达式表示:f(x)=anxn+an-1xn-1+...+a1x+a0an0其中,aixi称为i次项,ai称为i次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式:(用链表来存储多项式)

1. 多项式中自变量为x,从左到右按照次数递减顺序给出多项式。

2. 多项式中只包含系数不为0的项。

3. 如果多项式n次项系数为正,则多项式开头不出现+号,如果多项式n次项系数为负,则多项式以-号开头。

4. 对于不是最高次的项,以+号或者-号连接此项与前一项,分别表示此项系数为正或者系数为负。紧跟一个正整数,表示此项系数的绝对值(如果一个高于0次的项,其系数的绝对值为1,则无需输出1)。如果x的指数大于1,则接下来紧跟的指数部分的形式为x^b,其中bx的指数;如果x的指数为1,则接下来紧跟的指数部分形式为x; 如果x的指数为0,则仅需输出系数即可。

5. 多项式中,多项式的开头、结尾不含多余的空格。

输入

共有2 行:

第一行 1 个整数 n,表示一元多项式的次数。

第二行有 n+1 个整数,其中第 i 个整数表示第 n-i+1 次项的系数,每两个整数之间用空格隔开。

1 n 100,多项式各次项系数的绝对值均不超过100

输出

1行,按题目所述格式输出多项式。

样例输入

样例 #1

5

100 -1 1 -3 0 10

样例 #2

3

-50 0 0 1

样例输出

样例 #1

100x^5-x^4+x^3-3x^2+10

样例 #2

-50x^3+1

 

题目描述:

#450:  约瑟夫问题NOI3.2节的题目

时间限制:2 sec.  内存限制:128 MB.

试题描述

约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。

输入格式

每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是:0 0

输出格式

对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号

 

学习效果、学生反馈、反思改进措施等

这章内容很难,不过自从采取了案例式教学后,这章内容学生一般都感觉比较容易了。不过在编程中,会发现学生完成代码时思虑不周全,考虑问题容易简单,所实现的学生管理系统功能往往太单一,不切实际,这里需要给学生予以引导。

备注

 

 


分课时教案22

知识单元名称

链表(二)

课次

22

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

循环链表是链表的一种特殊形式,它的最后一个结点的指针域指向头结点,形成一个环。循环链表实验教学的课程目标和要求如下:

课程目标:

  1. 掌握循环链表的基本概念和特点,了解循环链表在程序中的应用场景。
  2. 学会使用C语言实现循环链表的基本操作,包括创建、插入、删除、遍历等操作。
  3. 理解循环链表中的指针概念,掌握指针的使用方法,避免指针错误。
  4. 通过实验案例和实际应用,了解循环链表在解决实际问题中的应用,培养学生的编程思维和实践能力。

课程要求:

  1. 理解循环链表的基本概念和特点,包括循环链表节点的结构、循环链表的创建和销毁、循环链表的基本操作等。
  2. 学会使用C语言实现循环链表节点的定义和初始化,能够正确地创建和销毁循环链表。
  3. 掌握循环链表的基本操作,包括插入、删除、遍历等操作,理解循环链表操作的原理和实现方法,能够编写相关的函数。
  4. 理解循环链表中的指针概念,掌握指针的使用方法,包括指针的定义、初始化、移动、解引用等操作,能够正确地操作循环链表中的指针。
  5. 掌握循环链表在实际问题中的应用,包括循环链表在数据结构中的使用、循环链表在动态内存分配中的应用等,能够正确地使用循环链表解决实际问题。
  6. 能够独立思考和解决问题,具备良好的编程习惯和代码风格,能够编写高质量的代码。
  7. 熟悉循环链表操作的原理和实现方法,能够正确地编写相关的函数。
  8. 能够利用循环链表实现相关算法,解决实际问题,培养学生的编程思维和实践能力。

总之,循环链表实验教学的课程目标是要让学生掌握循环链表的基本概念和操作方法,理解循环链表的原理和实现方法,了解循环链表在实际问题中的应用,同时提高学生的编程思维和实践能力。

本单元重点

与难点内容

循环链表实验教学的重点和难点如下:

重点:

  1. 循环链表节点的定义和初始化:循环链表节点是循环链表中的基本单位,包括数据域和指针域,需要正确地定义和初始化。
  2. 循环链表的创建和销毁:循环链表的创建和销毁是循环链表操作的基础,需要掌握循环链表的创建和销毁方法。
  3. 循环链表的基本操作:循环链表的基本操作包括插入、删除、遍历等,需要掌握这些操作的原理和实现方法。
  4. 指针的使用:循环链表中的指针是实现循环链表的关键,需要理解指针的概念和用法,能够正确地操作指针。
  5. 循环链表的应用:需要掌握循环链表在不同领域中的应用方法,能够正确地使用循环链表解决实际问题。

难点:

  1. 指针错误:循环链表中的指针操作容易出现错误,如指针丢失、指针越界等,需要正确地理解和使用指针。
  2. 循环链表操作的算法:循环链表操作的算法比较复杂,需要理解算法的原理和实现方法,能够正确地编写相关的函数。
  3. 代码优化:循环链表的代码比较复杂,需要进行代码优化,使代码更加清晰易懂,提高代码的质量。
  4. 特殊操作:如插入数据的位置为0时,头结点和尾结点的next指针均指向新结点;删除位置为0的结点时,头结点和尾结点的next指针都指向为位置为1的结点,然后安全删除位置为0的结点等操作需要进行特殊处理。

总之,循环链表实验教学需要让学生掌握循环链表的基本概念和操作方法,理解循环链表的原理和实现方法,了解循环链表在实际问题中的应用,同时提高学生的编程思维和实践能力。

课程思政

 

创建链表需要初始化每个节点,并制定指针指向下一个节点。这种过程可以类比为思政教育中的自我成长,即每个人都需要不断地自我发展和成长,才能更好地适应社会的发展和变化。

遍历链表需要从头节点开始,依次访问每个节点,直到到达尾节点。这种过程可以类比为思政教育中的人生历程,即每个人都需要经历不同的阶段和过程,不断探索和发现自己的方向和目标。

删除链表中的节点需要遵循一定的操作顺序,否则可能会导致链表断裂。这种操作可以类比为思政教育中的道德规范,即每个人的行为需要遵循一定的道德规范,不能违反社会公德和道德准则。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

1、引入实验内容:介绍循环链表的概念和作用,说明学习循环链表的重要性和实际应用场景。

2、理论讲解:讲解循环链表的定义、节点结构和基本操作,解释循环链表的插入、删除和遍历过程。

3、示例演示:通过实例代码演示循环链表的使用,例如创建一个循环链表来存储学生信息,并实现插入和打印功能。

4、学生操作:

学生根据实验指导书或实验指导PPT,完成循环链表的基本操作和应用。

学生设计一个程序,创建循环链表并进行相关的操作,例如插入、删除、查找等。

学生编写代码,通过循环链表操作来实现对节点的插入、删除和遍历操作。

学生通过输入、输出实现对循环链表的动态操作。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述循环链表在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言循环链表的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

 

作业与

思考题设置

学生信息管理(使用动态链表完成)

题目描述:【NOI3.2节的题目】

利用动态链表记录从标准输入输入的学生信息

试题描述

利用动态链表记录从标准输入输入的学生信息(学号、姓名、性别、年龄、得分、地址)其中,学号长度不超过20, 姓名长度不超过40, 性别长度为1, 地址长度不超过40

输入格式

包括若干行,每一行都是一个学生的信息,如:00630018 zhouyan m 20 10.0 28#460输入的最后以"end"结束

输出格式

将输入的内容倒序输出每行一条记录,按照学号 姓名 性别 年龄 得分 地址的格式输出

样例输入

00630018 zhouyan m 20 10 28#4600

0063001 zhouyn f 21 100 28#460000

0063008 zhoyan f 20 1000 28#460000

0063018 zhouan m 21 10000 28#4600000

00613018 zhuyan m 20 100 28#4600

00160018 zouyan f 21 100 28#4600

01030018 houyan m 20 10 28#4600

0630018 zuyan m 21 100 28#4600

10630018 zouan m 20 10 28#46000

end

样例输出

10630018 zouan m 20 10 28#46000

0630018 zuyan m 21 100 28#4600

01030018 houyan m 20 10 28#4600

00160018 zouyan f 21 100 28#4600

00613018 zhuyan m 20 100 28#4600

0063018 zhouan m 21 10000 28#4600000

0063008 zhoyan f 20 1000 28#460000

0063001 zhouyn f 21 100 28#460000

00630018 zhouyan m 20 10 28#4600

 

对学生信息进行排序和查找

学习效果、学生反馈、反思改进措施等

这个链表实验比上一个链表实验更难一些,要求学生在学好上一个作业的基础上才能有效完成。根据之前学生学习的效果来看,大部分能掌握,小部分同学有点跟风。这里采取的弥补措施是录制了教学视频,对于实在不能课堂上理解的同学,可以在课后学习教学视频。

备注

 


分课时教案23

知识单元名称

文件

课次

23

授课类型

理论课讨论课实验课习题课其他

学时

2

课程目标与要求

C语言文件实验教学的课程目标与要求如下:

课程目标:

  1. 掌握C语言文件的基本概念和特点,了解文件在程序中的应用场景。
  2. 学会使用C语言实现文件的读取和写入操作,包括文本文件和二进制文件。
  3. 理解C语言中文件指针的概念,掌握文件指针的使用方法。
  4. 掌握C语言中文件操作函数的使用方法,如fopenfclosefreadfwrite等。
  5. 通过实验案例和实际应用,了解文件在解决实际问题中的应用,培养学生的编程思维和实践能力。

课程要求:

  1. 掌握C语言文件的基本概念和特点,了解文件的打开、读写、关闭等操作方法。
  2. 学会使用C语言中的文件指针来进行文件操作,掌握文件指针的使用方法。
  3. 掌握C语言中文件操作函数的使用方法,如fopenfclosefreadfwrite等函数的使用方法。
  4. 掌握C语言中文件格式的转换方法,如文本文件和二进制文件之间的转换。
  5. 掌握C语言中文件加密和解密的方法,以及文件保护和恢复的方法。
  6. 能够独立思考和解决问题,具备良好的编程习惯和代码风格,能够编写高质量的代码。
  7. 能够利用C语言实现相关算法,解决实际问题,培养学生的编程思维和实践能力。

总之,C语言文件实验教学应该注重基本概念和特点的介绍、文件读取和写入操作的演示、文件指针的使用和错误避免、常用文件操作函数的使用方法和实际应用案例的实践操作等方面的教学内容,让学生全面掌握C语言文件的基本概念和操作方法,同时提高学生的编程思维和实践能力。

本单元重点

与难点内容

C语言的文件的实验教学的重点和难点可以总结如下:

重点:

  1. 文件和文件指针的概念和定义方法。
  2. 文件打开和关闭的概念及方法。
  3. 常用文件读写函数的使用方法。
  4. 文件指针的操作方法和应用场景。
  5. 文件的加密和解密方法及实现。
  6. 文件的保护和恢复方法及实现。

难点:

  1. 文件读写函数中参数的正确使用方法。
  2. 文件指针操作的正确理解和应用。
  3. 文件的加密和解密算法的选择和实现。
  4. 文件的保护和恢复策略的选择和实现。
  5. 文件操作中的注意事项的掌握和应用。

C语言的文件的实验教学中,需要重点讲解这些知识点,让学生全面掌握文件操作的方法和注意事项,同时通过实践操作提高学生的编程思维和实践能力。其中,难点问题需要教师进行深入的讲解和探讨,帮助学生理解并掌握正确的方法和策略,达到良好的教学效果。

课程思政

 

通过文件处理的学习,学生可以了解到计算机如何通过特定的指令和程序对文件进行读取、写入、删除等操作。这可以让学生更加深入地理解计算机的工作原理和操作方式,从而更好地认识和适应现代社会中的技术环境。

在进行文件处理的过程中,学生需要遵循一定的规则和步骤,比如文件的打开、读写、关闭等。这可以让学生认识到在处理问题时,需要有序、认真地按照既定的规则去操作,从而培养他们严谨、负责的态度。

通过文件处理的学习,学生可以了解到信息的重要性和价值。文件是信息的一种载体,而信息则是具有价值的资源。学生在进行文件处理的过程中,需要学会如何保护和管理信息,如何从大量的信息中筛选出有用的内容。这可以让学生更加重视信息的价值,并培养他们的信息素养。

 

教学过程设计:

教学方法及手段、课堂互动题设置、教学改革措施等

教学流程与课程阶段安排:

下面是一个可能的C语言文件操作的实验教学流程:

1、引入实验内容:介绍文件操作的概念和作用,说明学习文件操作的重要性和实际应用场景。

2、理论讲解:讲解文件的打开、读写、关闭等基本操作,介绍文件指针和文件访问模式。

3、示例演示:通过实例代码演示文件的创建、打开、读写和关闭操作,例如创建一个文本文件并在其中写入一些数据。

4、学生操作:

学生根据实验指导书或实验指导PPT,完成文件操作的基本操作和应用。

学生设计一个程序,创建文件并进行相关操作,例如读取文件内容、写入新的数据等。

学生编写代码,使用文件指针来实现对文件的打开、读写和关闭操作。

学生通过输入、输出实现对文件的动态操作。

5、实验讨论:学生在实验过程中遇到的问题和难点进行讨论,教师解答疑惑,并指导学生在实验中思考问题的解决方法。

6、实验总结:学生根据实验结果和体会,撰写实验报告,总结实验过程和心得体会。要求学生阐述文件操作在实际问题中的应用和意义。

7、实验评估:教师对学生实验报告和代码实现进行评估和批改,给予反馈和建议。

在整个实验教学流程中,教师应该注重以下几点:

实验指导细致:提供详细的实验指导书或实验指导PPT,包括实验要求、步骤、示例代码等,方便学生进行实验操作。

实验问题引导:在实验过程中,教师可以引导学生思考和解决问题的方法,培养学生的自主学习和问题解决能力。

实验讨论与交流:鼓励学生在实验过程中进行讨论和交流,分享实验经验和解决问题的方法,促进学生之间的互动与合作。

通过以上的教学流程设计,可以帮助学生深入理解和掌握C语言文件操作的概念和基本操作,提高他们的编程能力和问题解决能力。同时,通过实验讨论和交流,培养学生的合作意识和创新精神,促进学生的全面发展。

作业与

思考题设置

题目1:把字符串 Hello World! 保存到磁盘文件f1.txt中。

题目2:从文件中读取数据。

学习效果、学生反馈、反思改进措施等

本章内容较难,历届学生掌握得都不太好,不过这个部分的内容不会进入期末机考,也不会影响后续程序设计(二)和(三),因此我采取的措施是,这章内容本学期大概了解一下即可,然后在寒假布置学生完成一个与文件相关的系统,就可以弥补知识的缺失。

备注

 

 

1