谭浩强 C程序设计(第五版)
C程序设计(第五版)思维导图
c程序设计(第五版)学习辅导思维导图
数据类型
数据类型{基本类型{整型类型{基本整型(int)短整型(shortint)长整型(longint)∗双长整型(longlongint)字符型(char)∗布尔型(bool)浮点类型{单精度浮点型(float)双精度浮点型(double)复数浮点型(float−complex,double−complex,longlong−complex)枚举类型(enum)空类型(void)派生类型{指针类型(∗)数组类型([])结构体类型(struct)共用体类型(union)函数类型数据类型\begin{cases} 基本类型 \begin{cases} 整型类型 \begin{cases} 基本整型(int)\\ 短整型(short~int)\\ 长整型(long~int)\\ *双长整型(long~long~int)\\ 字符型(char)\\ *布尔型(bool) \end{cases}\\ 浮点类型 \begin{cases} 单精度浮点型(float)\\ 双精度浮点型(double)\\ 复数浮点型(float_-complex,double_-complex,long~long_-complex) \end{cases} \end{cases}\\ 枚举类型(enum)\\ 空类型(void)\\ 派生类型\begin{cases} 指针类型(*)\\ 数组类型([~])\\ 结构体类型(struct)\\ 共用体类型(union)\\ 函数类型 \end{cases} \end{cases}数据类型⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧基本类型⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧整型类型⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧基本整型(int)短整型(short int)长整型(long int)∗双长整型(long long int)字符型(char)∗布尔型(bool)浮点类型⎩⎪⎨⎪⎧单精度浮点型(float)双精度浮点型(double)复数浮点型(float−complex,double−complex,long long−complex)枚举类型(enum)空类型(void)派生类型⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧指针类型(∗)数组类型([ ])结构体类型(struct)共用体类型(union)函数类型
转义符及其作用
转义字符 | 字符值 | 输出结果 |
---|---|---|
\’ | 一个单撇号(') | left-aligned输出单撇号字符 ’ |
\" | 一个双撇号(") | 输出双撇号字符 " |
\? | 一个问号(?) | 输出问号字符 ? |
\\ | 一个反斜线(\) | 输出反斜线字符 \ |
\a | 警告(alert) | 产生声音或视觉信号 |
\b | 退格(backspace) | 将光标当前位置后退一个字符 |
\f | 换页(form feed) | 将光标当前位置移到下一页的开头 |
\n | 换行 | 将光标当前位置移到下一行的开头 |
\r | 回车(carriage return) | 将光标当前位置移到本行的开头 |
\t | 水平制表符 | 将光标当前位置移到下一个Tab位置 |
\v | 垂直制表符 | 将光标当前位置移到下一个垂直制表对齐点 |
\o、\oo、\ooo其中o代表一个八进制数字 | 与该八进制码对应的ASCII字符 | 与该八进制码对应的字符 |
\xh[h···]其中h代表一个十六进制数字 | 与该十六进制码对应的ASCII字符 | 与该十六进制码对应的字符 |
printf函数中用到的格式字符
格式字符 | 说明 |
---|---|
d,i | 以带符号的十进制形式输出整数(正数不输出符号) |
o | 以八进制无符号形式输出整数(不输出前导符0) |
x,X | 以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制数的a~f时以小写形式输出,用X时,则以大写字母输出 |
u | 以无符号十进制形式输出整数 |
c | 以字符形式输出,只输出一个字符 |
s | 输出字符串 |
f | 以小数形式输出单、双精度数,隐含输出6位小数 |
e,E | 以指数形式输出实数,用e时指数以“e”表示(如1.2e+02),用E时指数以“E”表示(1.2E+02) |
g,G | 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。用G时,若以指数形式输出,则指数以大写表示 |
printf函数中用到的格式附加字符
字符 | 说明 |
---|---|
l | 长整型整数,可加在格式符d、o、x、u前面 |
m | 数据最小宽度 |
n | 对实数,表示输出n位小数;对字符串,表示截取的字符个数 |
- | 输出的数字或字符在域内向左靠 |
scanf函数中用到的格式字符
格式字符 | 说明 |
---|---|
d,i | 输入有符号的十进制整数 |
u | 输入无符号的十进制整数 |
o | 输入无符号的八进制整数 |
x,X | 输入无符号的十六进制整数(大小写作用相同) |
c | 输入单个字符 |
s | 输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志‘\0’作为其最后一个字符 |
f | 输入实数,可以用小数形式或指数形式输入 |
e,E g,G |
与f作用相同,e与f、g可以互相替换(大小写作用相同) |
l | 输入长整型数据(可用%ld,%lo,%lx,%lu)以及double型数据(%lf或%le) |
h | 输入短整型数据(可用%hd,%ho,%hx) |
域宽 | 指定输入数据所占宽度(列数),域宽应为正整数 |
- | 本输入项在读入后不赋给相应的变量
指针变量的类型及含义
变量定义 | 类型表示 | 含义 |
---|---|---|
int i; | int | 定义整型变量i |
int *p; | int * | 定义p为指向整型数据的指针变量 |
int a[5] | int [5] | 定义整型数组a,它有5个元素 |
int *p[4]; | int *[4] | 定义指针数组p,它由4个指向整型数据的指针元素组成 |
int (*p)[4]; | int (*)[4] | p为指向包含4个元素的一维数组的指针变量 |
int f(); | int () | f为返回整型函数值的函数 |
int *p(); | int *() | p为返回一个指针的函数,该指针指向整型数据 |
int (*p)(); | int (*)() | p为指向函数的指针,该函数返回一个整型值 |
int **p; | int ** | p是一个指针变量,它指向一个指向整型数据的指针变量 |
void *p; | void * | p是一个指针变量,基类型为void(空类型),不指向具体的对象 |
字符串处理函数
字符串处理函数 | 作用 | 一般形式 |
---|---|---|
puts函数 | 输出字符串的函数 | puts(字符数组) |
gets函数 | 输入字符串的函数 | gets(字符数组) |
strcat函数 | 字符串连接函数 | strcat(字符数组1,字符数组2) |
strcpy和strncpy函数 | 字符串复制函数 | strcpy(字符数组1,字符串2);strncpy(字符数组1,字符串2,n) |
strcmp函数 | 字符串比较函数 | strcmp(字符串1,字符串2) |
strlen函数 | 测字符串长度的函数 | strlen(字符数组) |
strlwr函数 | 转换为小写的函数 | strlwr(字符串) |
strupr函数 | 转换为大写的函数 | strupr(字符串) |
C语言中37个关键字及其含义
关键字 | 含义 |
---|---|
1. 数据类型关键字(12个) | |
(1). char | 声明字符型变量或函数 |
(2). double | 声明双精度变量或函数 |
(3). enum | 声明枚举类型 |
(4). float | 声明浮点型变量或函数 |
(5). int | 声明整型变量或函数 |
(6). long | 声明长整型变量或函数 |
(7). short | 声明短整型变量或函数 |
(8). signed | 声明有符号类型变量或函数 |
(9). struct | 声明结构体变量或函数 |
(10). union | 声明联合数据类型 |
(11). unsigned | 声明无符号类型变量或函数 |
(12). void | 声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) |
2. 控制语句关键字(12个) | |
A.循环语句 | |
(1). for | 一种循环语句(可意会不可言传) |
(2). do | 循环语句的循环体 |
(3). while | 循环语句的循环条件 |
(4). break | 跳出当前循环 |
(5). continue | 结束当前循环,开始下一轮循环 |
B.条件语句 | |
(1).if | 条件语句 |
(2).else | 条件语句否定分支(与 if 连用) |
(3).goto | 无条件跳转语句 |
C.开关语句 | |
(1).switch | 用于开关语句 |
(2).case | 开关语句分支 |
(3).default | 开关语句中的“其他”分支 |
D. | |
return | 子程序返回语句(可以带参数,也看不带参数) |
3. 存储类型关键字(4个) | |
(1).auto | 声明自动变量 一般不使用 |
(2).extern | 声明变量是在其他文件正声明(也可以看做是引用变量) |
(3).register | 声明积存器变量 |
(4).static | 声明静态变量 |
4. 其它关键字(4个) | |
(1).const | 声明只读变量 |
(2).sizeof | 计算数据类型长度 |
(3).typedef | 用以给数据类型取别名(当然还有其他作用) |
(4).volatile [ˈvɔlətail] | 说明变量在程序执行中可被隐含地改变 |
5.C99新增(5个) | |
(1).inline关键字 |
用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义 引入原因:C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作 |
(2).restrict关键字 | 只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。 |
(3)._Bool关键字 | 用于表示布尔值。包含标准头文件 stdbool.h 后,我们可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。 |
(4)._Complexand_Imaginary关键字 |
C99标准中定义的复数类型如下:float_Complex; float_Imaginary; double_Complex; double_Imaginary; long double_Complex; long double_Imaginary. 头文件中定义了complex和imaginary宏,并将它们扩展为_Complex和_Imaginary,因此在编写新的应用程序时,应该使用头文件中的complex和imaginary宏。 |
动态内存分配的函数
4个函数的声明在stdlib.h头文件中。
函数名 | 作用 | 函数原型 |
---|---|---|
malloc函数 |
用malloc函数开辟动态存储区 其作用是在内存的动态存储区中分配一个长度为size的连续空间。 |
void *malloc(unsigned int size); |
calloc函数 |
用calloc函数开辟动态存储区 其作用是在内存的动态存储区中分配n个长度为size的连续空间,这个空间比较大,足以保存一个数组。 |
void *calloc(unsigned n, unsigned size); |
realloc函数 |
用realloc函数重新分配动态存储区 如果已经通过malloc函数或calloc函数获得了动态空间,想改变其大小,可以用recalloc函数重新分配。 |
void *realloc(void *p, unsigned int size); |
free函数 |
用free函数释放动态存储区 其作用是释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。p应是最近一次调用calloc或malloc函数时得到的函数返回值。 |
void free(void *p); |
结构体、共用体、枚举类型
//结构体
struct 结构体名{类型名 成员名; //成员列表类型名 成员名;...类型名 成员名;
} 变量名表列;//共用体
union 共用体名{类型名 成员名; //成员列表类型名 成员名;...类型名 成员名;
} 变量表列;//枚举类型
enum [枚举名] {枚举元素列表};
用typedef声明新类型名
按定义变量的方式,把变量名换上新类型名,并且在最前面加typedef,就声明了新类型名代表原来的类型。
文件操作
打开文件
fopen(文件名, 使用文件方式);
例如:fopen(“al”, “r”);
使用文件方式:
文件使用方式 | 含义 | 如果指定的文件不存在 |
---|---|---|
“r”(只读) | 为了输入数据,打开一个已存在的文本文件 | 出错 |
“w”(只写) | 为了输出数据,打开一个文本文件 | 建立新文件 |
“a”(追加) | 向文本文件尾添加数据 | 出错 |
“rb”(只读) | 为了输入数据,打开一个二进制文件 | 出错 |
“wb”(只写) | 为了输出数据,打开一个二进制文件 | 建立新文件 |
“ab”(追加) | 向二进制文件尾添加数据 | 出错 |
“r+”(读写) | 为了读和写,打开一个文本文件 | 出错 |
“w+”(读写) | 为了读和写,建立一个新的文本文件 | 建立新文件 |
“a+”(读写) | 为了读和写,打开一个文本文件 | 出错 |
“rb+”(读写) | 为了读和写,打开一个二进制文件 | 出错 |
“wb+”(读写) | 为了读和写,建立一个新的二进制文件 | 建立新文件 |
“ab+”(读写) | 为读写打开一个二进制文件 | 出错 |
关闭文件
fclose(文件指针);
文件读写
字符读写函数:fgetc 和 fputc
字符串读写函数:fgets 和 fputs
数据块读写函数:fread 和 fwrite(二进制方式)
格式化读写函数:fscanf 和 fprintf
函数名 | 调用形式 | 功能 | 返回值 |
---|---|---|---|
fgetc | fgetc(fp) | 从fp指向的文件读入一个字符 | 读成功,带回所读的字符,失败则返回文件结束标志EOF(即-1) |
fputc | fputc(ch, fp) | 把字符ch写到文件指针变量fp所指向的文件中 | 输出成功,返回值就是输出的字符,输出失败,则返回EOF(即-1) |
fgets | fgets(str, n, fp) |
从fp指向的文件读入一个长度为(n-1)的字符串,存放到字符数组str中 因为最后加一个’\0’ |
读成功,返回地址str,失败则返回NULL |
fputs | fputs(str, fp) | 把str所指向的字符串写到文件指针变量fp所指向的文件中 | 输出成功,返回0;否则返回非0值 |
用格式化的方式读写文件:
fprintf(文件指针, 格式字符串, 输出表列);
fscanf(文件指针, 格式字符串, 输入表列);
例如:
fprintf(fp, “%d,%6.2f”, i, f);
fscanf(fp, “%d,%f”, &i, &f);
用二进制方式向文件读写一组数据:
fread(buffer, size, count, fp);
fwrite(buffer, size, count, fp);
buffer:是一个地址。对fread来说,它是用来存放从文件读入的数据的存储区的地址。对fwrite来说,是要把此地址的存储区中的数据向文件输出(以上指的是起始地址)。
size:要读写的字节数。
count:要读写多少个数据项(每个数据项长度为size)。
fp:FILE类型指针
谭浩强 C程序设计(第五版)相关推荐
- 谭浩强C程序设计第五版课后答案视频+代码讲解完整版(合集)持续跟新中~~~
这里是一个谭浩强C程序设计第五版课后答案的合集 请看下面: 工欲善其事必先利其器 写C语言代码,首先得有安装一个趁手的工具,那么VS系列是最合适不过的了 这里是安装教程: VS2013安装教程和使用 ...
- C语言的学习第一天——谭浩强C程序设计第五版
学习了谭浩强C程序设计第一章 编译器:VS2019 鹏哥C语言:c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 ...
- matlab将单词China译成密码,要将china译成密码 C++源代码 (谭浩强c++程序设计第3版答案)...
要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母. 例如,字母"A"后面第4个字母是"E", "E ...
- 谭浩强C程序设计第四版答案
只给出一些需要编程的答案,用的是谭浩强老师的书: 本文持续更新中- C程序设计课本中的一些笔记见:C程序设计笔记 我的目录 只给出一些需要编程的答案,用的是谭浩强老师的书: 本文持续更新中... C程 ...
- c语言程序灵魂编译后,谭浩强C程序设计第4版精讲视频课程
谭浩强<C程序设计>(第4版)网授精讲班[教材精讲+考研真题串讲] 本课程由资深辅导教师马丽梅老师讲授,全面讲解教材的重点.难点.考点,教会学员理解并掌握该教材中的基本概念.基本原理和基本 ...
- c++第九次作业(谭浩强c++程序设计第三版P400习题)
1.改写为多文件程序???????????????? 2.比较函数重载和虚函数在概念和使用方式上的区别 1)概念上: 1>函数重载在同一个类中,虚函数是父类与子类 2>函数重载时重载的函数 ...
- 谭浩强C程序设计(第五版)P82 习题六(求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积)——中职
谭浩强C程序设计(第五版)P82 习题六 设圆半径r = 1.5,圆柱高h = 3,求圆周长.圆面积.圆球表面积.圆球体积.圆柱体积.用scanf输入数据,输出计算结果,输出时要求文字说明,取 小数点 ...
- 在c语言中,字符串topt65的长度是,谭浩强c__程序设计第13章.ppt
谭浩强c__程序设计第13章 第13章 输入输出流 13.1 C++的输入和输出 13.2 标准输出流 13.3 标准输入流 13.4 文件操作与文件流 13.5 字符串流 13.1 C++的输入和输 ...
- 【C++习题笔记】谭浩强C++程序设计(第三版)第七章
本文是谭浩强老师c++程序设计(第三版)第七章的习题总结,主要涉及结构体的内容. 1. 定义一个结构体变量(包括年.月.日),编写程序,要求输入年月日,程序能够计算并输出改日是本年中的第几天.注意闰年 ...
- 谭浩强C程序设计快速复习笔记
README 该笔记主要根据岭南学院专插本的考纲进行编写.用到的教材是谭浩强的<C程序设计>第三版 适用人群:对C有一定基础,针对考点快速复习的考生.但不限于岭南学院专插本考生 亮点:①结 ...
最新文章
- 单元测试Struts2的Action(包含源码)
- 怎么绕过论坛回复_铝散热片铆钉怎么压得快,有没有自动化设备
- HDU中一些DP的题目分类
- 解决:Caused by: java.lang.UnsupportedOperationException: null
- 限制MySQL Binlog的传输速率
- Oracle查询所有序列;[oracle中如何创建表的自增ID(通过序列);oracle sql语句大全
- python开发环境哪个好 博客园_我选用的Python开发环境
- SilverLight中的基本图形(转)
- 1月3日 接触ROS
- Scrapy 1.4 文档 02 安装指南
- 机器学习笔记(三十二):集成学习、随机森林
- 如何制作WIFI二维码,实现手机扫一扫快速连接
- 增加关键词密度不要堆积
- 2003服务器开机无限重启,Windows2003 系统自动重启
- C#事件中sender的小用法
- 【Python】定义函数求解一元二次方程
- 20行Python小程序批量删除GitHub仓库,包
- neogeo模拟器 linux,neogeo模拟器
- python 对数收益率_用python进行风险调整后的收益
- 【HTML】基础,入门先学会这些知识点
热门文章
- linux中ldap管理工具,LDAP管理工具Mac版-LDAP Admin Tool for Mac下载 V7.2-PC6苹果网
- 数据库系统概论第五版(笔记+习题答案)(全)
- alisql mysql_AliSQL · 特性介绍 · 动态加字段
- Linux服务器部署JavaWeb项目
- wsdl2java 生成不带JAXBElement的客户端
- 数字电子技术基础-2-逻辑函数的最小项与最大项
- matlab仿真数字电路,基于matlab的数字逻辑电路仿真
- oracle连接ORA-01017、ORA-12640
- 影视App下载页源码
- idea创建j2ee_IntelliJ IDEA 2018 Community(社区版)创建J2EE项目+Tomcat9部署