《C语言程序设计》学习资料1Word文档格式.docx

上传人:b****5 文档编号:19760116 上传时间:2023-01-09 格式:DOCX 页数:28 大小:39.45KB
下载 相关 举报
《C语言程序设计》学习资料1Word文档格式.docx_第1页
第1页 / 共28页
《C语言程序设计》学习资料1Word文档格式.docx_第2页
第2页 / 共28页
《C语言程序设计》学习资料1Word文档格式.docx_第3页
第3页 / 共28页
《C语言程序设计》学习资料1Word文档格式.docx_第4页
第4页 / 共28页
《C语言程序设计》学习资料1Word文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

《C语言程序设计》学习资料1Word文档格式.docx

《《C语言程序设计》学习资料1Word文档格式.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》学习资料1Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

《C语言程序设计》学习资料1Word文档格式.docx

双目运算

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.若有如下程序,其输出的结果为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1