《C语言程序设计》学习资料1Word文档格式.docx
- 文档编号:19760116
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:28
- 大小:39.45KB
《C语言程序设计》学习资料1Word文档格式.docx
《《C语言程序设计》学习资料1Word文档格式.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》学习资料1Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
双目运算
b)算术>
关系运算>
逻辑运算>
条件运算>
赋值运算>
逗号运算
2.算术运算符:
a)%要求左右两边都是整型数,运算结果为余数。
b)/运算若左右两边都是整型数,结果为整数。
c)自增自减运算符,前置先自增减,再运算;
后置先运算,再自增减。
自增自减运算符只能作用于变量,不能作用于常量和表达式。
如:
#defineA3
A++;
是错误写法。
3.关系运算符:
a)注意赋值=与关系==的区别。
b)c语言中没有逻辑类型,逻辑“真”用非0表示,逻辑“假”用0表示,
c)x在[a,b]间的关系表达式为x>
=a&
&
x<
=b,不能写为a>
=x>
=b。
但该表达式语法成立,有运算结果。
如3>
=1>
=5运算时从左向右依次运算,即3>
=1为真,值为1,此时,表达式为1>
=5,运算结果为假,值为0。
所以整个1>
=3>
=5的值为0.
4.逻辑运算符:
a)!
为单目运算符优先级别比较高。
b)&
和||运算时注意短路原则。
5.赋值运算符:
自右向左的结合方向
a)复合赋值运算符的使用。
如a=12,则a+=a-=a*=a;
运算后a的值
6.条件运算符:
(表达式1?
表达式2:
表达式3)
a)结合方向从右向左。
7.逗号运算符:
优先级别最低;
也叫顺序执行运算符,表达式的数值逗号最右边的那个表达式的数值。
(2,3,4)的表达式的数值就是4
表达式
1.能将数学表达式写成c表达式
2.计算表达式的值,注意优先级别和结合方向。
第四章顺序程序设计
输入输出函数
12.printf函数的格式考查:
a)格式:
printf(“格式控制串”,输出表)
b)输出表:
要输出的数据(可以没有,多个时以“,”分隔)
格式控制串:
包含两种信息
●格式说明:
%[修饰符]格式字符,用于指定输出格式
●普通字符或转义序列:
原样输出
c)修饰符m、n、l的功能:
修饰符
功能
m
输出数据域宽,数据长度<
m,左补空格;
否则按实际输出
.n
对实数,指定小数点后位数(四舍五入)
对字符串,指定实际输出位数
L
在d,o,x,u前,指定输出精度为long型
在e,f,g前,指定输出精度为double型
13.scanf
a)格式:
scanf(“格式控制串”,地址表)
b)格式控制字符串中包含的非格式控制字符要原样输入;
scanf(“sum=%d”,&
a);
输入时”sum=”也要输入。
scanf函数中没有精度控制,如:
scanf(“%5.2f”,&
a);
是非法的。
3.getchar()获取一个字符。
charc;
c=getchar();
4.putchar()输出一个字符,括号中的参数是一个字符变量或常量
putchar(‘a’);
第五章选择结构程序设计
三种程序结构:
顺序结构、选择结构、循环结构
if语句(条件选择语句)
a)if语句的三种形式:
b)if后面的表达式类型任意的;
若执行语句是多条,必须为复合语句,即
写在一对花括号内。
c)if结构可以嵌套,注意缺省{}时,else总是和它上面离它最近的未配对的if配对
switch语句
a)格式中,E1,E2,…En是常量表达式,且值必须互不相同
b)注意执行时语句中有break和无break时,执行流程的区别。
c)default可以不写。
第六章循环结构
三种循环结构:
1.while语句
a)当型结构,条件成立执行循环体。
b)先判断表达式,后执行循环体。
循环体有可能一次都不执行
2.do~while语句
a)先执行后判断,至少执行一次循环体
b)do~while语句表达式后面必须加分号
3.for语句
a)for语句中expr1,expr2,expr3类型任意,都可省略,但分号;
不可省
循环嵌套:
14.执行时先内存循环,后外层循环。
15.外层循环可包含两个以上内循环,但不能相互交叉
break和continue(注意程序中两者的区别)
1.break语句在循环语句和switch语句中,终止并跳出循环体或开关体
2.break只能终止并跳出最近一层的结构
3.continue语句,结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断
4.continue仅用于循环语句中
第七章数组
一维数组:
16.一维数组的定义:
数据类型数组名[常量表达式];
(a)常量表达式表示数组元素个数,从0开始计算。
(b)不能用变量来表示元素的个数,可以是符号常量或常量表达式。
(c)数组名为地址常量
17.一维数组元素的引用:
数组名[下标]
(a)只能逐个引用数组元素,不能一次引用整个数组
18.一维数组初始化:
类型说明符数组名[常量表达式]={值1,值2,……,};
(a)只给部分数组元素赋初值,当{}中值的个数少于元素个数时,只给前面部分元素赋值,其余自动赋零。
(b)当全部数组元素赋初值时,可不指定数组长度
二维数组:
19.二维数组的定义:
数据类型数组名[常量表达式][常量表达式];
(a)数组元素的存放顺序:
按行序优先
20.二维数组元素的引用:
数组名[行下标][列下标]
21.二维数组初始化:
(a)可以按行赋值,也可逐元素赋值。
字符数组:
22.字符数组的定义:
char数组名[常量表达式];
2.字符数组的输入输出:
(a)按字符输入输出(getchar、putchar、printf+%c控制字符、scanf+%c)
(b)字符串输入输出(gets、puts、printf+%s控制字符、scanf+%s)(此方法的4个函数格式要重点掌握)
3.字符串处理函数
(a)头文件#include<
string.h>
(b)常用函数:
strlenstrcatstrcmpstrcpy
第八章函数
函数定义的一般形式
1.类型说明符函数名(参数类型说明形式参数[,参数类型说明形式参数])
{类型说明
语句
}
2.有返回值函数中至少应有一个return语句。
3.函数无返回值,指定它的返回为“空类型”,空类型的说明符为“void”,此时,函数体内无return语句。
4.在C程序中,一个函数的定义可以放在任意位置
函数说明:
1.格式:
(a)类型说明符被调函数名(类型形参,类型形参…);
(b)类型说明符被调函数名(类型,类型…);
(c)类型说明符被调函数名();
2.如果被调函数的返回值是整型或字符型时,可以不对被调函数作说明,而直接调用。
3.当被调函数的函数定义出现在主调函数之前时,可以不对被调函数作说明。
4.对库函数的调用不需要再作说明,但必须把该函数的头文件用include命令包含在源文件前部
函数调用:
23.格式:
函数名(实际参数表)。
对无参函数调用时则无实际参数表。
实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。
各实参之间用逗号分隔。
24.函数调用时的求值顺序,各系统不同,TC环境从右向左求值。
voidmain()
{inti=8;
printf("
%d\n%d\n%d\n%d\n"
++i,--i,i++,i--);
//8,7,7,8
函数的参数和函数的值:
1.函数的参数:
形参和实参
(a)形参变量是局部变量,只在函数内部有效,在被调用时才分配内存单元
(b)实参可以是常量、变量、表达式、函数等.
(c)实参和形参在数量上,类型上,顺序上应严格一致,否则会“类型不匹配”
(d)参数传递采用“单向传值”方式。
形参的改变不影响实参。
2.函数的值:
(a)函数返回值类型和函数定义中的类型应保持一致。
不一致,以函数类型为准
(b)函数值为整型,在函数定义时可以省去类型说明
数组名作为函数参数:
1.例:
voidnzp(inta[],intn),a后必须有[]符合说明a是数组
2.数组名作为函数参数时还应注意以下几点:
(a)形参数组和实参数组的类型必须一致,否则将引起错误。
(b)形参数组和实参数组的长度可以不相同,
3.实参只需给出数组名即可。
函数的嵌套调用和递归调用
变量的作用域和生存周期
1.全局变量定义在所有函数外部,作用范围从变量定义位置起到文件介绍
2.静态变量+static说明。
程序运行期间空间都不释放。
第九章指针
指针概念:
指针变量:
1.定义格式:
类型说明符*变量名;
2.初始化和赋值:
不允许把一个数赋予指针变量,int*p;
p=1000;
-----错误!
&
运算和*运算
inta=5,*p=&
a;
p是指针,*p是p所指向的目标变量,即a
必须有且只能有一个主函数main()
程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。
指针与一维数组(常考!
!
)
inta[5],*pa=a;
则pa指针保存数组a的首地址,pa指向a的第一个元素。
p++,p--相当于p指向下一个或上一个数组元素。
加减运算
对指向数组,字符串的指针变量可以进行加减运算,如p+n,p-n,p++,p--等。
对指向同一数组的两个指针变量可以相减。
对指向其它类型的指针变量作加减运算是无意义的。
关系运算:
指向同一数组的两个指针变量之间可以进行大于、小于、等于比较运算。
指针可与0比较,p==0表示p为空指针。
多维数组的地址表示方法:
注意区别行地址和列地址
数组名和数组指针变量都可做函数参数
相关概念:
int*p;
p为指向整型量的指针变量
int*p[n];
p为指针数组,由n个指向整型量的指针元素组成。
int(*p)[n];
p为指向整型二维数组的指针变量,二维数组的列数为n
int*p() p为返回指针值的函数,该指针指向整型量
int(*p)() p为指向函数的指针,该函数返回整型量
int**p p为一个指向另一指针的指针变量,该指针指向一个整型量。
第十章结构体和共用体
结构体类型的定义
定义一个结构的一般形式为:
struct结构名
{
成员表列
};
结构体变量的定义:
一般有三种形式,常用在定义结构类型的同时说明结构变量。
例如:
structstu
{
intnum;
charname[20];
charsex;
}boy1,boy2;
boy1,boy2就是该结构体类型的两个变量。
结构体变量的引用:
25.结构变量成员的一般形式是:
结构变量名.成员名
结构数组
数组的元素也可以是结构类型的。
因此可以构成结构型数组。
结构数组的每一个元素都是具有相同结构类型的下标结构变量。
在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。
如一个班的学生档案,一个车间职工的工资表等。
结构指针变量
1.说明的一般形式为:
struct结构名*结构指针变量名
2.访问的一般形式为:
(a)(*结构指针变量).成员名
(b)结构指针变量->
成员名
链表:
1.概念
建立链表的方法
第十一章预处理命令
宏定义
在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。
被定义为“宏”的标识符称为“宏名”。
在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。
带参宏定义
1.带参宏定义的一般形式为:
#define宏名(形参表)字符串在字符串中含有各个形参。
带参宏调用的一般形式为:
宏名(实参表);
2.在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。
对带参数的宏,在调用中,先进行宏展开,再用实参去代换形参。
(常考,容易出错)
文件包含
1.一般形式为:
#include"
文件名"
例如:
stdio.h"
math.h"
【知识点练习】
一、选择题
1.以下不能定义为用户标识符的是:
(A)INT(B)_int(C)2int(D)int25
2.以下说法中正确的是:
()
(A)C语言程序总是从第一个定义的函数开始执行
(B)在C语言程序中,要调用的函数必须在main函数中定义
(C)C语言程序总是从main函数开始执行
(D)C语言程序中,main函数必须放在程序的开始部分
3.在一个C语言程序中()
A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现
C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置
4.以下程序运行后,输出结果是。
main( )
{char*p="
123456"
;
%s\n"
,p+2);
}
(A)123456 (B)456
(C)23456 (D)3456()
5.以下程序运行后,输出结果是。
#defineN3
#defineS(x)x+N
main()
{
%d\n"
,S
(2)*S
(2));
}
(A)4(B)9
(C)25(D)11 ()
6.下列程序的输出结果是
{inta[10]={1,3,5,7,9,11,13,15,17,19},*p;
p=a+4;
%d"
*(p++));
}
(A)5(B)7
(C)9(D)11()
7.下面程序段的运行结果是。
structstudent
{inta;
floatb;
charc;
};
printf(“%d\n”,sizeof(structstudent));
(A)7(B)4
(C)2(D)8()
8.判断字符串s1是否大于字符串s2,应当使用。
(A)if(s1>
s2)(B)if(a==b)
(C)if(strcpy(s2,s1)>
0)(D)if(stcmp(s1,s2)>
0)()
9.以下程序的输出结果是。
{inta=15;
printf("
%d%d\n"
a,a++);
}
(A)1615(B)1515
(C)1716(D)1616 ()
10.若x、i、j和k都是int型变量,计算x=(x=4,x=16,k=32)表达式后,x的值为。
(A)4(B)16
(C)32(D)52()
11.执行以下语句后,a,b的值分别为。
inta,b,c;
a=b=c=1;
++a||++b&
++c;
(A)2,2 (B)1,1
(C)2,1 (D)1,2()
12.下面程序段的运行结果是:
unionstu
{intnum;
charname[10];
floatscrose;
printf(“%d\n”,sizeof(unionstu));
(A)18(B)16
(C)10(D)2()
13.数组定义为:
inta[4][5];
引用“a[1]+3”表示的是。
(A)a数组第2行第4列元素的地址(B)a数组第2行第4列元素的值
(C)a数组第4行的首地址(D)a数组第1行第3个元素的地址()
14.下面函数
f(doublex)
{printf(“%6d”,x);
}的类型为()
A.实型B.void类型C.int类型D.均不正确
15.C语言中,简单变量做实参时,它和对应的形参之间的数据传递方式是。
(A)地址传递 (B)单向值传递
(C)由实参传给形参,再由形参传递给实参
(D)同用户指定传递方式
16.若使用一维数组名作函数实参,则以下正确的说法是()
A.必须在主调函数中说明此数组的大小
B.实参数组类型与形参数组类型可以不匹配
C.在被调用函数中,不需要考虑形参数组的大小
D.实参数组名与形参数组名必须一致
17.关于指针概念说法不正确的是()
A.一个指针变量只能指向同一类型变量
B.一个变量的地址称为该变量的指针
C.只有同一类型变量的地址才能放到指向该类型变量的指针变量之中
D.指针变量可以由整数赋,不能用浮点赋
18.在C语言中,以下说法中正确的是()
A.实参与其对应的形参各占用独立的存储单元
B.实参与其对应的形参占用同一个存储单元
C.只有当实参与形参同名时才占用同一个存储单元
D.实参占用存储单元,但形参是虚拟的,不占用存储单元
19.执行语句:
for(i=1;
i<
=9;
i++);
后;
变量i的值是。
()
A.10B.9C.不定 D.11
20.以下程序的输出结果是。
()
main()
{charch[3][5]={"
1111"
"
222"
"
33"
ch[0]);
}
A.1111B.222C.111122233D.33
21.以下程序运行后,输出结果是。
#defineS(x)x*x
{printf("
,S(1+2));
}
A.9B.7C.5(D)6
22.下列程序的输出结果是()
{intx,y,z;
x=y=z=1;
++x&
++y||++z;
printf("
%d%d%d\n"
x,y,z);
A.111 B.222C.221 D.211
23.设int*p[4];
则以下叙述中正确的是。
A.p是指向包含4整型元素的一维数组的指针;
B.p是指向int型数据的指针变量;
C.p是指向函数的指针,该函数返回一个int型数据;
D.p是一个指针数组
24.若有说明语句:
inta,b,c,*d=&
c;
,则能正确从键盘读入三个整数分别赋给变量
a、b、c的语句是()
A)scanf("
%d%d%d"
&
a,&
b,d);
B)scanf("
b,&
d);
C)scanf("
a,b,d);
D)scanf("
a,b,*d);
25.以下定义语句中正确的是()
A)chara='
A'
b='
B'
;
B)floata=b=10.0;
C)inta=10,*b=&
D)float*a,b=&
26.设a=6,b=4,则表达式b*=a+3的值为()
A)3B)18C)27D)36
27.有数组定义:
chararray[]=”Computer”;
则数组array所占的存储空间为()
A)7个字节B)8个字节C)9个字节D)10个字节
28.已知inta[2][3]={{1,3,5},{2,4,6}};
则*(*(a+1)+2)的值是()
A)6B)3C)5D)4
29.有如下程序段,其输出结果是:
inta=3;
floatb=15.6,f=1.5;
printf(“%d”,a+(int)b/2+(int)f%3);
A)10B)11C)12D)13
30.已知inta=5,b=7,c=3;
则逻辑表达式a<
b||++c运算后,c的值为()
A)1B)=0C)3D)4
31.若有如下程序,其输出的结果为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 学习 资料