清华大学计算机程序设计基础-12
《C语言程序设计》学习指南

学习指南一、学习资源与学习方法C语言程序设计是计算机专业的一门基础课程,本课程主要是培养学生利用计算机处理问题的思维方式和结构化程序设计的基本方法。
掌握C语言进行程序设计,对于理解程序设计的基本方法,以及日后学习计算机学科的其他知识内容都是至关重要的。
在资源建设上,根据学生的学习条件差异和学习基础的差异,提供多种形式的学习资源,如教师全程授课视频、期末辅导光盘、网络交互平台、教材和参考资料。
还提供了一些在深度和广度上有一定扩展的资源,如在每一章中都提供了扩展知识供有能力的学生学习,在一些知识点链接了一些课外阅读资源,从深度和广度上满足不同层次学生的不同需求。
(1)立体化教材及学习资源建设和研制了以国家十一五规划教材为基础,知识点导学系统、电子教案、全程课程录像、网络课件、在线测试、考试系统和试题库、资源库、网上教学支撑软件平台等丰富的立体化教学资源,它们各自自成体系又相互关联,各种媒体互相补充,充分发挥了各自的优势,满足了远程计算机专业学习者的需求。
学习资源全部放在教学网站上,实现资源共享,为每个学生提供一个网络帐号,实现网上交互答疑和交流。
尤其是资源库应用系统,将已有的各种数字媒体资源融合在一起,为学生提供直观的导学;同时还为教师提供教学帮助。
学生可以通过资源库的信息索引快速找到要学习知识点的所有资源列表,从中选择所需媒体。
(2)基于课程知识体系的视频讲授结合网络教育的教学对象为成人、学习方式为业余学习的特点,网络学习者学习时间不连贯、不固定的特征,网络课件的设计都是以知识点为基本单元,采用化整为零的思想,按照课程的每个章、单元、知识点进行课程视频的录制,每个知识点设计10~20分钟左右的时长,保证学习者能够利用零散时间学习。
(3)增加交互性和案例教学考虑到远程教学师生分离,学生以自学为主,因此在教学资源设计上注意增加交互性。
例如,专门做了媒体资源库,包括大量动画演示和视频录像,使课件更加生动。
清华大学计算机科学与技术专业课程表

信息学院本科指导性教学计划(公共课)第一学年秋季学期课号课程名学分周学时考试或考查说明及主要先修课10610022思想道德修养22考查10640433英语选修22考查10420874一元微积分44考试10420684几何与代数(1)44考试20240013离散数学(1)33考试20230093计算机语言与程序计33考试30250023计算机语言与程序计33考试30240233程序设计基础33考试四选一34100063程序设计基础33考试30210041信息科学技术概论11考查春季学期00501622毛泽东思想概论32考试10640443英语选修22考查10420884多元微积分44考试一元微积分10420692几何与代数(2)22考试几何与代数(1) 二选一10420913几何与代数(2)33考试几何与代数(1)10430484大学物理B(1)44考试一元微积分10430344大学物理(1)(英)44考试一元微积分三选一10430525大学物理A(1)55考试一元微积分20220214电路原理44考试20220221电路原理实验11考查第二学年秋季学期课号课程名学分周学考试或考查说明及主要先修课10420753高等微积分22考试一元微积分10420252复变函数引论22考试一元微积分二选一复变函数33考试一元微积分10430535大学物理A(2)55考试大学物理A(2)20250093电子技术基础33考试电路原理二选一30230563数字逻辑电路33考试电路原理电子技术基础实验22考查跨学期课,本学期完成1学分10420262数理方程引论22考查不修该课程20130342工程图学基础22考试春季学期10420243随机数学方法33考试二选一10420803概率论与数理统计33考试数字逻辑电路33考试电路原理电子技术基础电子技术系列实验22考查跨学期课,本学期完成1学分30230104信号与系统44考试微积分电路复二选一40250144信号与系统分析44考试变几何与代数40240013系统分析与控制33考试微积分电路复二选一40250074自动控制理论(1)44考试变几何与代数3025数据结构33考试四选一34100044数据结构与算法44考试微电子学导论33考试半导体器件与集成电路33考试三选一集成电路原理与设计33考试物理、生物类课程≥2220240023离散数学(2)(选)33考试夏季学期电子技术课程设计33考查电子技术基础Java语言(选)22考查计算机语言与程序设计二选一语言(选)22考查计算机语言与程序设计第三学年秋季学期课号课程名学分周学时考试或考查说明及主要先修课汇编语言程序设计33考试40240354计算机组成原理44考试汇编语言程序设计数字电子技术基础40240432形式语言与自动机22考试3024信号处理原理44考试微积分电路复变几何与代以下专业方向课选修不少于3学分30240262数据库系统原理22考试数据结构30240042人工智能导论22考试离散数学30240222VLSI设计导论22考查数字逻辑与数字电路网络编程与计算技术22考查40240642现代控制技术22考查自动控制理论(1)春季学期10610053马克思主义哲学原理32考试30240243操作系统33考试计算机组成原理40240144编译原理33考试数据结构、汇编语言程序设计40240433计算机系统结构33考试计算机组成原理20240433数值分析(选)或同组其它数学类课33考试微积分、线性代数体育专项(2)以下专业方向课选修不少于3学分40240412数字系统设计自动化22考查数字逻辑与数字电路40240392多媒体技术基础及应用22考查40240452模式识别22考查概率与统计初等数论及其应用22考试30240253微计算机技术33考试计算机组成原理、汇编语言程序设计40240422计算机图形学基础22考查数据结构30230313通信电路33考试电子技术基础数字逻辑电路30240163软件工程33考试数据结构第四学年秋季学期课号课程名学分周学时考试或考查说明及主要先修课40240243计算机网络33考试必修操作系统30210033通信原理33考试必修二选一30230343现代通信原理33考试必修通信电路计算机网络专题训练11B34:专业专题训练≥4≥4体育专项(3)人文选修课≥6≥6见全校性选修课选课手册以下专业方向课选修不少于4学分30240192高性能计算导论22考查22考查﹡模式识别基础40240062数字图像处理22考查22考查40240362电子商务平台及核心技术33考试40240472计算机实时图形和动画技术40240372信息检索22考查数据结构40240402虚拟现实22考查40240492数据挖掘22考试40240502软件开发方法22考试嵌入式系统33考试操作系统合计≥21≥21 春季学期综合论文训练1015周必修体育专项(4)选修注:带*者为院平台课,可在信息学院范围内选修不低于所列学分的同类课程计算机科学与技术专业核心课程6 门,17学分课号课程名学分先修要求40240433计算机系统结构3(春)操作系统30240243操作系统3(春)计算机组成原理,数据结构40240144编译原理4(春)数据结构40240243计算机网络3(秋)操作系统40240432形式语言与自动机2(秋)离散数学(1)20240103汇编语言程序设计3(秋)计算机科学与技术专业限选课不少于11学分,其中:计算机系统结构-----计算机科学与技术专业选修不少于2学分课号课程名学分先修要求30240253微计算机技术3汇编语言程序设计嵌入式系统3计算机组成原理操作系统40240412数字系统设计自动化2数字逻辑电路30240222VLSI设计导论2数字逻辑电路计算机软件与理论---计算机科学与技术专业选修不少于2学分课号课程名学分先修要求初等数论及其应用2离散数学30240192高性能计算导论2(英语讲课)计算机系统结构30240262数据库系统原理2数据结构网络编程与计算技术2计算机组成原理软件开发方法2C++ 数据结构软件工程30240134软件工程3C++数据结构计算机应用技术-----计算机科学与技术专业选修不少于2学分课号课程名学分先修要求30240042人工智能导论2离散数学40240452模式识别2几何与代数概率与统计人工智能导论40240062数字图象处理2概率与统计程序设计基础40240392多媒体技术基础及应用2信号处理原理40240422计算机图形学基础2数据结构40240472计算机实时图形和动画2几何与代数技术40240402虚拟现实2计算机组成原理40240462现代控制技术2系统分析与控制40240372信息检索2数据结构40240362电子商务平台及核心技术2数据结构JAVA程序设计数据库系统原理40240492数据挖掘2数据库系统原理计算机科学与技术专业专题训练不少于5学分,其中计算机网络专题训练为必选课号课程名学分先修要求计算机网络专题训练1(秋)操作系统专题训练2(秋)编译原理专题训练2(秋)数据库专题训练2(秋)计算机科学与技术专业的任选课程课号课程名学分先修要求30240253微计算机技术3汇编语言程序设计初等数论及其应用2离散数学网络编程与计算技术2计算机组成原理30240134软件工程3C++数据结构30240042人工智能导论2离散数学40240452模式识别2几何与代数概率与统计人工智能导论40240062数字图象处理2概率与统计程序设计基础40240392多媒体技术基础及应用2信号处理原理40240422计算机图形学基础2数据结构40240472计算机实时图形和动画技术2几何与代数40240402虚拟现实2计算机组成原理40240462现代控制技术2系统分析与控制40240372信息检索2数据结构40240362电子商务平台及核心技术2数据结构JAVA程序设计数据库系统原理40240492数据挖掘2数据库系统原理计算机科学与技术专业 业务培养目标:本专业培养具有良好的科学素养,系统地、较好地掌握计算机科学与技术包括计算机硬件、软件与应用的基本理论、基本知识和基本技能与方法,能在科研部门、教育单位、企业、事业、技术和行政管理部门等单位从事计算机教学、科学研究和应用的计算机科学与技术学科的高级专门科学技术人才。
清华大学“C语言程序设计”期末试卷

样例: 输入 1 2 -4 0 32 1 -2 2 输出 3 -4+x^2
第三部分
综合问题 (任选一题完成,共 10 分)
3-A. 代数式处理 ( 3-A.cpp ) 读入一个仅含变量 x 的代数式和 x 的值, 输出该式在 x=x0 处的函数值和导函数的值。 表达式中除了字母 x 和+, -, *, /, (, )外没有其他字符
试卷说明: 考试形式为上机考试,考试时间总计 3 小时 请在 C 盘根目录下建立一个子目录,以自己的学号命名,并将所有的程序存入 此目录。如,学号为 010000 的同学,需要建立目录 C:\010000,并将程序存入 此目录。按照题目名称中指定文件名保存你的程序,并保存一个备份,以免程 序被意外破坏。例如,第一题应当保存一个叫做 1-1bak.cpp 的文件。 3-A 和 3-B 最多只能选择一道题目。如果同时存在 3-A.cpp 和 3-B.cpp,我们将 随机选择一道题目进行评分。 所有题目采用键盘输入和屏幕输出,你的程序不得访问任何文件。 评分时将查看源程序,请严格遵守题目中给出的限制。
输入: 先读入一个字符串,字符总数不超过 100 并且不会有格式错误的代数式。 然后读入一实数作为 x0 的值。
输出:
7
包含两个实数,分别是函数值和导函数值。把所得结果保留 2 位小数输出。如果出 现分母为 0 的情况则只输出一个字符串"error"。
样例: 输入 x*(x+x/x) 100 输出 10100.00 201.00
输入: 第 1 行为一个整数 t,表示任务的类型,t=1 表示做加法,t=2 表示做减法。 第 2 行为 1 个整数 n,表示需要计算的数的位数。 以后 n 行,每行为 2 个数字,分别是同一位上的被加数和加数(当 t=1 时);或被 减数和减数(当 t=2 时)。从第 3 行起,位数依次由高到低,第 3 行为最高位,第 n+2 行为最低位。
清华大学计算机系列教材.

数据的结构的表示:
顺序存储结构
链式存储结构 顺序映象——是借助元素在存储器中的相对位置来表示数据元素之 间的逻辑关系。 非顺序映象——是借助指针表示数据元素之间的逻辑关系。 例子:表示复数z1=3.0-2.3i和z2=-0.7+4.8i … … 0415 -2.3 0300 3.0 -2.3 0302 … … 0632 -0.7 3.0 0611 4.8 0634 0613 0415 … …
/ mod
18
逻辑结构的描述——二元组(D,S) 数据结构
(存储结构+操作)的描述——高级语言中的“数据类型
定义 抽象数据 类型ADT 表示 实现
——三元组(D,S,P)
19
抽象数据类型的形式定义-----三元组: (D,S,P) D – 数据对象; S – D上的关系; P – 对D的基本操作集;
24
IsDescending(T) 初始条件: 三元组T已经存在。 操作结果: 如果三元组T的三个元素按降序排列,则 返回TRUE; 否则返回FALSE。 Max(T,&e) 初始条件: 三元组T已经存在,。 操作结果: 用e返回三元组T的最大值。 Min(T,&e) 初始条件: 三元组T已经存在,。 操作结果: 用e返回三元组T的最小值。
S01 L01 S01 S02 …
001,… 003,…
… … … … … L
S …
高等数学 001,003,… 理论力学 002,…
002,…
001,003,…
线性代数 004,…
…
栾汝书 004,…
计算机处理的对象之间存在着一种简单的线性关系,称为线性 7 数据结构。
例子2:计算机和人对奕问题。 × × × × × ×
Visual Basic程序设计基础教程

1.3.5 常用工作窗口
1.工程(Project)资源管理器窗口
工程是指用于创建一个应用程序的文件的集合。工程 资源管理器列出了当前工程中的窗体和模块
这些文件包括:窗体文件 (.FRM)、标准模块文件 (.BAS)、类模块文件(.CLS)、 工程文件(.VBP)、工程组文件 (.VBG)、资源文件(.RES)
4. 编写程序代码(事件响应代码)
对象名称
Command1 Command2 Command3 Form
事件
单击(Click) 单击(Click) 单击(Click) 装入(Load)
响应
将窗体的背景设置为白色 将窗体中文本的颜色设置为红色 结束程序运行 显示“VB程序设计示例”
双击
5. 保存程序
如:工程1—Microsoft Visual Basic(设计) 方括号中的“设计”表示处于设计阶段,随着工作状态
的不同,括号内的信息可能是:“运行”,表示处于程序运 行阶段;“Break”表示处于程序中断阶段。这三个阶段也称 为设计模式、运行模式和中断模式。
1. 设计模式:可进行用户界面的设计和代码的编制。 2. 运行模式:运行应用程序,不可编辑代码和界面。 3. 中断模式:中断运行,可编辑代码,但不可编辑界面。
“工程资源管理器窗口”中 还有三个按钮:
• “查看代码”:用于查看相应文件的程序代码。 • “查看对象”:用于查看相应的窗体。 • “切换文件夹”:用于查看文件所在的文件夹。
1.3.5 常用工作窗口
窗体设计器窗口 它是设计程序时主要操作的窗口,设计程序的第一步,
就是在该窗口中绘制各种控件,窗口显示的也就是程序运行 的界面。
1.1.1 基本术语 1.1.2 程序设计语言 1.1.3 程序的基本结构 1.1.4 程序设计的一般步骤
清华大学计算机专业核心课程

GMT+8, 2010-8-6 22:43, Processed in 0.453591 second(s), 12 queries. Powered by
Discuz! X1
© 2008-2010 家里蹲大学.
40240144编译原理4(春)数据结构
40240243计算机网络3(秋)操作系统
40240432形式语言与自动机2(秋)离散数学(1)
20240103汇编语言程序设计3(秋)
计算机科学与技术专业限选课不少于11学分,其中:
计算机系统结构-----计算机科学与技术专业选修不少于2学分
计算机网络专题训练1(秋)
操作系统专题训练2(秋)
编译原理专题训练2(秋)
数据库专题训练2(秋)
计算机科学与技术专业的任选课程
课号课程名学分先修要求
30240253微计算机技术3汇编语言程序设计
80240193计算机网络前沿研究徐恪3
80240183网格计算都志辉3
80240033计算智能及机器人学孙富春3
研究生院已批准课程
80240173下一代互联网徐明伟3
80240312小波分析及其工程应用孙延奎2
初等数论及其应用 2离散数学
网络编程与计算技术2计算机组成原理
30240134软件工程3C++ 数据结构
30240042人工智能导论2离散数学
40240452模式识别2几何与代数 概率与统计 人工智能导论
40240062数字图象处理2概率与统计 程序设计基础
30240134软件工程3C++ 数据结构
最新C++语言程序答案第四版清华大学汇总

C++语言程序答案第四版清华大学第一章概述1-1 简述计算机程序设计语言的发展历程。
解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。
1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。
面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。
通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。
因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
C++语言是目前应用最广的面向对象的编程语言。
1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。
结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
ch12-Java Web程序设计(第3版)-微课视频版-郭克华-清华大学出版社

常见的AJAX框架
AJAX 框架
✓ Bindows,2003 年发布,网址是: 。Bindows 是一个软件 开发包,通过强力联合 DHTML、JavaScript、 CSS 和 XML 等技术,能生成高度交互的互联网 应用程序,成为桌面应用程序的强有力对手
第12章 AJAX
本课教学内容
AJAX概述 AJAX开发 AJAX简单案例
AJAX 概述
问题
能否在登录提交时,浏览器界面不刷新,提交改为在后台 异步进行,当服务器端验证完毕,将结果在界面上原来登 录表单所在的位置显示出来?
答案:使用AJAX
AJAX 概述
异步(Asynchronous)的概念和同步相对 (Synchronous) 。当一个异步过程调用发出后, 调用者不需要立刻得到结果,可以继续做自 己的事情,等到过程调用完毕,再通过回调 函数通知调用方。而同步情况下,调用方必 须等待对方得到结果,才能继续运行
AJAX 开发—API解释
常见的 readyState 属性值是:
✓ 0:未初始化状态,对象已创建,尚未调 用 open()
✓ 1:已初始化状态,调用 open()方法以后
AJAX 开发—API解释
常见的 readyState 属性值是:
✓ 2:发送数据状态,调用 send()方法以后 ✓ 3:数据传送中状态,已经接到部分数据,
AJAX 简单案例
做一个简单的登录界面,如果登录成功(如 guokehua登录成功),界面跳转到 loginSuccess.jsp;如果登录失败,跳转到 loginFail.jsp。
AJAX 简单案例
三个界面如下:
AJAX 简单案例
*具体案例代码详见课本
需要注意的问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[]
{}
)
]
((
((
(
[[
[[
[
[
56
78
9
10
接收1时,就等待第10 ,然而等来的是2,2又等9,…全部配 套后,编译通过,否则出现错误提示。
每读入一个括号,若是右括号,则使栈顶的最急迫的期待 得以消除,若是不合法的情况,如是左括号,则作为一个新的 ,更急迫的期待压入栈中。
可编辑
16
行编辑程序
简单的行编辑器 用户编辑的特点: 的功能是接收用户从终 • 输入时不能不出错 端输入的程序或者数据 • 若输入一个字即送入用户数据区,显 并存入用户的数据区。 然是不恰当的最好是一行输入一次数据
可编辑
4
栈的基本操作
空栈
Top为栈顶指针,随 着不同操作而移动
top bottom
top bottom 增加元素
top
bottom
可编辑
删除元素
top bottom
5
12.2 栈的实现
栈是一种特殊的表,因此凡是可 以用来实现表的数据结构都可以用 来实现栈。
可编辑
6
12.2.1 栈的数组实现
#define MAXLENGTH 256
可编辑
10
12.3进制转换--栈的应用实例
(1) 算法
可编辑
11
12.3.2 算法的实现
例:(15)10=(1111)2
#include <stdio.h> #include <stdlib.h> #define MAXLENGTH 32 #define TYPE int struct TStack //定义栈结构 { int top;
>next; }
}(4) 向栈顶插入一个元素的操作
void Push(Stack s, TYPE element)
{ Node * node;
node = malloc(sizeof(Node));
node->field = element;
node->next = s;
s = node; }
(5) 判断是否为空栈的操作 int Empty(Stack s) { return (s == NULL); }
#define TYPE int struct TStack { int top;
TYPE element[MAXLENGTH]; }; typedef struct TStack Stack;
可编辑
7
12.2.2 栈的链式存储实现
链式存储栈的类型说明如下: #define TYPE int //定义任意类型的栈结构 struct TNode {TYPE field; //TYPE泛指任意可能的类型 struct TNode * next; }; typedef struct TNode * Stack;
//定义一个Stack栈
可编辑
8
(1) 清空一个栈的操作 void ClearStack(Stack s) { Node * p = s;
while(p != NULL) { s = s->next; free(p); p = s; }
s = NULL; }
(2) 获取栈顶元素的操作
void GetTop(Stack s, TYPE * element)
while(!Empty(s))
{ Pop(&s,&dec);
printf("%d",dec);}
printf("\n");
}
可编辑
15
括号匹配的检验
在编译C语言的源程序时,要对括号进行配对检查,如:
[( [ ] [ ] { } ) ] 1 2 3 4 5 6 7 8 9 10
[
]
(
[
1、2、3 4
return;
else
{ s->top++;
s->element[s->top]=element;
} 可编辑
14
void conversion()
//进制转换
{Stack s;
int dec;
ClearStack(&s);
scanf("%d",&dec);
while( dec > 0)
{ Push(&s, dec % 2); dec=dec/2;}
else return 0; }
//判断是否 return 1;
void GetTop(Stack s, TYPE * element) //获取栈顶元素
{ if(Empty(s)) element = NULL; else可编*辑element=s.element[s.top]; 13
void Pop(Stack * s, TYPE * element) //获取栈顶元素但同时删除该元素
{
if(Empty(s)) element = NULL;
else *element = s->element;
}
可编辑
9
(3) 获取栈顶元素但同时删除该元素
void Pop(Stack s, TYPE * element)
{ if (Empty(s)) element = NULL;
else { *element = s->element; s = s-
TYPE element[MAXLENGTH]; }; typedef struct TStack Stack;
可编辑
12
void ClearStack(Stack *s) 栈 { s->top = -1; }
//清空
int Empty(Stack s) 为空栈 { if (s.top == -1)
{if(Empty(*s) )element = NULL; else { *element = s->element[s->top]; s-
>top--; } }
void Push(Stack * s, TYPE element)
//向栈顶插入一个元素
{ if(s->top == MAXLENGTH-1)
第12章 栈及其应用
可编辑
1
本章主要内容
• 栈的定义及其基本操作 • 栈的实现 • 进制转换--栈的应用实例
可编辑
2
12.1 栈的定义及其基本操作
栈是一种只允许在栈顶进行插入和删除 操作的线性表,可用数组或线性表来实现
出栈
入栈
栈顶
an an-1
a1
栈底
a0
可编辑
3
栈的基本操作有: l ClearStack(&S):清空一个栈; l GetTop(S, &e):获取栈顶元素(不 删除该栈顶元素); Pop(S, &e):获取栈顶元素但同时 删除该元素; Push(&S, e):向栈顶插入一个元素; Empty(S):判断是否为空栈的函数。 当S为空栈时,返回true,否则返回 false