二级C语言教材1.docx

上传人:b****5 文档编号:4330852 上传时间:2022-11-29 格式:DOCX 页数:20 大小:96.67KB
下载 相关 举报
二级C语言教材1.docx_第1页
第1页 / 共20页
二级C语言教材1.docx_第2页
第2页 / 共20页
二级C语言教材1.docx_第3页
第3页 / 共20页
二级C语言教材1.docx_第4页
第4页 / 共20页
二级C语言教材1.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

二级C语言教材1.docx

《二级C语言教材1.docx》由会员分享,可在线阅读,更多相关《二级C语言教材1.docx(20页珍藏版)》请在冰豆网上搜索。

二级C语言教材1.docx

二级C语言教材1

第1章C语言概述

1.1 进制及其相互转换

1.2 C语言环境介绍(简介)

1.3 C语言语法简介

1.4 C语言数据类型

1.1 进制及其相互转换

考点:

(1)进制的构成。

(2)进制间的相互转换。

1.1.1进制种类及进制构成

日常生活中,我们在进行数值运算时,通常在进行加法时是逢十进一,在减法中借一顶十,而这种大家所熟识的数据运算形式就是进制中的十进制。

在C语言课程中,包含的进制除十进制外,还包括二进制、八进制和十六进制。

而对于计算机能够存放的数据而言只有二进制。

各进制的组成情况:

十进制:

任何一个十进制数据是由0—9中的数字组合构成,逢10进1。

二进制:

任何一个二进制数据是由0、1中的数字组合构成,逢2进1。

八进制:

任何一个八进制数据是由0—7中的数字组合构成,逢8进1。

十六进制:

任何一个十六进制数据是由0—9、A(a)—F(f)中的符号组合构成,逢16进1。

其中A(a)代表10,B(b)代表11……。

进制内的一些概念:

例如:

用位权的形式表示十进制数416876的结果。

(按权展开)

416876=4*105+1*104+6*103+8*102+7*101+6*100

位权:

各位上以某数为底的多少次幂的格式。

例如,上述表达式内105等都是位权。

基:

每种进制内适逢某数就会向前进一,此数为基。

例如,十进制逢10进1,10为基。

关于C语言中各进制的基、位权等内容如表1-1所示:

表1-1进制转换

进位制

二进制

八进制

十进制

十六进制

基数

2

8

10

16

规则

逢2进1

逢8进1

逢10进1

逢16进1

21

81

101

161

表示符号

B

O

D

H

1.1.2进制的转换

在C语言课程中,进制之间的转换是我们必须了解并掌握的内容。

1二进制与十进制之间的转换

二进制转换成十进制规则:

(按权展开)二进制数各位上的数与其所在位的位权乘积之和。

例如:

(11011)2=(26)10

1*24+1*23+0*22+1*21+1*20=26

十进制转换成二进制规则:

除2取余,余数倒写连接在一起。

(除2取余法)

例如:

(19)10=(10011)2

注:

例题转换方法如图1.1所示:

 

0

2

19

4

9

2

1

2

2

2

2

…..1

…1

…0

…0

…1

图1.1十进制转换成二进制

附:

按权组合法:

附例1:

19=16+2+1=24+21+20

=(10000)2+(10)2+

(1)2=(10011)2

附例2:

78=64+8+4=26+23+22

=(100000)2+(10000)2+(100)2

=(110100)2

2二进制与八进制之间的转换(3位分隔法)

二进制转换成八进制规则:

将二进制数小数点左侧部分从右向左,每三位进行分隔后将此三位二进制数转换成对应的八进制数,将转换得到的八进制数从左向右依次连接在一起;小数点右侧部分从左到右每三位进行分隔后将此三位二进制数转换成对应的八进制数,将转换得到的八进制数从左向右依次连接在一起。

例如:

(1100110)2=(146)8

步骤:

(1)1,100,110对应1—1100—4110—6

(2)146为对应八进制数

八进制转换成二进制规则:

将一个八进制数,每位上的数转换成对应的三位二进制数后,将转换结果从左向右依次连接在一起。

例如:

(766)8=(111110110)2

步骤:

(1)7—111,6—110,6—110

(2)111110110为对应二进制数

注:

八进制数内不会出现数字8和9,否则为不合法情况。

二进制与八进制数的对应关系如表1-2所示:

表1-20~7二进制与八进制对比

二进制

八进制

二进制

八进制

000

0

001

1

010

2

011

3

100

4

101

5

110

6

111

7

 

3二进制与十六进制之间的转换(4位分隔法)

二进制转换成十六进制规则:

将二进制数小数点左侧部分从右向左,每四位进行分隔后将此四位二进制数转换成对应的十六进制数,将转换得到的十六进制数从左向右依次连接在一起;小数点右侧部分从左到右每四位进行分隔后将此四位二进制数转换成对应的十六进制数,将转换得到的十六进制数从左向右依次连接在一起。

例如:

(110001100)2=(18C)16

步骤:

(1)1,1000,1100对应0001—1,1000—8,1100—12—C

(2)18C为对应十六进制数

十六进制转换成二进制规则:

将一个十六进制数每位上的数转换成对应的二进制数后,将转换结果从左向右依次连接在一起。

例如:

(3A)16=(111010)2

步骤:

(1)3—0011,A—1010

(2)00111010简写为111010为对应的二进制数

注:

十六进制数10--15的表示方法使用的是字母a—f或A—F;在十六进制数中不会出现10–15(含10和15)之间的数。

二进制与十六进制数的对应关系如表1-3所示:

表1-30~15二进制与十六进制对比

二进制

十六进制

二进制

十六进制

0000

0

0001

1

0010

2

0011

3

0100

4

0101

5

0110

6

0111

7

1000

8

1001

9

1010—(10)

A

1011—(11)

B

1100—(12)

C

1101—(13)

D

1110—(14)

E

1111—(15)

F

4八进制与十进制之间的转换(自习)

八进制转换成十进制的规则:

八进制数各位上的数与其所在位的位权乘积之和。

例如:

(71)8=(57)10

7*81+1*80=57

十进制转换成八进制的规则:

除8取余,余数倒写连接在一起。

(余数最大值可以是7)例如:

(4553)10=(10711)8

注:

例题转换方法如图1.2所示:

5、十六进制与十进制之间的转换(自习)

十六进制转换成十进制的规则:

十六进制数各位上的数与其所在位的位权乘积之和。

例如:

(12A)16=(298)10

1*162+2*161+10*160=298

十进制转换成十六进制的规则:

除16取余,余数倒写连接在一起。

(余数最大值可以是15)。

例如:

(465)10=(1D1)16

注:

余数内超过10的部分在连接书写时需要使用a—f或A—F表示,十六进制数内的英文字母在参加运算时转换成其对应的数值,且例题转换方法如图1.3所示:

 

图1.2十进制转换成八进制图1.3十进制转换成十六进制

试题解析:

十进制数397的十六进制值为【】

A)18DB)18E

C)277D)361

A解析:

本题考点涉及的是进制转换。

将十进制转换成十六进制方法有两种:

第一种可以将十进制转换成二进制,再通过二进制转换成十六进制;另一种将十进制直接转换成十六进制,通过除16取余的形式。

397/16商24余数1324/16商1余数81/16商0余数1,余数反写(13对应D)结果为18D。

附:

按权组合:

397=1*256+8*16+13

=1*162+8*161+13*160

=(18D)16

附例:

97=()2

=()16

1.2 C语言环境介绍(简介)

1.2.1C语言程序的开发步骤

1.编辑

在C环境窗口内创建C语言源程序,并以文件的形式进行存储,C语言源程序文件都是以.c为后缀存储的。

2.编译

通过C环境界面内的编译按钮,经过编译后将源程序文件转换成目标程序文件,目标程序文件都是以.obj为后缀存储的。

3.连接

通过C环境界面内的连接按钮,将目标程序文件连接成执行程序文件,可执行文件都是以.exe为后缀存储的。

4.执行

通过C环境界面内的执行按钮完成。

在C语言程序的开发过程中,将出现3个文件:

.c,.obj,.exe,这3种文件内可执行的只有.exe文件,.obj和.exe都是二进制文件而.c文件是文本文件。

1.2.2C语言程序环境的使用

1.打开C环境,建立C语言源程序文件。

(1)选择VisualC++程序打开:

可以找到桌面的快捷方式

双击,或在开始菜单→程序下VisualC++6.0单击。

(2)进入VC++环境如图1.4,单击”结束”。

图1.4进入VC环境

(3)新建VC++源程序文件如图1.5所示,新建窗口内选择”文件”下的”C++SourceFile”,在右侧的文件框内输入文件名,文件名后加.c后缀如图1.6所示:

图1.5C语言文件菜单图1.6VC++新建文件窗口

(4)进入源程序窗口,书写程序如图1.7所示:

图1.7VC++程序编辑界面

(5)编译生成目标文件,选择工具栏内的

按钮单击,在以后出现的对话框内单击“是”,编译无误才可以进行连接,查看编译无误的位置在程序窗口下方如图1.8所示:

图1.8VC++6.0输出窗口

(6)连接生成.exe文件,选择工具栏内的

按钮单击,连接后,选择工具栏内的

执行程序验证程序的正确性。

1.3 C语言语法简介

考点:

(1)预处理命令include、define(不带参数宏定义)

(2)C语言程序语句的特点

(3)C语言主函数特点、程序与函数的关系

(4)注释语句注意事项

请大家阅读以下程序,通过下述程序为大家介绍C语言程序的简单组成,以及各部分的特点和书写程序时的习惯。

/*此程序完成输出变量a,c1的值,回车换行输出字符串Iloveworld后回车换行*/

#include“stdio.h”

main()

{inta;

charc1;

a=12;

c1=‘a’;

printf(“%d,%c\n”,a,c1);

printf(“Iloveworld!

\n”);

}

上述程序是一个完整的C语言程序,经过第三节我们所说的开发步骤后,执行结果如图1.9所示:

图1.9VC++显示程序运行结果窗口

以上述程序为例,我们通过此程序对C语言编写过程中的一些内容加以说明。

首先:

#include“stdio.h”/*为编译预处理语句*/

所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。

预处理是C语言的一个重要功能,它由预处理程序负责完成。

当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。

C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。

以”#”号开头的命令语句是预处理命令语句,本节中主要讲的是#include(文件包含)和#define命令(宏定义)。

一、文件包含

文件包含:

是指将一个文件的全部内容,通过命令包含到另一个文件。

功能:

把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。

文件包含命令行的一般形式为:

#include ”文件名”或#include<文件名>

以后编写C语言程序时比较常用到的头文件:

“stdio.h”、“math.h”、”string.h”

文件包含命令的注意事项有以下几点:

1.文件包含的两种形式是有区别的:

使用尖括号表示在系统指定的标准方式的相关文件目录中去查找(标准方式的相关目录是由用户在设置环境时设置的),而不在源程序所在文件目录去查找。

使用双引号则表示首先在当前的源程序文件所在目录中查找,若未找到按系统指定的标准方式到相关目录中去查找。

用户编程时可根据自己文件所在的目录来选择某一种命令形式。

2.一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。

3.文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。

二、宏定义

在C语言源程序中允许用一个符号(标识符)来表示一个字符串,称为”宏”。

被定义”宏”的标识符称为”宏名”。

在编译预处理时,对程序中所有出现的”宏名”,都用宏定义中的字符串去替换,称为”宏展开”(”宏替换”)。

宏定义命令在C语言中分为两类:

一是符号常量定义,二是带参数的宏定义。

本节主要介绍符号常量定义。

符号常量定义命令行的一般形式为:

#define 符号常量名字符串

功能:

使用符号常量名在程序内代替字符串书写,程序编译过程中将程序内所有符号常量名的位置替换字符串进行运行。

如:

#defineE10

例如:

#include“stdio.h”

#defineMAXnum100

main()

{inti,sum=0;

for(i=0;i

{sum=sum+i;}

printf(“MAXnum=%d,%d\n”,MAXnum,sum);

}

此程序编译后,程序中的MAXnum会被替换为100进行运算(除printf函数内双引号内的MAXnum外)。

附例:

#include“stdio.h”

#definePI3.14

main()

{floatr,s,c;

scanf(“%f”,&r);

s=PI*r*r;

c=2*PI*r;

printf(“r=%f,s=%f,c=%f\n”,r,s,c);

}

符号常量定义命令的注意事项有以下几点:

(1)符号常量的处理在程序编译阶段只是进行简单的替换工作,不作语法检查;同一个符号常量不能重复定义,除非两个命令行完全相同。

(2)符号常量的结尾不应有分号,如果加分号会连同分号一起替换。

如:

#defineE100;

……

Max=E*E;—替换结果为Max=100;*100;;

……

以上结果是语法错误。

(3)宏名在源程序中若用引号括起来,则预处理程序不对其作宏替换。

其次:

如程序中的”/*此程序完成输出变量a,c1的值,回车换行输出字符串Iloveworld后回车换行*/”为注释语句。

在C语言程序中,注释语句的注意事项有如下几点:

(1)注释语句,注释符必须成对出现,是一对/**/,注释语句后不需要加分号。

(2)注释语句在编译过程中,不进行编译,也不被执行。

(3)注释符不能嵌套,如:

/*example/*thisisfirstcprogramm*/*/是非法的。

第三:

下面的是主函数,其中{}内的如:

inta;等都属于语句。

main()

{inta;

charc1;

a=12;

c1=‘a’;

printf(“%d,%c\n”,a,c1);

printf(“Iloveworld!

\n”);}

一个C语言程序是由一个或若干个函数组成的,函数的基本组成单位是语句,在C程序的函数内语句分为两类:

声明语句和执行语句,其中需要注意的是在一个函数内声明语句必须在执行语句的前面,如:

inta;charc1;都是声明语句,而a=12等是执行语句;一条语句在程序内可以分多行书写,同时一行内也可以写多条语句,因此语句的后面必须以一个分号作为结束标志。

C语言函数的特点:

(1)函数是由函数头和函数体组成的,例如main()就是函数头,main是函数名,函数名后括号必须写,函数头后不需要加分号;而{}内的部分就是函数体,其必须写在{}内。

 

(2)一个C语言程序可以由多个函数组成,C语言程序文件内可以不包含主函数main;但是如果是一个可执行的C语言程序文件内必须有且只有一个主函数,其函数名为main;C语言程序在运行时,总是从主函数开始,在主函数中结束。

(3)由多个函数组成的C语言程序,其功能是由函数之间互相调用完成的,但是主函数只能调用其他函数而不能被其他函数所调用,其他函数之间也可以相互调用。

(4)在一个C语言源程序文件内函数的位置是任意的,任意一个函数都可以被独立编译。

最后,程序书写时的几个习惯写法:

(1)一个说明或一条语句占一行。

(2)用{}括起来的部分,通常表示了程序的某一层次结构。

{}一般与该结构语句的第一个字母对齐,并单独占一行。

(3)低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。

以便看起来更加清晰,增加程序的可读性。

在编程时应力求程序清晰,因此养成良好的编程风格可以增强其易读性。

试题解析:

(1)程序中头文件typel.h的内容如下,程序编译后运行的输出结果是【】

#defineN5

#defineM1N*3

程序type2.c如下:

#include“type1.h”

#defineM2N*2

main()

{inti;

i=M1+M2;printf(“%d\n”,i);}

A)10B)20

C)25D)30

(2)以下关于函数的叙述中正确的是【】

A)每个函数都可以被其他函数调用(包括main函数)

B)每个函数都可以被单独编译

C)每个函数都可以单独运行

D)在一个函数内部可以定义另一个函数

 

(3)下面四个程序中,完全正确的是【】

A)#include“stdio.h”B)#include“stdio.h”

main();main()

{/*programming*/{/*/programming/*/

printf(“programming!

\n”);}printf(“programming!

\n”);}

C)#include“stdio.h”D)include“stdio.h”

main()main()

{/*/*programming*/*/{/*programming*/

printf(“programming!

\n”);}printf(“programming!

\n”);}

 

(1)C解析:

本题所涉及的考点是编译预处理语句,编译预处理语句以#开头,其中包含:

文件包含、宏定义等。

本题首先建立了一个头文件type1.h,在type2.c的开头使用文件包含命令include将type1.h的内容包含在type2.c内,使得type2.c编译后其形式表示为:

#defineN5

#defineM1N*3

#defineM2N*2

程序编译时,程序内的宏名被替换为表达式后参加运算:

i=M1+M2替换的结果为i=N*3+N*2=5*3+5*2=25,选项C是正确的。

(2)C解析:

本题所涉及的考点是函数的特点。

(应为B)

(3)B解析:

本题所涉及的考点是C语言程序的书写特点。

编译预处理语句后没有分号、函数名后没有分号、注释语句后没有分号;注释语句不可以嵌套;编译预处理语句必须以#开头,因此选项B是正确的。

附例:

1.一个C程序的执行是从()。

A)本程序的main函数开始,到main函数结束

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C)本程序的main函数开始,到本程序文件的最后一个函数结束

D)本程序文件的第一个函数开始,到本程序main函数结束

2.以下叙述正确的是(  )。

A) 在C程序中,main函数必须位于程序的最前面 

B) C程序的每行中只能写一条语句

C) C语言本身没有输入、输出语句

D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误

3.以下叙述不正确的是(  )。

A)一个C源程序可由一个或多个函数组成

B) 一个C源程序必须包含一个main函数

C) C程序的基本组成单位是函数

D)在C程序中,注释说明只能位于一条语句的后面

4.C源程序的基本单位是(    ),一个C源程序中至少应包括一个(    )。

5.C语言的编译系统对宏命令的处理是(  )。

A)在程序运行时进行的

B)在程序连接时进行的

C)和C程序的其它语句同时进行编译的 

D)在对源程序中其它成份正式编译之前进行的

 

1.4 C语言数据类型

考点:

(1)标识符组成及命名规则。

(2)常量类型及常量表示方法。

1.4.1C语言字符集

字符是组成C语言的最基本的元素。

C语言字符集由字母、数字、空格、标点和特殊字符组成。

在注释中还可以使用汉字或其他可表示的图形符号。

1.字母:

小写字母(26个)a—z;大写字母(26个)A—Z

2.数字:

0—9共10个

3.空白符:

空格符、制表符和换行符等统称空白符。

空白符只在字符常量和字符串常量中起作用。

除此之外适时使用主要起到分隔的作用,可以增加程序清晰性和可读性。

1.4.2C语言的数据类型及数据类型内的基本概念

在C语言中,数据是指常量、变量及函数等作为程序的基本操作对象;在C语言中的数据按照其性质、表示形式、存储空间的多少和构造的特点来划分,就是所谓的数据类型。

C语言中的数据类型非常丰富,可分为:

基本数据类型(整型、实型、字符型),构造数据类型(数组、结构、共用体),指针类型和空类型四大类。

在未来学习C语言的语法和语句书写形式后,C语言的程序编写过程中会涉及一些基本概念。

1.标识符

所谓标识符,指程序中所使用的变量名、函数名、类型名、数组名等有效字符。

在C语言中,标识符的命名必须遵循以下规则:

(1)必须由字母(a—z,A—Z)、数字(0—9)及下划线组成。

(2)第一个字符不允许是数字。

(3)标识符内的字母,大小写相互区别,即大小写字母代表不同字符。

(4)不允许使用关键字作为用户自定义标识符。

通过上述标识符的命名规则,以下标识符是合法的:

x3,point_line,vok_1,Atok,ATOK,a

注:

其中注意Atok与ATOK是不同的标识符。

以下标识符是非法的:

$a1_k,5d,a.1

注:

在C语言中,标识符的长度是受各种版本的C语言编译系统和具体机器的限制(本书以标识符前八位有效为准);用户标识符可以由程序员随意定义,但为了以后维护的方便,尽量做到”顾名思义”。

2.分隔符

在C语言中采用的分隔符有两种,即逗号和空格。

逗号主要用于类型说明和函数参数表中,分隔各个变量;空格主要用于间隔符,在某些情况下间隔符必须存在,否则会出现语法错误。

3.关键字

在C语言中有一类符号,它们本身具有特定的含义,这就是关键字又称为系统保留字。

在C语言中有32个关键字。

C语言中的关键字按其功能不同可以分为以下几类:

(1)类型说明符

用于定义、说明变量、函数或其他数据结构类型。

如:

基本数据类型内的整型,如果定义整型变量时需要用到int(为类型说明符)。

(2)存储类型符

如:

auto、static等。

(3)语句控制符

书写语句时所需要用到的语句命令词,例如表示如果的语句命令词if等。

注:

C语言中的关键字都是小写的,且不可以再用作其他功能。

例如:

int与INT是不同字符;int不可以作为变量名等。

附:

INT、include是合法的标识符;

Int、if是非法的标识符。

4.常量、变量

常量:

在C语言程序运行过程中,其值及表现形式不发生变化。

例如:

数值1,无论1+1还是1/1,其本身不会自动变化,这就是常量。

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

当前位置:首页 > 高中教育 > 小学教育

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

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