C语言教程浓缩版Word文件下载.docx
《C语言教程浓缩版Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言教程浓缩版Word文件下载.docx(146页珍藏版)》请在冰豆网上搜索。
循环的基本要求:
22
while()循环22
do{……..}while(条件表达式);
25
for(……)循环26
循环结构作为循环结构的子语句(循环结构的嵌套)29
break和continue语句的用法32
第六章字符型数据33
字符常量:
33
在有命令行stdio.h的前提下,讲两个函数34
3:
解释34
多个不同格式之间不加任何符号输入34
多条输入语句同时执行34
在有命令行stdio.h的情况下,C语言中0、’\0’、NULL意思是等价的35
第七章函数37
注意几点37
函数的分类:
37
用户自定义函数的定义形式:
例37
程序的流程中的问题37
在程序执行过程中有三个问题38
第九章:
数组49
指针变量69
第十章:
字符串73
定义:
73
字符型数组:
在边定义边赋值时,没有使用完的存储空间中默认存放‘\0’这个字符常量74
字符串在内存中要占据一维字符型数组的存储区域74
字符串和整型数组、字符型数组、实型数组的最大区别是:
74
%s的意思:
几种常见的字符串赋值方法74
通过程序来形成字符串75
几种常见的对字符串处理的函数的使用方法。
76
二维字符型数组78
第十一章对函数的进一步讨论81
主函数中的参数81
指向函数的指针82
递归算法:
83
第十二章:
全局变量、局部变量、存储分类84
在函数体外部定义的变量叫全局变量84
全局变量的作用域从定义语句下面到本程序完为至。
84
局部变量的作用域从定义语句下面到本函数完为至。
当全局变量与局部变量同名时,在局部范围内,以局部变量的值为准84
静态局部变量static85
第十三章宏定义、宏代换、动态存储86
宏定义:
86
宏代换:
动态存储分配:
87
第十四章:
结构体、共用体88
定义形式:
88
结构体的使用方法:
结构体变量的定义方法:
89
结构体数组的使用89
结构体指针的使用方法:
90
类型声明符的使用typedef90
结构体变量所占据的存储空间是它的各个成员所占据存储空间之和91
简单的单向链表92
共用体93
第十五章:
位运算95
第十六章文件95
1:
文件指针的定义95
开打文件95
关闭文件95
fgetc()fputc()函数的使用95
fscanf()和fprintf()函数的用法96
fgets()和fputs()函数的用法96
fread()和fwrite()函数的使用方法97
文件定位函数97
rewind函数称为“反饶”函数,调用格式如下:
98
附录199
一:
C语言常用关键字99
二:
运算符的优先级和结合性99
附录2库函数100
一、数学函数100
二、字符函数和字符串函数101
三、输入输出函数102
四、动态分配函数和随机函数103
进制转换问题
二进制每位数值上面的数的范围是0或1
十进制每位数值上面的数的范围是0123456789
八进制每位数值上面的数的范围是01234567
十六进制每位数值上面的数的范围是0123456789ABCDEF
十进制转换为二进制的方法:
除二倒序取余
二进制转换为十进制的方法:
按权展开
二进制转换为八进制的方法:
从右边往左边按三位二进制位来分段,每一个段都对应一位八进制值,前后段之间没有联系。
二进制转换为十六进制的方法:
从右边往左边按四位二进制位来分段,每一个段都对
应一位十六进制值,前后段之间没有联系。
学C语言应该注意的两点:
编写程序过程中所用到的数值一定要先用类型关键字在内存中开辟能存放该数值的空间。
不同的数值所需要的存储空间大小是不一样,由类型关键字来区分。
第二章C语言初步
例题2.1:
计算矩形面积。
#include<
stdio.h>
命令行stdio.h是标准的输入、输出文件
main()主函数
{doublea,b,area;
定义语句语句是由表达式加;
组成
a=2.1;
赋值语句
b=3.6;
area=a*b;
计算语句
printf(“a=%lf,b=%lf,area=%lf\n”,a,b,area);
输出函数
}
标识符
用途:
可用做变量名、符号名、函数名、等等。
a:
只能含有3类字符:
字母,数字,下划线。
_124
b:
只能以字母或下划线开头。
注意:
一个合法的标识符必须同时满足上面两个条件。
标识符的分类
1)关键字:
由C语言规定的一批标识符,它们在程序中只能代表着固定的含义,不能另做其它用途。
一般情况下分为:
类型关键字:
intdouble,操作关键字:
iffor。
2)预定义标识符:
由C语言规定的一些标识符,它们在程序中也代表着固定的含义,但C语言语法允许用户可以把它们另做其它用意。
在编写程序过程中尽量不要把关键字和预定义关键字的用法改动、用做其它意思。
3)用户自定义标识符:
由用户根据需要、通过类型关键字定义的标识符,一般常用做变量名、函数名、数组名等等。
1)字符型关键字为char
空间大小:
所开辟的存储空间在内存中占据一个字节
作用:
用此类型关键字在内存中为合法的用户自定义标识符开辟存储空间,此存储空间中只能存放字符常量值。
2)整型分为:
a:
整型关键字为int
所开辟的存储空间在内存中占据四个字节
用此类型关键字在内存中为合法的用户自定义标识符开辟存储空间,此存储空间中只能存放整型常量值。
长整型关键字为long
用此类型关键字在内存中为合法的用户自定义标识符开辟存储空间,此存储空间中只能存放长整型常量值。
3)实型分为:
a:
单精度实型关键字为float
用此类型关键字在内存中为合法的用户自定义标识符开辟存储空间,此存储空间中只能存放单精度实型常量值。
双精度实型关键字为double
所开辟的存储空间在内存中占据八个字节
用此类型关键字在内存中为合法的用户自定义标识符开辟存储空间,此存储空间中只能存放双精度型常量值。
VC++6.0环境中默认实型数值的小数部分有六位小数。
常量
分为:
1)字符型常量:
定义:
用单引号引起来、中间有且只有一个字符
例:
‘a’‘1’‘A’‘#’‘?
’‘@’
2)字符串常量:
只要用双引号引起来的都是。
“123ab”“ACSW#$”“”
3)整型常量:
就是数学里的整数例:
100,-451,0
4)实型常量:
分为:
实数形式:
由数字和小数点组成,就是数学里的实数
3.14,-0.0145,-5896.,.1402
指数形式
标准形式:
就像数学中的科学记数法一样,规定小数点前面只能有一位有效数字,小数点后面可跟六位小数,指数有正、负之分,指数的位数为三位,指数的格式总共占五位,10要用小写e或大写E来表示。
321.45可些成:
3.214500e+002
手写形式:
字母e或E之前必须要有数字,且之后的指数必须是整数,且中间不能加入空格。
错的:
e3,.5E3.6,e
5)八进制常量:
必须以数字0(零)开头的
0451,0241,0778(错的)
6)十六进制常量:
必须以0x或0X开头的
0Xaa,0x14f,0x147
字符类型除外)
1)作用:
一般情况用做存储空间的名称
2)定义形式:
存储类别存储类型关键字变量名;
3)存储类别一般情况下可以省略,省略时默认为auto类别
4)常用定义形式:
存储类型关键字变量名;
5)例:
inta;
意义:
给自定义标识符a在内存中开辟合法的存储空间
变量名就代表了它在内存中所表示的存储空间中的值
c:
存储类别省略的,auto类别变量只定义过,没有赋初值,此存储空间中默认存放着不可遇见的值,称为随机值。
6)定义的多种形式:
(一定要遵守:
先定义,后使用原则)
例1:
定义a
intb;
定义b
intc;
定义c
a=b=c=10;
把10分别写入a,b,c三个名字所代表的不同存储空间中
例2:
inta,b,c;
定义a,bc
例3:
inta=10,b=10,c=10;
先从左往右为各个变量名在内存开不同的辟存储空间
再把10分别写入三个名字所代表的不同存储空间中
7)定义字符类型值
charch;
ch=65;
是把整型常量65当成ASCCII码,把此ASCII码所对应的字符常量值存放到ch所表示的存储空间中
ch=4;
把字符常量4存放到ch
所表示的存储空间中
赋值语句
1)运算符=在C语言中它称为赋值符,意思是写入或存入、存放到。
2)运算规则:
把运算符右侧的最终结果存放到运算符左边的存储空间中
3)要求:
赋值运算符的左侧只能为变量(只有变量才能在内存中代表存储空间)
右侧的表达式不能是任意表达式。
inta=10,b=20,c=30,d=40;
a=b+7=c+d;
就是个错的表达式
4)赋值号两侧类型统一问题
大类型存储空间=小数值
floata;
a=10;
/*计算机系统内部先把10这个整型常量转变为相应的实型常量,再给a所表示的存储空间中存*/
小类型存储空间=大数值
a=3.145;
/*计算机系统内部把实数分为三部分,整数部分数字、小
数部分数字、小数点,只把相应的整数部分数字存放到a
所表示的空间中*/
算术运算符
1)单目运算符:
+表示正值-表示负值
2)双目运算符:
*乘/除%求余+加-减
3)运算符的运算优先级:
单目高于双目
4)%符的运算规则a:
运算符两侧只能是整数值
例如:
m%n时,当m<
n时,求余的结果为m
5)双目运算符的两侧类型统一问题
当两侧运算数的类型统一时,结果和运算数的类型保持一致
3.6+1.2结果为4.8三个数值的类型是一致的
当两侧运算数的类型不统一时,结果必须和大的存储类型保持一致
3.6+50结果为53.6实型值加整型值结果为实型值
6)1/2按照第5条的运算原则结果是0而不是0.5
用梯形面积公式求面积
(1/2)*(a+b)*h这样写的结果是0
复合的赋值表达式
1)运算符*=/=%=+=-=
2)解释为:
它是有算术运算符和赋值运算符结合起来的运算符,两个符号之间不能加空格
3)运算原则:
inta=10,b=20;
a+=b;
计算过程完全等价于a=a+b;
4)%=运算符的运算原则和%求余运算符的原则是一样的
5)复合的赋值表达式左侧只能为变量(必须代表能存数值的存储空间)
6)例:
inta=10;
a=a-=a*=a+a;
强制类型转换
1)形式:
(存储类型关键字)对象
2)对象一般可为常量、变量、表达式、函数等。
3)例:
(int)3.5478此表达式的结果为3
4)四舍五入
例:
把3.141592保留3位小数对第四位小数进行四舍五入
doublea=3.141592;
a=(int)(a*1000+0.5)/1000.0;
++自加--自减
1
)在第二章中的使用形式
a++;
先应用后自加a++;
++a;
a+=1;
a=a+1;
++a;
先自加后应用
a--;
先应用后自减
--a;
先自减后应用
应用的含义:
在有自加或自减的混合表达式中,根据运算符的优先级从高到低依
次执行,如果先执行自加或自减运算,此时在该表达式中要是还有
其它的运算或操作,都要考虑意义,先应用就是自加符号让它的自加对象先和表达式中其它的所有运算符结合完,最后再给自加对象
所表示存储空间中的值加一个1,后应用就是自加符号先给自加对象
所表示存储空间中的值加一个1。
再让加1后的值和表达式中的其它
运算符结合。
2)自加或自减运算符执行一次只能加一个1或是减一个1
3)自加或自减的对象只能是变量(因为++--带有赋值的含义)
4)例1:
inta=10,b=5;
a+=b++;
过程分解为:
a=a+ba最后为15
b=b+1b最后为6
inta=10,b=5;
a+=++b;
b=b+1b最后为6
a=a+ba最后为16
5)像a++;
v--;
++b;
这样的表达式中只有自加、自减运算的运算式子,就不用考虑它们
的意义,直接给自加、自减的对象所表示存储空间中的值加、减一个1
逗号表达式
(表达式1,表达式2,表达式3,表达式4)
2)运算原则:
从最左边的第一个表达式开始一个、一个表达式往右计算,把最后
一个表达式的结果做为整个逗号表达式的结果进行处理。
3)运算原则:
要是一个逗号表达式共包含了n个表达式,如果前n-1个表达式的
结果对最后一个表达式的结果没有影响的话,前n-1个表达式就可以
不用计算
4>
;
inta,b;
a=(b=3,b++,++b,b+=10);
最后a为15
第三章顺序结构
1:
printf(“输出控制格式“,输出列表);
2:
printf(“输出控制格式“);
由%加格式字母组成
格式字母分类
charcshortintdlongldfloatfdoublelf
指数eE八进制o16进制xX
%d:
十进制整型%o:
八进制整型%x:
十六进制整型%ld:
十进制长整型
1>
:
输出字符类型值
a:
charch=’A’;
printf(“%c\n”,ch);
b:
charch=5;
printf(“%c\n”,ch);
2)输出整型值
printf(“%d\n”,a);
3)输出长整型值
longb=100;
printf(“%ld\n”,b);
4)输出实型值
doublec=3.145;
printf(“%lf\n”,c);
5)在%和格式字母之间可以加输出的总宽度对字符值和对整型值
charch=’D’;
printf(“%4c\n”,ch);
inta=1540;
printf(“%7d\n”,a);
当所设的总宽度比数值的实际总宽度大时,数据默认右对齐显示,左侧没有占用完
的空间上会显示空格。
当所设的总宽度小或等于数值的实际总宽度时,所设的总宽度失效,数据按原样显示。
对实型值
doublea=3.52;
printf(“%10lf\n”,a);
注意:
所设的总宽度是整数部分数字、小数部分数字、小数点三部分之和的总宽度,输出时先输出标准的6位小数部分,再输出一位小数点,此时要是所剩的总宽度比实际数值的整数部分列宽大,左侧没有占用完的空间上会显示空格,要是比实际数值的整数部分列宽小或相等,都按原数值的整数部分列宽显示
6)对指数
doublea=325.14;
printf(“%15e\n”,a);
所设的总宽度是整数部分数字、小数部分数字、小数点、指数格式四部
分之和的总宽度,输出时先输出标准的5位指数部分,再输出6位小数部
分和一位小数点,此时要是所剩的总宽度比实际数值的整数部分列宽大,
左侧没有占用完的空间上会显示空格,要是比实际数值的整数部分列宽小
或相等,都按原数值的整数部分列宽显示
7)改变输出时的对齐方式
inta=2124;
printf(“%-6d\n”,a);
在%和格式字母之间加–会使的数值从左往右显示,有多余的空间会在数值的后
面显示
8)加0格式
inta=1452;
printf(“%010d\n”,a);
当所设的总列宽比数值的实际列宽大时,会在前面没有占用完的空间上
全部显示0,当没有多余的空间时0格式就失效了
9)注意:
当0格式遇到–左对齐时,0格式就失效
10)加m.n格式只对实型
doublea=3541.125;
printf(“%12.4lf\n”,a);
所设的总宽度是整数部分数字、小数部分数字、小数点三部分之和为12
列,输出时先输出标准的4位小数部分(要是小数部分的实际列宽大于所
设置的列宽时,对多出来的小数部分进行四舍五入,要是比实际的小数
部分列宽小,不够的位用0填补,要是两者相同就按原样输出),再输出
一位小数点,此时要是所剩的总宽度比实际数值的整数部分列宽大,左
侧没有占用完的空间上会显示空格,要是比实际数值的整数部分列宽小
11)当输出格式的个数比输出列表中值的个数多时,多出的格式会显示随机值
inta=1,b=2;
printf(“%d,%d,%d”,a,b);
12)当输出格式的个数比输出列表中值的个数少时,多出的数值不处理
inta=1,b=2,c=3;
printf(“%d,%d\n”,a,b,c);
13)当%后面所跟的不是一个合法的格式字母时,就把这个错的格式字母原样输出
printf(“%D,%D,%D\n”,a,b,c);
结果是:
D,D,D
printf(“%%d,%%d,%%d\n”,a,b,c);
%d,%d,%d
1)scanf(“格式控制”,地址列表);
2)取地址符&
3)给多个字符型空间中赋值
chara,b,c;
scanf(“%c%c%c”,&
a,&
b,&
c);
要求:
输入字符值时,必须挨个、连续的输入,各个字符值之间不能加任何符号
4)给多个整型空间中赋值
多个格式之间不加任何符号
scanf(“%d%d%d”,&
/*%ld%f%lf*/
要求:
输入时各个数值之间必须以空格符或回车符隔开输入
b:
多个格式之间以某中符号隔开(适合字符型%c、整型%d%ld、实型%f%lf)
scanf(“%d,%d:
%d”,&
输入时,除了用数值换相应的格式以外,其它符号必须原样输入
5)给多个实型空间中赋值原理和第4条一致
6)多个不同格式之间不加任何符号输入
inta;
charb;
doublec;
scanf(“%d%c%lf”,&
在非字符型格式和字符型格式之间不能加任何符号、连续输入,在
字符型格式和非字符型格式之间可以加空格符或回车符或什
么都不加
scanf(“a=%d,b=%c,c=%lf”,&
7)在%和格式字母之间加输入总宽度
例1:
inta,b,c;
scanf(“%3d%3d%3d”,&
运行时:
输入的数值为123456789,结果是:
a中存放了123,b中存放了456,
c中存放了789
例2:
charch;
scanf(“%4c”,&
ch);
想给变量ch中存放一个大写字母D,就必须这样写:
D空格空格空格
因为%c只能从屏幕的右侧取一列字符值
8)多条输入语句同时执行
sc