c谭浩强清华大学出版社
合集下载
《C语言程序设计》第二版(谭浩强)-4-7章课后习题答案-清华大学出版社

《C语言程序设计》第二版(谭浩强)-4-7章课后习题答案-清华大学出版社4-5原题:打印出下题的结果main(){int a=5,b=7;float x=67.8564,y=-789.124;char c='A';long n=1234567;unsigned u=65535;printf("%d%d\n",a,b);printf("%3d%3d\n",a,b);printf("%f,%f\n",x,y);printf("%-10f,%-10f\n",x,y);printf("%8.2f,%8.2f,%4f,%4f,%3f,%3f\n",x,y,x,y,x,y);printf("%e,%10.2e\n",x,y);printf("%c,%d,%o,%x\n",c,c,c,c);printf("%ld,%lo,%x\n",n,n,n);printf("%u,%o,%x,%d\n",u,u,u,u);printf("%s,%5.3s\n","COMPUTER","COMPUTER");}结果:575 767.856400,-789.12402367.856400 ,-789.12402367.86, -789.12,67.856400,-789.124023,67.856400,-789.1240236.78564e+01, -7.9e+02A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER, COM4-6原题:用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。
谭浩强教授著、清华大学出版社出版的《C程序设计》

a[1][0]=4 a[1][1]=5 a[1][2]=6
说明:
⑴ 初始化时,可以只对部分数组元素初始 化,未被初始化的数组元素将自动赋 0 。
例如 int a[2][3]={{5,6},{7,8}}; 得到的数组为: 5 6 0 7 8 0 int a[2][3]={5,6,7,8}; 得到的数组为: 5 6 7 8 0 0
用数组来解决问题: main() { int w[10]; /* 定义 1 个整型数组存放体重 */ int t, i; for( i=0; i<10; i++ ) scanf( "%d", &w[i] ); t=0; for(i=0; i<10; i++ ) t = t + w[i]; t = t/10; for( i=0; i<10; i++ ) if( w[i] < t )printf( "%d\n", w[i] ); }
for(i=0 ; i<10 ; i++) scanf(“%d”,&a[i]); for(j=0 ; j<9 ; j++) /* 控制9轮排序 */ {for(i=0 ;i<=9-j ; i++) /* 每轮排序比较次数*/ if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; }} for(i=1 ; i<=10 ; i++)
声明之后,谁代表整个数组? int a[10]? a[10]? a? 数组中元素有哪些? a[1]到 a[10]? a[0]到 a[9]? 元素在数组中的位置,称为下标。数组的下标从0开始。
《谭浩强《C程序设计》(第4版)笔记和课后习题详解》读书笔记模板

第11章常见错误分 析
1.1复习笔记 1.2课后习题详解
2.1复习笔记 2.2课后习题详解
3.1复习笔记 3.2课后习题详解
4.1复习笔记 4.2课后习题详解
5.1复习笔记 5.2课后习题详解
6.1复习笔记 6.2课后习题详解
7.1复习笔记 7.2课后习题详解
8.1复习笔记 8.2课后习题详解
作者介绍
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,暂无该书作者的介绍。
谢谢观看
目录分析
第2章算法——程 序的灵魂
第1章程序设计和C 语言
第3章最简单的C程 序设计——顺序程
序设计
1
第4章选择结构 程序设计
2
第5章循环结构 程序设计
3
第6章利用数组 处理批量数据
4 第7章用函数实
现模块化程序 设计
5
第8章善于利用 指针
第10章对文件的输 入输出
第9章用户自己建 立数据类型
9.1复习笔记 9.2课后习题详解
10.1复习笔记 10.2课后习题详解
11.1复习笔记 11.2课后习题详解
读书笔记
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,可以替换为自己的心得。
精彩摘录
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,可以替换为自己的精彩内容 摘录。
谭浩强《C程序设计》(第4版)笔记 和课后习题详解
读书笔记模板
01 思维导图
03 目录分析 05 精彩摘录
目录
02 内容摘要 04 读书笔记 06 作者介绍
思维导图
本书关键字分析思维导图
习题
主教材:谭浩强,《 C程序设计》(第三版),清华大学出...1479最全版

# include <stdio.h> /* 编译预处理命令 */ int main(void) /* 定义主函数main */ { printf("Hello World!\n"); return 0; /* 返回1个整数0 */ }
2018/12/10
实验1: 熟悉上机环境 ——键盘输入与屏幕输出练习
要使下面程序的输出语句在屏幕上显示a,b,c,则如 何从键盘输入正确的数据格式?
#include <stdio.h> main() { char a,b; int c; scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%c\n",a,b,c); }2018/12/10
实验十四、指针编程练习
实验十五、指针编程练习 实验十六、结构体编程练习
2018/12/10
1. 2.
1. 2. 1.
查找英文月名 求最大值
按序输出3个整数 求字符串长度 在屏幕上模拟显示一个数字式时钟
实验1: 熟悉上机环境 ——在屏幕上显示一个短句
在屏幕上显示一个短句“Hello World!”。
实验2: 顺序结构编程练习 ——计算定期存款本利之和
设银行定期存款的年利率rate为2.25%,并已 知存款期为n年,存款本金为capital元,试编 程计算n年后的本利之和deposit。 要求定期存款的年利率rate、存款期n和存款 本金capital均由键盘输入。
2018/12/10
实验2: 顺序结构编程练习 ——计算定期存款本利之和
2018/12/10
实验内容
实验内容 实验九、函数编程练习 实验十、函数编程练习 实验十一、函数编程练习 实验十二、一维数组和函数综合编程练习 实验十三、预处理命令 1. 2. 1. 2. 1. 2. 1. 1. 2. 实验题目 求素数 将二维数组转置 连接字符串 进制转换 将字符串反序存放并输出 加法考试题 学生成绩统计 求两整数相除的余数 闰年的判断
C 面向对象程序设计(2010年清华大学出版社出版的图书)

除了发表过大量的学术论文,Savitch教授还编写了多部非常畅销的计算机教材。
第1章计算机和C++编程入门 概述 1.1计算机系统 1.2编程和问题求解 1.3 C++入门 1.4测试和调试 小结 自测题答案 编程项目 第2章 C++基础知识 概述
图书五
内容简介
图书目录
《C++面向对象程序设计》从实际应用出发,系统地介绍C++面向对象程序设计的原理、方法和技巧。重点突 出,叙述清楚,深入浅出,论述详尽,使读者既能深刻领会面向对象程序设计的思想,了解面向对象程序设计的 特征,又能掌握C++语言的编程与应用。全书共8章,主要包括:面向对象程序设计语言概述、C++语言基础知识、 类和对象、对象成员和友员、继承和派生、多态性和运算符重载、模板、C++的输入/输出流。在每一章的知识点 后面,都给出了相应的程序设计实例,这些实例不仅有助于读者巩固知识点的内容,而且更有助于读者创新能力 的培养。
图书一
内容提要
目录
C++面向对象程序设计本书介绍了C++面向对象程序设计的基本知识和编程方法,以及C++面向对象的基本特征。 针对初学者的特点,本书力求通过大量实例、习题和上机实验题,以通俗易懂的语言讲解复杂的概念和方法,使读 者能深刻理解和领会面向对象程序设计的特点和风格,掌握其方法和要领,以期帮助读者尽快地迈入面向对象程 序设计的大门。
Savitch教授的研究领域包括复杂性理论、形式语言理论、计算语言学和计算机教材的开发。他因为对复杂 性理论所做的贡献而声名远扬,其中包括他提出的第一个完整语言(complete1anguage)范例。这个奠基性的
第1章计算机和C++编程入门 概述 1.1计算机系统 1.2编程和问题求解 1.3 C++入门 1.4测试和调试 小结 自测题答案 编程项目 第2章 C++基础知识 概述
图书五
内容简介
图书目录
《C++面向对象程序设计》从实际应用出发,系统地介绍C++面向对象程序设计的原理、方法和技巧。重点突 出,叙述清楚,深入浅出,论述详尽,使读者既能深刻领会面向对象程序设计的思想,了解面向对象程序设计的 特征,又能掌握C++语言的编程与应用。全书共8章,主要包括:面向对象程序设计语言概述、C++语言基础知识、 类和对象、对象成员和友员、继承和派生、多态性和运算符重载、模板、C++的输入/输出流。在每一章的知识点 后面,都给出了相应的程序设计实例,这些实例不仅有助于读者巩固知识点的内容,而且更有助于读者创新能力 的培养。
图书一
内容提要
目录
C++面向对象程序设计本书介绍了C++面向对象程序设计的基本知识和编程方法,以及C++面向对象的基本特征。 针对初学者的特点,本书力求通过大量实例、习题和上机实验题,以通俗易懂的语言讲解复杂的概念和方法,使读 者能深刻理解和领会面向对象程序设计的特点和风格,掌握其方法和要领,以期帮助读者尽快地迈入面向对象程 序设计的大门。
Savitch教授的研究领域包括复杂性理论、形式语言理论、计算语言学和计算机教材的开发。他因为对复杂 性理论所做的贡献而声名远扬,其中包括他提出的第一个完整语言(complete1anguage)范例。这个奠基性的
C语言程序设计第二版谭浩强

C语言程序设计
第一章 C语言概述
C语言发展过程
产生背景 产生过程
时间:1972~1973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie ALGOL 60→CPL语言→BCPL→B语言,写UNIX系统
C标准
9种控制语句: if( )~else~ for( )~ while( )~ do~while( ) continue break switch goto return
<
C语言程序设计
第一章 C语言概述
表1.1 C语言与Pascal语言比较
C语言 PASCAL语言 含义
{
}
BEGIN END
IF (e) THEN S; VAR i :INTEGER; VAR a:ARRAY[1..10] OF INTEGER; FUNCTION f():INTEGER; VAR P: INTEGER; i=i+2;
<
>
C语言程序设计
第一章 C语言概述
C语言结构特点
函数与主函数
程序由一个或多个函数组成 必须有且只能有一个主函数main(),可以放在程序中任一 位置 程序执行从main开始,在main中结束,其它函数通过嵌 套调用得以执行。 C程序由语句组成 用“;”作为语句终止符 /* */为注释,不能嵌套 不产生编译代码
通过表1.1 我们可以得出结论:C比 Pascal 简练,因此源程序更短,编程效率高。
<
C语言程序设计
第一章 C语言概述
C语言运算符丰富(附录C)
34种运算符: 算术运算符:+ - * / % ++ -关系运算符:< <= == > >= != 逻辑运算符:! && || 位运算符 :<< >> ~ | ^ & 赋值运算符:= 及其扩展 条件运算符:?: 逗号运算符:, 指针运算符:* & 求字节数 :sizeof 强制类型转换:(类型) 分量运算符:. -> 下标运算符:[] 其它 :( ) <
谭浩强C程序设计第一章简介清华大学出版社

int num; setdata() { cin >> num; cin >> score; } void display() { cout << "num=" << num << endl;
cout << "score=" << score << endl;
C++的特点主要表现在两方面:
C++
语 言 的 特 点
全面兼容C 很多用C编写的库函数和应用程序都可以为
C++所用。
支持面向对象的方法 通过类和对象的概念把数据和对数据的操作
封装在一起,通过派生、继承、重载和多态性等 特征实现了软件重用和程序自动生成,使得大型 复杂软件的构造和维护变得更加有效和容易。
东北财经大学津桥商学院 王浩丽 2010年8月
第1章 C++简介
1.1 C++ 的起源及特点 1.2 简单的C++ 程序 1.3 C++ 程序开发与运行的过程
东北财经大学津桥商学院 王浩丽 2010年8月
1.1 C++的起源及特点
很多局限:
类型检查机制相对较弱 几乎没有支持代码重用的语言结构 不适合开发大型程序 不支持面向对象的程序设计
if (a>c) if (b>c) //a>b>c cout << a << b << c << endl; else //a>c>b cout << a << c << b << endl;
cout << "score=" << score << endl;
C++的特点主要表现在两方面:
C++
语 言 的 特 点
全面兼容C 很多用C编写的库函数和应用程序都可以为
C++所用。
支持面向对象的方法 通过类和对象的概念把数据和对数据的操作
封装在一起,通过派生、继承、重载和多态性等 特征实现了软件重用和程序自动生成,使得大型 复杂软件的构造和维护变得更加有效和容易。
东北财经大学津桥商学院 王浩丽 2010年8月
第1章 C++简介
1.1 C++ 的起源及特点 1.2 简单的C++ 程序 1.3 C++ 程序开发与运行的过程
东北财经大学津桥商学院 王浩丽 2010年8月
1.1 C++的起源及特点
很多局限:
类型检查机制相对较弱 几乎没有支持代码重用的语言结构 不适合开发大型程序 不支持面向对象的程序设计
if (a>c) if (b>c) //a>b>c cout << a << b << c << endl; else //a>c>b cout << a << c << b << endl;
C语言程序设计(第三版)_谭浩强(3)

例如:f = 2.45678 * 4523.65
系统先把2.45678和4523.65作为双精度数,然后进行相乘的运算,得到 的乘也是一个双精度数。最后取其前7位赋给浮点型变量f。如是在数的 后面加字母f或F(如1.65f, 654.87F),这样编译系统就会把它们按单 精度(32位)处理。
§3.5字符型数据
§ 3.1 C的数据类型
C语言提供了以下一些数据类型。
数据类型
基本类型
构造类型 指针类型
整型 int
字符型 char 单精度实型
实型(浮点型)
float
数组类型
双精度实型
double
结构类型 struct
联合类型 union
枚举类型 enum
空类型(无值类型) void
§3.2 常量与变量3.2. Nhomakorabea 常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量 常量区分为不同的类型:
total=num * PRICE; printf(″total=%d\n″,total); } 说• 明说:明用:程一如序个再中标用用识赋#符d值代e语f表in句e一给命个P令常R行IC量定E的义,称PR为IC符E号代常表量常,量即3以0,标此识后符凡形在式本
• 文出P件现R中的IC出常E=现量40的。; 符PR号IC常/E*都量错代的误表值,3在不0,其能可作给以用符和域号常(常量在量一本赋样例值进中。行为运主算函数)内不能 改变,也不能再被赋值。
类型 float double型 long double
位数 32 64 128
数的范围 10-37 ~ 1038 10-307~10308 10-4931~104932
有效数字 6~7 位 15~16位 18~19位
系统先把2.45678和4523.65作为双精度数,然后进行相乘的运算,得到 的乘也是一个双精度数。最后取其前7位赋给浮点型变量f。如是在数的 后面加字母f或F(如1.65f, 654.87F),这样编译系统就会把它们按单 精度(32位)处理。
§3.5字符型数据
§ 3.1 C的数据类型
C语言提供了以下一些数据类型。
数据类型
基本类型
构造类型 指针类型
整型 int
字符型 char 单精度实型
实型(浮点型)
float
数组类型
双精度实型
double
结构类型 struct
联合类型 union
枚举类型 enum
空类型(无值类型) void
§3.2 常量与变量3.2. Nhomakorabea 常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量 常量区分为不同的类型:
total=num * PRICE; printf(″total=%d\n″,total); } 说• 明说:明用:程一如序个再中标用用识赋#符d值代e语f表in句e一给命个P令常R行IC量定E的义,称PR为IC符E号代常表量常,量即3以0,标此识后符凡形在式本
• 文出P件现R中的IC出常E=现量40的。; 符PR号IC常/E*都量错代的误表值,3在不0,其能可作给以用符和域号常(常量在量一本赋样例值进中。行为运主算函数)内不能 改变,也不能再被赋值。
类型 float double型 long double
位数 32 64 128
数的范围 10-37 ~ 1038 10-307~10308 10-4931~104932
有效数字 6~7 位 15~16位 18~19位
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.4 运算符的成员函数重载与友元函数重载
成员函数重载与友员函数重载的区别
❖ 声明与定义的形式不同 ❖ 参数数目不同
this指针的有无,导致参数个数不同。
❖ 编译器的解释不同 ❖ 对操作数的要改变操作数自身的运算符时,如
++、--、+=等,参数必须采用传递引用的形式。 若它们重载成成员函数,需要被修改的操作数是 通过this指针传递的,对其修改没有问题。
可实现连续输出、输入信息。 ❖ 函数的功能是通过调用COUT 和CIN 对标准类型输入输出功能来实现
的。
10.8 不同类型数据间的转换
转换构造函数 将一个其它类型的数据转换成一个指定的类的对象。即创建一个对象。
❖ 只有一个形参。参数的类型是需要转换的类型。 ❖ 格式:构造函数的一般格式,形参类型为要转换的其它类型。 ❖ 使用:类名(指定类型的数据); 类型转换函数
❖ 6、形参不能为指针类型,形参可以为对象或对象的引用。
❖ 7、运算符重载函数可以是:友元函数、成员函数和普通的全局函数, 具体情况具体分析。
❖ 8、下列运算符只能通过成员函数重载。 = 、() 、 [ ] 、 类型转换函数。
❖ 9、>> 、 << 只能重载为友元。
❖ 10、运算符“=”和“&” 系统提供缺省重载。
方法1:
complex operator +(const complex &c1, const complex &c2)
{ complex c;
c.real=c1.real+c2.real;
c.imag=c1.imag+c2.imag; return c; }
?考虑该函数和 复数类的关系
class complex{ friend complex operator +(const complex &c1, const complex &c2); …. };
❖ 成员函数重载的运算符第一个参数(左操作数)只能是该 类的对象。
❖ 若为非成员函数,一般应为友元函数,这样可以访问私有 数据成员。
成员函数还是友元函数?
❖ 必须选则其中一种形式。不能同选。避免二义性。 ❖ 哪种好? 一般没太大区别,但有些运算符只能采用特定形
式。
❖ 只能通过成员函数重载的运算符:
10.7 重载流插入和流提取运算符
❖ 了解C++的I/O系统(第13章) ❖ 理解cin、cout输入输出标准数据类型的原理。
cin cout 是两个对象,所在的类以成员函数的形式重载了 >>(提 取,输入) 和<<(插入,输出)运算符。 ❖ 若想以同样的形式输入输出用户自定义类型,需要用户自己重载>>和 << ❖ 只能重载为友元或普通全局函数 ❖ 格式: istream & operator>>(istream &,自定义类 &); ostream & operator<<(ostream &,自定义类 &);
将一个类的对象转换成另一类型的数据(预定义类型或其它类对象)。 它只能重载为成员函数
类名 :: operator 目的类型() //也称类型转换运算符重载函数 {实现转换的语句}
参见书上例10.9,10.10
类使用小结
类的几种构造函数
缺省构造函数
默认构造函数
成员初始化列表
用于初始化的构造函数
默认参数构造函数
复制构造函数
转换构造函数
编译器生成的成员函数
缺省构造函数、复制构造函数、赋值运算符
10.2 运算符重载的方法
❖ 定义一个重载运算符的函数。
❖ 在需要执行被重载运算符时,系统自动调用该函 数,以实现相应的运算。
❖ 函数格式:
函数名
函数类型 operator 运算符名称@(形参列表) { 对运算符的重载处理 }
❖ 调用方法:显示的调用函数; 按运算符的使用方法写成表达式。
例:重载“+”运算符,应用于复数类
= 、() 、 [ ] 、 类型转换函数。
❖ 只能重载为友元:>> 、 << 。
❖ 一般双目用友元,单目用成员。 ❖ 有时使用友元更好(尤其是为类定义了类型转换时 )。
10.5 ~10.6 几个典型运算符的重载
重载单目、双目运算符
❖ 赋值运算符=的重载(为了实现连续赋值,要返回该对象) ❖ 自增++与自减--运算符的重载 ❖ 重载流插入>>和流提取<<运算符(友元)
方法2:成员函数
class complex{
…
Public:
complex operator +(complex &c2);
…
};
complex complex::operator +(complex &c2)
{ complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
方法1:友元 c3 =operator+(c1,c2);
方法2:成员 c3=c1.operator+(c2);
• return complex(real+c2.real , imag+c2.imag); 建立一个无名临时对象
• c4=c1+c2+c3; (c1.operator+(c2) ).operator+( c3);
借用其它功能的运算符。
❖ 4、不能改变优先级;不能改变结合性;不能改变
运算符所需操作数的个数;运算符重载函数不能 有默认的参数。交换律不适用
❖ 5、重载的运算符的操作数必须有自定义类型。其参数至 少应有一个是类对象(或类对象的引用)。以防止用户为 预定义类型重载运算符。 运算符被重载时,只是相对一特定类被重载,在特定 的环境下作出特定的解释。当离开这个特定环境后,具有 原来的意义(系统定义);
第10章 运算符重载
本章重点: 有关类的运算符重载 有关类的数据类型转换
Home
10.1什么是运算符重载
❖ 赋予C++运算符多种含义。和函数重载一样。 ❖ C++(包括C语言)系统已经重载了很多运算符。
应用于标准数据类型数据的处理。 ❖ C++给用户也提供了重载标准运算符的权力。允
许将标准C++运算符应用于自定义类型(类)的 对象。 ❖ 根据用户使用被重载的运算符的不同的场合,确 定它的作用是什么。
• c3=4+c2; //不能用于成员函数 • c5=complex(4,0)+c2;
10.3 重载运算符的规则(限制)
❖ 1、大多数系统预定义运算符都能重载,但以下
运算符不允许重载:
sizeof ::
?: . .*
❖ 2、不能定义新的运算符
❖ 3、功能相似规则:重载后的功能尽量类似于作用 于标准数据类型的功能。提高可读性。即在使用 时应模仿运算符的习惯用法 。但对新功能,只能
❖ 见书上例 10.4 (P324)
❖
例 10.5 (P328)
单目:重载++和--
❖ 一、关于++和- ❖ 1、C中的++和- -的两种形式: ❖ 前置:++i, --i; 后置: i++ ,i--; ❖ 2、在C++中的约定 (显式地区分前置和后置缀) ❖ (1)对于前置方式++i: ❖ 成员函数:X X::operator ++ ( ); ❖ 友元函数:X operator ++ (X & ); ❖ (2)对于后置方式i++: ❖ 成员函数:X X::operator ++ (int); ❖ 友元函数:X operator ++(X&, int); ❖ 第二个参数int 一般设置为0,如: ❖ i++ 等价于:i++(0) 或:i++=0
return c; }
当成员函数的参数为同一类(class) 的对象或它的引用,在函数体内使用参
数对象的私有数据成员时,可用对象名 加成员访问操作符点号进行。
仅在成员函数中可以这样做。
❖ int main() { complex c(3,4),c2(-5,10),c3;
c3=c1+c2; return 0; }