C Primer Plus 第五版 普拉塔著
——学习总结
第一章 概览
C语言的优点
一:设计特性,设计用户可以自然的采用从上而下的规划,结构化的编程和模块化的设计。使程序更可靠,易懂。
二:高效性,C程序紧凑而且运行快。
三:可移植性,可以在很少改动或不改动的情况下在其他系统上运行。
四:强大的功能和灵活性
五:面向编程人员
C语言的编程七个步骤
定义程序目标, 设计程序, 编写代码, 编译, 运行程序, 测试调试,维护和修改程序。
几个术语词汇
源代码:程序员使用编程语言编写的代码
目标代码:编译器将源代码转化为目标代码(机器语言)
可执行代码:链接器将库代码和启动代码结合生成可执行代码。
C可在Unix系统,Linux系统,Windows系统上编译
第二章 C语言概述
#include<stdio.h>
int main(void)
{
int num; /*变量的声明*/
num=1;
printf("I am a simple ");
printf("computer\n");
printf("My favorite number is %d because it is first.\n",num);
return 0;
}
程序分析:
#include是C预处理器指令,stdio.h为头文件,包含了输入输出函数printf()和scanf()等,最重要的是头文件包括了建立最终可执行程序时编译器所需要的信息。
int main(void)
{ 函数名,程序都有一个或多个函数,函数是程序的基本模 块。
int 标明函数返回值的类型,圆括号标明这是函数,
void标明函数不接受任何参数
}
main()函数是程序必不可少的一部分。
/* */是对程序进行注释。
int num ;变量的声明(声明并未为变量分配内存空间,定义则已为变量分配了内存空间),并说明num是一变量,类型为整型。
变量可以是数字,字母,下划线的组合,但第一个位置不能是数字
num=1;赋值语句。return 0;返回语句。
为了使程序具有可读技巧:使用有意义的变量名和注释。
int num ,feet;为多个声明。程序中也可有多个函数。
发现和修改程序中的错误叫做调试(debugging)
关键字(int,long,float等)和保留标识符(包括以下划线开始的标示符和标准库函数)不能够定义为变量。
/*****程序是希望计算机采取何种行为的描述*******/
第三章 数据和C
计算机最小的存储单位是位(bit),字节是计算机常用的存储单位,一字节等于8位。
数据类型
整型:short int long
浮点型:float double long double
字符型:char
整型 int
int num=1;
定义整型数据,最小取值范围-32678到32676。用格式说明符%d打印。%d打印出十进制, %o八进制, %x十六进制。%#o打印八进制数前面带有0,%#x打印十六进制数前带有0x。
其它int整型,如short int,long int,long long int unsigned int, 关键字signed可以和任何有符号类型一起使用。
用int定义的数据类型超出其取值范围就会溢出,不同系统出现的结果会不同。
当出现一个较大数值时,编译器会自动将其存储为较大的类型。int不够就存储为long int 还不够则 unsigned long 再不够就为long long int等。
数据类型的打印(格式说明符只能使用小写字母)
unsigned int 使用 %u
long 使用 %ld
short 使用 %hd
long long 使用 %lld
unsigned long 使用 %lu
字符型 char(用于存储字母和标点符号之类的字符)
char grad='A';char类型本质是是整型。等价于 char grad =65;(ASCII中字母和数字的对应关系)
char 使用%c 打印
非打印字符
转义序列:\a 蜂鸣警\b退格
\n换行
\r回车
\\反斜杠
\'单引号
\"双引号
\?问号
\0oo八进制
\xhh十六进制
_Bool类型 布尔值 表示真假 1表示真 true 0表示加false
浮点型float double long double
float 至少要表示6位有效数字
double 至少要表示10位有效数字
编译器通常把浮点型常量当作double,可以通过后缀F,f把浮点型常量当作float型
打印浮点值
%f 打印float double 值
%e 打印成指数形式,小数点后面保留6位有效数字。(如果系统支持C99的十六进制格式浮点数,可以用a或者A代替e和E)
%Lf %Le %La 打印所需要的long double型数据
所有系统中
char 8位 short 16位 long 32位 long long 64位
一般系统 int 32位 ,只有ANSCII规定最小值16位
整型和浮点型格式说明符不能乱用,使用不正确将打印出错误数字。
第四章 字符串和格式化输入/输出
函数strlen()以字符为单位给出字符串的长度,遇到空字符‘\0’而止,但计算结果不包括空字符。
关键字sizeof()计算大小包括空字符。
常量和预处理器
#include PI 3.141593
const float PI 3.141593
输出printf(“”,变量,常量,表达式);
格式说明符,标志 +,-,空格,#,0五种,-+打印字段的左或右测,0表示所有的数字格式用前导0填充字段宽度。
所有格式说明符如下程序
#include<stdio.h>
int main(void)
{
printf("%d,%x,%#x\n",31,31,31);
printf("*%5d*%.5f*%-4d*%+4d*\n",6,6.6,6,6);
printf("*%05d*%05.3d*\n",8,8);
retyrn 0;
}
输出如下:
31,1f,0x1f
*____6*6.60000*6___*___6*
*00008* 008*
%.digit(对于%e,%f是要打印小数点右边的数字的位数,%s是要打印字符的最大数目,对于整数是要打印数字的最小位数可用前导0填充) %5.2f打印浮点数宽度为5个字符小数点后2位。%5.2d 打印整数6的形式是___06
%f默认格式为宽度能容纳整个数字,小数点后6位
%e默认格式为小数点前有一位,后有6位
printf()返回值 返回打印字符的数目包括空格和换行,若输出错误则返回负数。
输入函数scanf("_",&_);
%d读取一个整数,scanf()开始每次读取一个输入字符,它跳过空白字符直到遇到一个非空白字符,读取至读到一个非数字或符号(-+)的字符将停止。若使用了字段宽度,将在首先碰到的字符结尾或空白处停止
%s 开始时跳过空白字符读取所有字符直到再次遇到空白字符
%c 不会跳过空白字符
scanf()允许把把普通字符放到格式字符串中
scanf()函数返回成功读入的项目个数,失败则返回0。
printf()与scanf()函数的*修饰符
printf()中*表示程序中读取字段宽度
printf(“%*d”,width,number)
printf("%*.*d",width,precision,number)
scanf()函数*标明跳过相应的输入项目
#include<stdio.h>
int main(void)
{
int num;
scanf(“%*d%d”,&num)
printf("**%d**",num)
}
演示:2014 2015
**2015**
——学习总结
第一章 概览
C语言的优点
一:设计特性,设计用户可以自然的采用从上而下的规划,结构化的编程和模块化的设计。使程序更可靠,易懂。
二:高效性,C程序紧凑而且运行快。
三:可移植性,可以在很少改动或不改动的情况下在其他系统上运行。
四:强大的功能和灵活性
五:面向编程人员
C语言的编程七个步骤
定义程序目标, 设计程序, 编写代码, 编译, 运行程序, 测试调试,维护和修改程序。
几个术语词汇
源代码:程序员使用编程语言编写的代码
目标代码:编译器将源代码转化为目标代码(机器语言)
可执行代码:链接器将库代码和启动代码结合生成可执行代码。
C可在Unix系统,Linux系统,Windows系统上编译
第二章 C语言概述
#include<stdio.h>
int main(void)
{
int num; /*变量的声明*/
num=1;
printf("I am a simple ");
printf("computer\n");
printf("My favorite number is %d because it is first.\n",num);
return 0;
}
程序分析:
#include是C预处理器指令,stdio.h为头文件,包含了输入输出函数printf()和scanf()等,最重要的是头文件包括了建立最终可执行程序时编译器所需要的信息。
int main(void)
{ 函数名,程序都有一个或多个函数,函数是程序的基本模 块。
int 标明函数返回值的类型,圆括号标明这是函数,
void标明函数不接受任何参数
}
main()函数是程序必不可少的一部分。
/* */是对程序进行注释。
int num ;变量的声明(声明并未为变量分配内存空间,定义则已为变量分配了内存空间),并说明num是一变量,类型为整型。
变量可以是数字,字母,下划线的组合,但第一个位置不能是数字
num=1;赋值语句。return 0;返回语句。
为了使程序具有可读技巧:使用有意义的变量名和注释。
int num ,feet;为多个声明。程序中也可有多个函数。
发现和修改程序中的错误叫做调试(debugging)
关键字(int,long,float等)和保留标识符(包括以下划线开始的标示符和标准库函数)不能够定义为变量。
/*****程序是希望计算机采取何种行为的描述*******/
第三章 数据和C
计算机最小的存储单位是位(bit),字节是计算机常用的存储单位,一字节等于8位。
数据类型
整型:short int long
浮点型:float double long double
字符型:char
整型 int
int num=1;
定义整型数据,最小取值范围-32678到32676。用格式说明符%d打印。%d打印出十进制, %o八进制, %x十六进制。%#o打印八进制数前面带有0,%#x打印十六进制数前带有0x。
其它int整型,如short int,long int,long long int unsigned int, 关键字signed可以和任何有符号类型一起使用。
用int定义的数据类型超出其取值范围就会溢出,不同系统出现的结果会不同。
当出现一个较大数值时,编译器会自动将其存储为较大的类型。int不够就存储为long int 还不够则 unsigned long 再不够就为long long int等。
数据类型的打印(格式说明符只能使用小写字母)
unsigned int 使用 %u
long 使用 %ld
short 使用 %hd
long long 使用 %lld
unsigned long 使用 %lu
字符型 char(用于存储字母和标点符号之类的字符)
char grad='A';char类型本质是是整型。等价于 char grad =65;(ASCII中字母和数字的对应关系)
char 使用%c 打印
非打印字符
转义序列:\a 蜂鸣警\b退格
\n换行
\r回车
\\反斜杠
\'单引号
\"双引号
\?问号
\0oo八进制
\xhh十六进制
_Bool类型 布尔值 表示真假 1表示真 true 0表示加false
浮点型float double long double
float 至少要表示6位有效数字
double 至少要表示10位有效数字
编译器通常把浮点型常量当作double,可以通过后缀F,f把浮点型常量当作float型
打印浮点值
%f 打印float double 值
%e 打印成指数形式,小数点后面保留6位有效数字。(如果系统支持C99的十六进制格式浮点数,可以用a或者A代替e和E)
%Lf %Le %La 打印所需要的long double型数据
所有系统中
char 8位 short 16位 long 32位 long long 64位
一般系统 int 32位 ,只有ANSCII规定最小值16位
整型和浮点型格式说明符不能乱用,使用不正确将打印出错误数字。
第四章 字符串和格式化输入/输出
函数strlen()以字符为单位给出字符串的长度,遇到空字符‘\0’而止,但计算结果不包括空字符。
关键字sizeof()计算大小包括空字符。
常量和预处理器
#include PI 3.141593
const float PI 3.141593
输出printf(“”,变量,常量,表达式);
格式说明符,标志 +,-,空格,#,0五种,-+打印字段的左或右测,0表示所有的数字格式用前导0填充字段宽度。
所有格式说明符如下程序
#include<stdio.h>
int main(void)
{
printf("%d,%x,%#x\n",31,31,31);
printf("*%5d*%.5f*%-4d*%+4d*\n",6,6.6,6,6);
printf("*%05d*%05.3d*\n",8,8);
retyrn 0;
}
输出如下:
31,1f,0x1f
*____6*6.60000*6___*___6*
*00008* 008*
%.digit(对于%e,%f是要打印小数点右边的数字的位数,%s是要打印字符的最大数目,对于整数是要打印数字的最小位数可用前导0填充) %5.2f打印浮点数宽度为5个字符小数点后2位。%5.2d 打印整数6的形式是___06
%f默认格式为宽度能容纳整个数字,小数点后6位
%e默认格式为小数点前有一位,后有6位
printf()返回值 返回打印字符的数目包括空格和换行,若输出错误则返回负数。
输入函数scanf("_",&_);
%d读取一个整数,scanf()开始每次读取一个输入字符,它跳过空白字符直到遇到一个非空白字符,读取至读到一个非数字或符号(-+)的字符将停止。若使用了字段宽度,将在首先碰到的字符结尾或空白处停止
%s 开始时跳过空白字符读取所有字符直到再次遇到空白字符
%c 不会跳过空白字符
scanf()允许把把普通字符放到格式字符串中
scanf()函数返回成功读入的项目个数,失败则返回0。
printf()与scanf()函数的*修饰符
printf()中*表示程序中读取字段宽度
printf(“%*d”,width,number)
printf("%*.*d",width,precision,number)
scanf()函数*标明跳过相应的输入项目
#include<stdio.h>
int main(void)
{
int num;
scanf(“%*d%d”,&num)
printf("**%d**",num)
}
演示:2014 2015
**2015**