C语言讲义计算机培训版Word文档下载推荐.docx
- 文档编号:16779776
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:43
- 大小:150.11KB
C语言讲义计算机培训版Word文档下载推荐.docx
《C语言讲义计算机培训版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言讲义计算机培训版Word文档下载推荐.docx(43页珍藏版)》请在冰豆网上搜索。
返回一个对象或者类型所占的内存字节数
2013.3-16、30
typedef:
为现有数据类型创建一个新的名字。
用法:
typedef数据类型别名
例:
typedefinta;
具体实例见2013.3-36
练习题:
2013.9-35
3.运算符
算术运算符(七个):
+、-、*、/、%、++、--
关系运算符(六个):
>
、<
、==、>
=、<
=、!
=
逻辑运算符(三个):
&
、||、!
赋值运算符:
位运算符:
<
(向左移位)、>
(向右移位)、~(取反)、
∣(按位或)、∧(按位异或)、&
(按位与)
a=3;
a<
4;
00000011(十进制3)向左移4位00110000(48)
a=15;
a>
2;
00001111(十进制15)向右移2位00000011(3)
~9;
0000000000001001(十进制9)取反111111*********0
9|5=13;
(两数对应的二进制位执行或运算,一真为真,双假为假)
9∧5=12;
(两数对应的二进制位相异或,值相同为0,相反为1)
9&
5=1;
(两数对应的二进制位执行与运算,双真为真,一假为假)
补充知识点:
A进制组成元素
十进制元素:
0、1、2、3、4、5、6、7、8、9
二进制元素:
0、1
八进制元素:
0、1、2、3、4、5、6、7
十六进制元素:
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
B进制转换
十进制二进制
方法:
整数部分(除2取余,逆序书写)小数部分(乘2取整,正序书写)
二进制十进制方法:
按权相加
二进制八进制方法:
取三合一
八进制二进制方法:
取一分三
二进制十六进制方法:
取四合一
十六进制二进制方法:
取一分四
38(13.9);
39(13.3);
39(12.9);
39(12.9笔试);
39(09.3)
运算符优先级:
逗号运算符赋值运算符&
和||条件运算符关系运算符算术运算符!
低高
4.分隔符:
空格、逗号
5.常量
6.注释符:
/*程序解释说明*/
二、常量和变量
常量:
在程序运行过程中,值不能被改变的量,类型包括字面常量和符号常量(通过宏定义命令定义一个标识符代表一个常量)。
#definePI3.14
变量:
在程序运行过程中,值可以改变的量
区分三个概念:
变量名、变量值、变量地址
三、数据类型(表示方式、存储方式)
1.整型数据
(1)常量表示方式:
1)十进制形式例:
10、-1
2)八进制形式例:
012、037
3)十六进制形式例:
0x12、0Xffff
(2)整型变量
变量定义:
intnum,score;
变量类型:
int(有符号整型)数值范围:
-32768~32767
unsigned(无符号整型)0~65535
变量存储:
2个字节
正整数——源码存储,最高位为0(正)
负整数——补码存储,最高位为1(负)
原码、补码
计算机中所有的数据都是采用补码存放的。
符号位0为正、1为负
正数:
原码=补码
负数:
原码反码补码
补码的意义:
使符号位能直接参加运算
减法运算换位加法运算
intn=1;
intn=-1;
2.实型数据
1)十进制形式例:
0.0、.25、30.
2)指数形式例:
1.25e5(1.25x105)
3)后缀式例:
25f(25.)
1)十进制形式不能缺少小数点
2)指数形式,e前必须有数字,e后必须有整数
(2)实型变量
floatf;
单精度实型变量4个字节7位有效数字
doubled;
双精度实型变量8个字节16位有效数字
例:
voidmain()
{floatf=111111.111111;
doubled=111111.111111;
printf(“f=%fd=%d”,f,d);
}
运行结果:
f=111111.109375d=111111.111111
3.字符型
(1)字符常量表示方式:
1)普通表示形式例:
'
A'
、'
a'
、'
¥'
2)转义字符形式
表示控制字符例:
\n'
\t'
\b'
表示特殊字符例:
\’'
\”'
\\'
表示所有字符例:
\ddd'
\xhh'
1)'
为字符,“A”为字符串
2)'
1~3位八进制数,'
1~2位十六进制数
(2)字符变量
charc;
变量存储:
字符型变量占用1个字节
每个字符对应一个ASCII码(a-97,A-65)
字符变量保存的是字符对应的ASCII码值
字符变量可以与int变量一样作加减运算
12(13.9);
12、32(13.3);
13(12.9);
13、15、22(12.9笔试);
16、30(2012.3);
13(09.3);
四、表达式
表达式是由运算符和运算对象组成的合法式子。
1.算术运算符及其表达式
单目运算符:
++、--
intm=1,n=m++;
n的值为1
intm=1,n=++m;
n的值为2
注:
++和—只能用于变量,不能用于常量和表达式
双目运算符:
+、-、*、/、%
求余运算符%的两个运算对象必须是整型。
运算结果的类型取决于数据类型占内存大的运算对象
2.赋值运算符和赋值表达式
a=3b=a+3
复合赋值运算符:
c+=32等价于c=c+32
z*=a-b等价于z=z*(a-b)
赋值运算符自右向左结合
3.逗号运算符和逗号表达式
形式:
表达式1,表达式2…,表达式n
取值:
逗号表达式自左向右执行,但整个表达式取值表达式n
4.强制类型转换
(类型名)(表达式)
intb=7;
floata=2.5,c=4.7;
a+(int)(b/3*(int)(a+c)/2.0)%4值为5.5
14、15、16(13.9);
15(13.3);
15(12.9);
18(12.9笔试);
14(09.3)
第三节顺序结构
一、赋值语句
1.形式:
变量=表达式;
注:
赋值右结合性。
例inta,b;
floatc;
a=b=c=5.2;
赋值语句不等于赋值表达式。
2.基本数据类型变量的赋值:
整型变量:
inta=5;
(初始化)inta;
a=5;
(赋值语句)
实型变量:
floatf=5.2;
或floatf;
f=5.2;
doubled=1.23;
或doubled;
d=1.23;
字符变量:
charc='
;
或charc;
c='
;
charc=65;
charc='\101';
charc=\X41;
动态变量只定义,未赋值,其变量保存的是一个随机值。
inti,j,k;
i=j=k=0;
正确inti=j=k=0;
错误;
12(09.3)
二、输入输出
1.字符的输入/输出
字符输入getchar();
/*只能用键盘输入一个字符*/
字符输出putchar(ch);
charch='A';
putchar(ch);
putchar('A');
intch=65;
putchar(ch);
putchar(65);
putchar('\101');
putchar('\X41');
2.格式化输入\输出
(1)格式化输入:
scanf("格式控制字符串",地址列表);
格式符:
c-一个字符、s--字符串
d-十进制整数、o-八进制整数、
x-十六进制整数、u-无符号十进制整数
e(le)、f(lf)-单精度(双精度)
scanf("a=%d,b=%c,c=%c",&
a,&
b,&
c);
int、float数据输入可用空格、换行、Tab键作分隔。
对于字符数据来说,空格、转移字符、换行均为有效字符。
(2)格式化输出:
printf("格式控制字符串",输出列表);
d、o、x(X)、c、s、f
附加格式说明符:
m-数据最小宽度--字符向左靠
n-输出n位小数(实数)、截取n个字符
%o、%x不能输出负数
visual6.0C++编译器中int数据分配四个字节
17(13.9);
17、29(13.3);
16、17、29(12.9);
16(12.9笔试);
15(12.3);
15、23(09.3)
第四节选择结构
一、关系表达式、逻辑表达式的运算
关系运算符:
>
=<
<
===!
关系运算符结合性:
自左向右
关系表达式的运算值:
非0为真,0为假
逻辑运算符:
||!
逻辑运算符结合性:
和||自左至右!
自右至左
逻辑表达式的运算值:
&
双真为真,一假为假
||一真(双真)为真,双假为假
!
你真我假,你假我真
逻辑表达式求值采用“非完全求解法”,得值即终
intx=1,y=1,z=1,a;
a=(x=0)&
(y=2)&
(z=3);
/*a=0,x=0,y=1,z=1*/
a=(x=5)&
(y=0)&
/*a=0,x=5,y=0,z=1*/
a=(x=5)||(y=2)||(z=3);
/*a=1,x=5,y=1,z=1*/
a=(!
x)||(y=0)||(z=3);
/*a=1,x=1,y=0,z=3*/
二、if语句
if语句三种形式:
(1)单分支选择:
if(表达式)语句;
(2)双分支选择:
if(表达式)语句1;
else语句2;
(3)多分支选择:
if(表达式1)
语句1;
elseif(表达式2);
第二组
语句2;
elseif(表达式3);
语句3;
………
(1)if(表达式1)表达式1可为逻辑表达式、关系表达式、常量、变量、各种表达式。
0为假,非0为真。
(2)复合语句需用{语句1;
语句2}。
(3)If语句嵌套:
if执行语句中再次包含if语句。
if-else的配对原则:
else总与它前面最近的尚未匹配过的if配对。
19(13.9);
18、19、32(13.3);
18、19(12.9);
17、18、19(09.3)
三、条件表达式
形式:
表达式1?
表达式2:
表达式3
结合性:
自右向左
intw=1,x=2,y=3,z=4;
w>
x?
w:
y<
z?
y:
z;
值为3
18(13.9),23(12.9笔试)
四、switch语句
switch(表达式){
case常量表达式1:
语句1;
case常量表达式2:
…………
case常量表达式n:
语句n;
break;
default:
语句n+1;
}
关键字switch后面的表达式的值是整型或字符型
case后必须为常量表达式,且各值不能相同。
default语句可以省略不用。
break语句用来控制语句执行的停止!
20、27(13.9);
20、22(13.3);
20(12.9);
19(12.9笔试)
第五节循环结构
二、while语句
while(表达式)循环体
执行程序:
先判断,后执行
32(13.9);
21、31(12.9);
20(12.9笔试);
22(09.3)
三、do-while语句
do
循环体
while(表达式);
先执行,后判断
do循环体while(表达式);
while语句当条件为真时执行。
do-while语句先执行一次再判断真假。
32(12.9);
21(09.3)
四、for语句
for(表达式1;
表达式2;
表达式3)
循环体
表达式1:
赋值表达式
关系表达式或逻辑表达式,用来控制循环次数。
表达式3:
修改循环变量的值
三个表达式是任选项,可以省略,但表达式后的分号不可省略
21、22、28(13.9);
21(13.3);
27、28、32(12.9笔试);
20、28(09.3)
五、continue和break
continue语句形式:
continue;
作用:
结束本次循环
break语句形式:
break;
作用:
结束整个循环练习题:
填空9(09.3)
第三课第一节函数
一、定义:
大程序中的小程序模块,其实现独特的功能。
二、分类
1.定义角度分:
库函数和用户自定义函数
2.定义形式分:
无参函数、有参函数、空函数
类型标识符函数名(形式参数列表)
{声明部分
语句
函数由函数头(类型标识符+函数名)和函数体({}中的内容)两部分组成
类型标识符:
void、int(可省略)、char、float……
未定义类型标识符的函数,默认返回值为int
三、函数调用
一般形式:
函数名(实际参数表)
调用方式:
(1)函数表达式例:
d=sum(a,b);
(2)函数语句例:
printf("%d",a);
(3)函数参数例:
printf("%d",sum(a,b));
实参可以是常量、变量、表达式、函数等
C语言中函数不可以嵌套定义,但可以嵌套调用
四、被调函数声明
1.声明形式:
函数头+分号结束
(1)类型说明符被调函数名(类型形参,类型形参,……);
(2)类型说明符被调函数名(类型,类型,……);
intsum(inta,intb);
或intsum(int,int);
1)在主调函数中声明被调函数
2.免声明的三种情况:
函数返回值为整型或字符型
被调函数定义出现在主调函数之前
在所有函数之前,函数外预先声明函数类型
五、函数的参数传递
sum(inta,intb){
a=a+b;
/*a,b形参*/
printf("%d",a);
}
voidmain(){
inta,b;
a=b=2;
sum(a,b);
/*a,b实参*/
实参和形参在数量上、类型上、顺序上一定要一致
形参变量只有在函数被调用时才分配内存单元,调用结束时,便会释放所分配的内存单元
当形参是普通变量时,实参和形参间值单向传递
六、函数的返回值
返回值:
被调函数运行之后返回给主调函数的值
实现方式:
return表达式;
(1)函数返回值类型应与函数类型相一致,如果不一致,则以函数类型为准,自动进行类型转换。
(2)空类型void函数不能使用return语句返回值。
(3)函数中允许有多个return语句,但每次函数调用只能有一个return语句被执行。
23(13.9),23(13.3)
七、函数的嵌套与递归
嵌套:
主函数调用A函数,A函数中调用B函数
递归:
主函数调用A函数,A函数中调用A函数
八、函数变量
1.根据作用地域可分为:
局部变量和全局变量
例1:
局部变量
main()
{inta=2,b=4,c;
c=a*b;
{intc=5;
第二个定义:
c=%d\n"
c);
第一个定义:
运行结果:
不同函数中的变量名可以相同,但作用域遵守:
我的地盘我做主原则!
例2:
全局变量
externintx,y;
fun()
{printf("
%d,%d"
x,y);
intx=1,y=2;
voidmain()
全局变量作用域从定义变量位置开始到程序文件结束。
关键字extern对全局变量进行声明,可以扩大变量的作用域
2.根据存储方式分类:
静态变量(static)动态变量(auto、register)
auto变量,动态分配存储空间,存储局部变量。
register变量,寄存器空间,存储局部自动变量和形式参数
static变量,静态存储空间,初值不是随机的,数值类型初值为0,字符类型为空字符,在程序整个运行期间都不释放。
34(13.9),33、34(13.3)
第二节编译预处理命令
编译预处理命令主要包含三种:
文件包含、宏定义和条件编译,每一条编译预处理命令单独占一行,均以“#”开头,末尾不加分号,其可以出现程序中任何位置。
一、文件包含
#include"文件名"
#include"stdio.h"
2.功能:
将指定的文件内容引入当前命令行位置,取代该命令行
二、宏定义
无参宏#define标识符字符串
#definePI3.1415926
有参宏#define宏名(形参数)字符串
#defineS(r)PI*(r)*(r)
将程序中所有宏名用替换文本替换
#defineA3+2
#defineBA*A
求表达式“B/B”的值?
答案:
17
26、37(13.9);
37(13.3);
第三节数组
一、一维数组
1.数组含义:
若干有序排列的相同类型数据元素的集合称为数组。
2.一维数组定义:
类型说明符数组名[常量表达式];
inta[10],b[20];
floatc[10];
charch[20];
3.数组元素
含义:
数组的基本单元表示形式:
数组名[下标]
(1)所有的数组元素类型必须是相同的
(2)数组名不能与其他变量名相同
(3)数组元素“下标”只能为整型常量或整型表达式,例a[5],a[i],a[i+j]编号从0开始
(4)数组定义时,元素个数可以是符号常量和常量表达式,不可以是变量
4.数组初始化:
在数组定义时给数组元素赋予初值
类型说明符数组名[常量表达式]={值,值,……};
inta[5]={0,1,2,3,4};
(1)初始化时可以只给部分元素赋初值,其余元素自动赋值0
inta[5]={0,1};
未初始化或采用赋值语句赋值,其他数组元素为不确定值。
inta[5];
a[0]=1;
a[1],a[2]值不确定
(2)只能给元素逐个赋值,不能给数组整体赋值
inta[5]={1,1,1,1,1};
(3)如果给全部元素赋值,可以不给出元素个数
例:
inta[]={1,2,3,4,5};
5.数组的使用:
例inta[5]={0,1,2,3,4};
for(inti=0;
i<
5;
i++)
printf(“数组a的第%d个元素的值为%d”,i+1,a[i]);
二、二维数组
类型说明符数组名[常量表达式1][常量表达式2]
例inta[7][8];
2.数组元素:
数组名[下标(行)][下标(列)]例a[3][4]
3.初始化:
按行分段赋值例inta[2][2]={{12,21},{32,25}};
按行连续赋值例inta[2][2]={12,21,32,25};
可以只对部分元素赋初值,未赋值元素自动取值为0.
inta[3][3]={{1},{2},{3}};
如果对全部元素赋初值,则第一维的长度可以不给出。
inta[][3]={1,2,3,4,5,6,7,8,9};
26(13.3)
4.元素存储:
按行排列依次连续存储。
若二维数组a有m列,则元素a[i][j]在数组中的位置是______。
(设a[0][0]位于数组的第一个位置上)答案:
m*i+j+1
若二维数组a有m列,则在a[i][j]前的元素个数为。
A.j*m+iB.i*m+j+1C.i*m+j-ID.i*m+j答案:
D
例intinta[2][2]={{12,21},{32,25}}
for(intj=0;
j<
j++)
printf(“%d行,%d列元素的值为%d\n”,i,j,a[i][j]);
6.数组排序(扩展)
方法一:
选择排序法
算法:
从第一个数字开始依次与其后的数字比较,将最小/最大的数字交
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 讲义 计算机 培训