《高级语言程序设计》期末总复习及模块

发布 2021-04-19 22:05:28 阅读 1397

课程的全部内容可分为五大模块:

1.基础知识 2.三种基本结构及流程控制 3.函数 4.数据类型 5.文件。

模块一:基础知识部分。

需要掌握的知识要点:

1)冯·诺依曼体系结构的计算机组成:运算器、控制器、存储器、输入设备、输出设备,以及各部分的主要功能。

2)c语言程序的组成:由一个或多个文件组成,每个文件由一个或多个函数组成,函数是c程序的基本单位,一个程序有且只有一个main( )函数,这是程序的入口函数。

3)从c的源程序到可执行的文件的全过程:编辑、编译、链接最后才能运行,各阶段生成的文件扩展名分别为:.c、.obj、.exe,头文件的扩展名:.h

4)函数的组成:函数首部和函数体,函数中可有注释行/*

5)编译预处理有三种:文件包含、宏、条件编译:预处理命令行都必须以“#”号开始。

宏定义#define宏名串也是一种编译预处理,取消宏定义用:#undef 宏名 c程序中定义一个符号常量是借助于宏定义实现的,例如: #define num 35 注意:

不在行末加分号,因为在对源程序编译过程中(不是运行时)进行宏替换时,将宏所代表的字符串原样替换进去,有时加了分号是要出错的,例如: int arr[num] 。宏替换因为只在编译时进行,所以不占运行时间,只占编译时间。

带参数的宏可以完成一些简单函数的功能,例如: #define mul(x,y) x*y

主函数中如果有变量定义如下:int a=2,b=3,c;用形如:c= mul(a,b);实现求a、b的乘积。但是请大家思考,如果用。

c= mul(a+2,b+5),则变量c的值为?

因此,一般将宏中的参数在所定义的串中打上括号,如:

#define mul(x,y) (x)*(y)再求c= mul(a+2,b+5)

6)c程序中的六种符号:关键字、标识符、运算符、分隔符、其它符号、数据(包括常量和变量)

熟记所有常见关键字,关键字中最多的是流程控制语句中的关键字,如:for、while、do、if、else、switch、case、default、break、continue、goto、return等,还有一大类是变量类型及存储类别的,如:int、short、long、signed、unsigned、char、double、float、enum、union、struct、typedef、static、register、auto、extern,还有一些如:

void 、sizeof 等;

能正确定义标识符(在程序中,符号常量名、变量名、函数名都是用户自定义标识符),自定义标识符的正确与否可从以下几方面判断:①是否以字母或下划线开头;②是否是只有字母、数字、下划线的序列③是否选用了关键字。

练习:下列哪一个是合法的用户自定义标识符___

a、_do_while; b、begin?end; c、for; d、1st_run;

掌握所有的运算符及其优先级、结合方向及特殊的运算规则:

34种运算符的优先级关系大致为》、.一元运算符---乘除类算术运算符---加减类算术运算符---移位运算符---有大小关系的关系运算符---等与不等的关系运算符---位运算符---逻辑与---逻辑或---条件运算符---各种赋值运算符---逗号运算符。

结合方向:一元运算符、条件运算符、赋值运算符三种为自右向左结合,其它均为自左向右结合。

能改变变量值的运算符:赋值、++注意前后++、的区别。

具有特殊运算规则的运算符:逻辑与&&、逻辑或||、条件运算符,具有断路功能,表达式中的某些部分可能不运算;%运算符要求两个运算对象均为int型。

注意两个运算符的区别:=与= =

表达式运算过程中可能进行类型转换,原则:低类型自动向高类型转换。

练习:1、表达式a=4,a*5,b=a+3的结果是?

x/=(a=4,b=a*5,b++)9执行后,变量a、b、x的值分别是多少?表达式的值呢?

2、if (!x) …此处!x相当于x= =0

if (x) …此处x相当于x! =0

常量与变量:

常量是其值不可变化的量,有两种表现形式:字面常量和符号常量,c是定义符号常量只有一种方法:#define 常量名串。

c中的字面常量有五种:整型常量、实型常量、字符常量、字符串常量、枚举常量(不作要求)

整型常量有三种合法制式:十、八(如012)、十六(如oxa3),另外还可以有 l(l)、u(u)作后缀,分别表示长整型及无符号常量。

实型常量有两种表示形式:小数形式、指数形式,注意:小数形式要求一定要有小数点,小数点前面或后面的数字可以缺省;指数形式一定要有e(e),并且在其左边一定是合法的整数或小数形式的实数,右边必须是合法的整数。

字符常量是以一对单‘’括起的单个字符(‘\191’错),需要特别注意的是以右\开头的转义字符的三种形式:‘’、‘121’、‘xa5’,记住’a’、’a’、‘0’、‘n’的ascii码分别为,字符常量的大小就是其ascii码值的大小。

小写转大写:ch=ch-32;大写转小写:ch=ch+32;

字符串常量是以一对双“括起的0个或多个字符,需要特别注意字符串的长度与字符串所占的字节数之间相差1

练习:1、字符串"12\\\t345\012\xa489"的长度是___占___字节。

2、char c=’m’;c=c-35;putchar(c);的输出结果是___

3、下列哪一个不是合法的常量。

a、027 b、2.5e2.5 c、 0xfdald、

变量:在程序运行过程中其值可变的量,需要先定义后使用。

每一个变量都具有:变量名、变量的当前值、变量的地址、变量的存储属性,指针变量中存的是地址,其余变量中存放的是值。

在所有函数之外定义的变量称为全局变量,其作用域为定义点开始到程序结束(去掉含同名局部量的作用区域);在函数内部定义的变量称为局部变量(形式参数也是局部变量),局部变量分auto(默认)和static两种,前者是在函数被调用时分配空间,每次函数执行完毕后将不再存在,但是static型的局部变量在函数第一次被调用时进行分配空间,只初始化一次,每次函数执行完毕后将继续存在,但是只在本函数中才起作用,因此这种变量的读程序题一定要注意!

练习: #include <>

int cal(int n)

void main (

int i;

for(i=1;i<7;i++)

if (i%2) printf("%d ",cal(i));

模块二:三种基本结构及流程控制。

c程序的三种基本结构是顺序结构、选择结构、循环结构。这三种结构分别需要借助于特定的语句控制实现。

1)顺序结构:赋值语句和函数调用语句是控制该结构的主要语句。函数调用语句中最常用的是:

scanf( )printf( )getchar( )putchar( )等用于控制输入输出的语句。注意用scanf( )输入变量值时要严格按照格式控制串的形式要求输入,用printf( )输出时要进行相应的格式控制,需要熟记几种格式转换说明符:%c、%s、%d、%f、%lf(当变量为double类型时,在scanf中必须用%lf,但输出时用%f就可以了)。

练习: 1、已知a、b、c为int型变量,用于输入的语句为:scanf("a=%d,b=%d,c=%d",&a,&b,&c);,若想使a的值为1,b的值为2、c的值为3,应当怎样输入?

如果提供的输入方法为1,2,3《回车》,则对应的输入语句是什么?

2、float v=1234.5678;,输出格式为:输出总宽度为10,精度为3,则应使用语句printf实现;若输出语句为:

printf(“%3f”,v);,输出的内容为:__

2)选择结构:用if...else、switch语句配合复合语句、break语句控制实现。

if语句有三种形式:单分支if、双分支if、嵌套if,注意else应与其前最靠近的未匹配过的if相对应,而与对齐的形式无关,每一个else实际上都隐含了一个条件,要充分利用这些条件分析程序;if后的条件通常是关系表达式,但是实际上可以是任何表达式,仅以该表达式是0或非0来判断条件的假和真。注意:

if ( 及else后面都只能控制一条语句,经常需要用到复合语句。

switch语句中特别要注意的是:(1)switch后面的表达式类型应当为整型、字符型、枚举型,而不可以是float或double型,因为表达式的取值必须是离散值。

2)找到与表达式匹配的常量后开始执行,直到遇到break或语句结束才会停止。因此每一个分支后如果没有及时用break,则继续向下执行,这样,switch结构可以选择多个分支执行。

3)这些常量的顺序调整不影响程序的正确性,只要每个分支执行的功能固定就可以了。

练习:1、已知变量tf为整型,下面的条件语句中,五种表达有一种与其它四个不等价,它是?

a、 if (tf ) 语句1; else 语句2;

b、if ( tf==0 ) 语句2; else 语句1;

c、if (tf!=0 ) 语句1; else 语句2;

d、if (!tf ) 语句2; else 语句1;

e、if (tf==1 ) 语句1; else 语句2;

2、设以下所有变量均为整型,下列程序所实现的分段函数是?

if (x>0) y=1;

else y=0;

if (x<0) y=-1;

3、下列程序段执行后,a、b的值是?

a=1; b=2; c=0;

if (a>b)

c=a;a=b;

b=c;4、设有声明int a=1, b=2,则下面程序段的输出结果是? 如果是内层的每个case后有break,而外层没有break,输出结果是?switch (a)

《高级语言程序设计》期末总复习

考试范围 1。教材的1 12章,第12章综合程序不考,链表只考最基本知识。2。请注意下列内容肯定不考 1 1 2和1.3 机器语言的局限性 机器语言程序设计 2 3 5 位运算符 3 4 5 3 goto语句 4 5.2.3 一维数组名的双重含义 5 5.3.7 野指针和void指针 6 6 5 动...

高级语言程序设计复习

一 简答题 10选2,每题5分 1 简要叙述指针为函数参数的使用方法。2 简要叙述结构体特点。3.简述机器语言 汇编语言和高级语言。4.简述c语言的特点。5.简述c语言程序的编辑 编译与运行。6 简述程序设计语言的分类 高级语言及其分类。7.简述c语言的发展简史。8.简要列举c语言中的常用表达式。9...

高级语言程序设计复习

湖南第一师范学院 高级语言程序设计 复习。一 单选题。1 下列函数中,不能重载的是 c a 成员函数 b 非成员函数 c 析构函数 d 构造函数2 使用操作符setw对数据进行格式输出时,需要包含 c 文件。a 下面关于带默认形式参数值的函数声明正确的是 c a int fun int a 1,in...