0098《高级程序设计c语言》期末考试指导Word下载.docx
- 文档编号:21226204
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:26
- 大小:44.18KB
0098《高级程序设计c语言》期末考试指导Word下载.docx
《0098《高级程序设计c语言》期末考试指导Word下载.docx》由会员分享,可在线阅读,更多相关《0098《高级程序设计c语言》期末考试指导Word下载.docx(26页珍藏版)》请在冰豆网上搜索。
实型常量有两种表示方法:
十进制小数形式和指数形式。
实型变量的分类
Ø
单精度实型(float)
双精度实型(double)
长双精度实型(longdouble)
(4)空类型:
void
3.Printf函数输出各种类型数据的方法
(1)格式:
printf(参数列表)
(2)Printf函数可以带多个参数,例如:
printf(“variablea=%d”,a)
(3)函数printf在显示不同类型数据时使用不同的格式控制符
Int%d;
unsignedint%u;
float%f;
char%c;
字符串%s
4.运算符和表达式的含义
变量用来存放数据,运算符则用来处理数据。
用运算符将变量和常量连接起来的符合c语法规则的式子被称为表达式。
5.运算符的种类(按所带操作数的数量划分)
单目运算符、双目运算符、三目运算符
6.C语言的各种运算符和表达式
(1)赋值运算符和赋值表达式:
“=”/“=”;
c语言中,“=”被称为赋值运算符,它的作用是设置变量的值。
C语言允许在一个表达式中对多个变量连续赋值,例如:
a=b=c=22。
连续赋值的表达式的运算顺序是从右向左的(又被称为右结合性)。
与数学中的=严格区分开来,在c语言中,a=b只是代表要将b的值赋给a,并不说明a的值与b的值相等。
(2)强制类型转换符
当等号左右两边的数据类型不一致时,c语言将首先将=右边的表达式的值转化为=左边的数据类型,然后再赋值给=左边的变量。
inta;
a=3.2;
这时赋给a的值是3。
(3)算术运算符和算术表达式:
+、-、*、/和%
c语言提供的算术运算符包括:
加(+)、减(-)、乘(*)、除(/)和取余(%)。
这些都是双目运算符。
利用算术运算符连接起来的式子称为算术表达式。
+、—、*、/运算符既可用语整型数据的算术运算,又可用于实型数据的算术运算。
而%只能用于整数。
先乘除、后加减。
同级运算符的计算顺序是从左向右。
优先级:
强制转换运算符>
算术运算符>
赋值运算符。
a=(int)2.5*2+3;
最后a的值是7。
(4)自增自减运算符和符号运算符:
++、--和-
-既是一个算术运算符,又是一个负号运算符,它是一个单目运算符;
例如,a=34,则-a是-34。
负号运算符优先级与强制类型转换运算符一样。
++和--
++的作用是使变量自己增1,--的作用是使变量自己减1。
与负号运算符优先级相同。
++和--位于变量左边和右边的结果是不同的。
(在变量左边,先增减后计算;
在变量右边,先计算,后增减)
(5)位运算符:
按位与(&
)、按位或(|)、按位异或(^)、按位取反(~)、左移(<
<
)和右移(>
>
)
上述除了按位取反(~)外,都是双目运算符。
位运算符只能作用于int和char型数据。
(6)逗号运算符和逗号表达式
用逗号连接起来的表达式称为逗号表达式。
一般形式:
表达式1,表达式2,……,表达式k,例如:
a+5,b=6,b++
逗号表达式的计算规则是:
从左向右依次计算逗号分割的各个表达式的值,最后一个的值就是整个逗号表达式的值。
(7)sizeof运算符:
计算字符个数,因此牢记各类型数据的长度
作用:
能获取变量和数据类型所占内存大小的运算符。
第三章基本输入输出和顺序程序设计
1.数据输出函数——Printf函数
(1)各种格式转换符:
%d,%x,%o,%u,%c,%s,%f,%e,%g
(2)调用printf函数的基本格式是
printf(“格式控制字符串”,表达式1,表达式2,…,表达式n);
(3)printf函数的功能就是按照“格式控制字符串”的要求,将表达式1,表达式2,…,表达式n的值显示在屏幕上。
(4)格式控制字符串中包含2类字符:
常规字符和格式控制符。
在输出是,printf函数规定,常规字符要原样输出,而格式控制符的位置上输出相对应的表达式的值。
字符和字符串的输出,除了可以利用printf函数以外,还可以利用putchar和puts函数。
putchar函数只带一个参数,这个参数就是要输出的字符。
puts函数也只带一个参数,这个参数就是要输出的字符串,puts函数输出这个字符串后自动换行回车。
但利用putchar函数却无法控制字符输出的格式,利用puts函数也无法控制字符串的输出格式。
当程序不需要控制字符和字符串的格式时,调用putchar和puts函数要比调用printf函数简便得多。
格式化输出时,通过格式控制字符控制的格式要素主要有:
数据类型及其长度,比如用%d输出int型数据,用%ld输出long型数据,用%f输出double型数据,用%lf输出longdouble型数据。
输出数据所占的宽度(域宽),比如,%4d表示输出至少占4格。
输出数据的精度,比如%4.2f表示输出2位小数,%.3s表示要输出字符串的前3个字符,%6.4u表示至少要输出4位数。
对齐特征,比如%-16d表示输出的数据左对齐。
缺省情况下,输出将右对齐。
数制形式,比如,%x要求以十六进制形式输出数据。
数值符号,比如,%+d要求输出整数的正负号。
2.数据输入函数——Scanf函数
调用scanf函数的基本格式是:
scanf(“格式控制字符串”,变量1的地址,变量2的地址,…,变量n的地址);
3.各种数据类型的输出:
整型、实数、字符和字符串、格式化输出等。
比如下边列出格式化输出的总结:
(1)数据类型及其长度,比如用%d输出int型数据,用%ld输出long型数据,用%f输出double型数据,用%lf输出longdouble型数据。
(2)输出数据所占的宽度(域宽),比如,%4d表示输出至少占4格。
(3)输出数据的精度,比如%4.2f表示输出2位小数,%.3s表示要输出字符串的前3个字符,%6.4u表示至少要输出4位数。
(4)对齐特征,比如%-16d表示输出的数据左对齐。
(5)数制形式,比如,%x要求以十六进制形式输出数据。
(6)数值符号,比如,%+d要求输出整数的正负号。
本章所介绍的函数:
函数
功能
printf
格式化输出
putchar
字符输出
scanf
格式化输入
getchar,getche,getch
字符输入
clrscr
清屏
gotoxy
光标定位
clreol
清一行
textcolor
设置文本颜色
textattr
设置文本显示属性
textbackground
设置文本背景色
cprintf
彩色格式化输出
puts
字符串输出
_setcursortype
设置光标属性
bioskey
获取各种按键信息
第四章程序控制
1.选择结构的程序设计
(1)简单的if语句
if(表达式)
{程序段}
if…else语句:
if(表达式p)
{程序段s1}
else
{程序段s2}
if后面的()是必不可少的。
当简单if语句和if-else语句中的程序段只有一条语句时,外边的{}可以省略。
if语句中的程序段可以包含任何类型的C语句。
if语句中的表达式可是任何类型,不仅限于关系表达式和逻辑表达式。
表达式
非零时,表达式的值就是真,否则就是假。
如果表达式是一个判断两个数是否相等的表达式,要当心不要将==写成了赋值
运算符=。
(2)Switch语句
switch,case,default都是保留字,switch后面的()不能省略;
switch后面的()后面的{}不能省略;
case表达式后面的冒号不能省略;
case后面必须是常量表达式,表达式不能包含变量;
“case常量表达式”被称为case子句,“break”又称为break子句,“default”又称为default子句;
case子句和default子句之间没有固定的顺序,它们之间顺序的变化不会影响switch语句的功能;
程序段可以包含任何类型的C语句;
break子句可以省略,但是否省略,要根据算法的逻辑而定。
省略了break子句的switch语句与不省略break子句功能是不同的。
2.循环结构的程序设计
(1)While和dowhile语句
while(表达式p)
程序段s
功能:
首先判断表达式p的值是否非真。
如果是真,则执行程序段s,然后再判断表达式p的值是否为真,如果为真,再执行程序段s。
如此循环往复,知道p的值为假为止。
do
}while(表达式p);
首先执行程序段s,然后再判断表达式p的值是否为真,如果为真,则循环执行程序段s,直到p为假为止。
while后面的()不能省略,()中间的表达式可以是任何类型的表达式。
当while语句的程序段中只有1条语句时,程序段外边的{}可以省略,但省略
{}不是一个好习惯。
如果表达式P的值一开始就是假,循环体将一次也不被执行。
程序段可以包含任何类型的C语句。
这个程序段又称循环体。
通常情况下,程序中会利用一个变量来控制while语句的表达式P的值,这个
变量被称为循环控制变量。
要在while语句的某处(表达式P或循环体内)改变循环控制变量的值,否则
极易构成死循环。
如果在执行循环体过程中,遇到了break子句,则跳出while循环。
如果在执行循环体过程中,遇到了continue语句,则循环体中continue语句后
面的其他语句将被跳过,而直接进入下一轮循环。
(2)For语句
for(表达式1;
表达式2;
表达式3)
首先求表达式1的值,然后判断表达式2是否为真。
如果是真,则执行程序段s,然后求表达式3的值。
接下来再判断表达式2是否为真,如果为真,继续执行循环体以及求表达式3的值,直到表达式2的值为假为止。
表达式1、表达式2和表达式3可以是任何类型的表达式。
表达式1、表达式2和表达式3之间必须用分号分隔,表达式可以为空,但分号不能省略。
表达式1和表达式3通常是逗号表达式,表达式1只被执行一次,通常用于初始化循环控制变量。
而表达式3通常用来改变循环控制变量的值。
表达式2为空相当于表达式2的值是真。
因此,下面的循环是死循环:
当for语句的程序段中只有1条语句时,程序段外边的{}可以省略,但是省略{}不是一个好习惯。
程序员既可以在for语句前面单独初始化循环控制变量,也可以利用for语句的表达式1初始化循环控制变量。
程序员既可以在循环体内改变循环控制变量的值,也可以利用表达式3改变循环控制变量的值。
如果在执行循环体过程中,遇到了break子句,则跳出for循环。
如果在执行循环体过程中,遇到了continue语句,则循环体中continue语句后面的其他语句将被跳过,而直接进入下一轮循环。
三种循环语句的异同点比较:
在使用while和do-while语句时,必须在while或do-while语句前初始化循环
控制变量。
但for语句却可以利用表达式1来初始化循环控制变量。
在使用while和do-while语句时,循环控制变量的变化必须放在循环体内。
而
for语句却可以利用表达式3来改变循环控制变量的值。
do-while语句的循环体至少被执行一次,但while语句和for语句的循环体可能
一次也不执行。
while和do-while语句中不能省略循环控制条件(即表达式P),但for语句却可
以省略循环条件(即表达式2)。
break语句和continue语句在这3种循环语句中的作用是相同的。
凡是用while语句能实现的循环,必然能用for语句实现,反过来也一样。
3.Break和continue语句
break语句和continue语句大大增强了c语言实现选择控制和循环控制的灵活性
4.关系运算符和关系表达式
小于,<
=小于等于,>
大于,>
=大于等于,==等于,!
=不等于
5.逻辑运算符和逻辑表达式
||逻辑或;
&
&
逻辑与!
逻辑非
6.条件运算符和条件表达式
条件运算符:
(?
:
7.运算符的优先级
算术运算符>移位运算符>关系运算符>位运算符>逻辑运算符
8.表达式语句
任何一个表达式的后面加上分号就构成了表达式语句。
a++是表达式,a++;
是表达式语句。
a=5是表达式,a=5;
9.函数调用语句
函数调用加上分号就是函数调用语句。
printf(“Hello”)是函数调用,printf(“Hello”);
是函数调用语句。
10.复合语句
可以用{}将一些语句括起来,就成了复合语句。
复合语句又称分程序。
11.空语句
空语句就是一个分号。
空语句有时用在空循环(什么都不执行的循环)中。
12.控制语句
用来实现一定的控制功能的语句称为控制语句。
C语言用控制语句来实现分支结构和循环结构。
第五章数组
1.一维数组的定义与引用
(1)定义形式:
数据类型符数组变量名[变量表达式];
在定义时可以直接赋初值:
未指定的值被赋值为0。
(2)引用说明
1)c语言规定,数组是一种数据单元的序列,不能直接存取整个数组,只能引用数组中的各个数据单元。
引用数据单元的格式是:
数据变量名[下标]
其中,下标可以使整性变量或整型表达式,c语言规定,下标的最小值是0,最大值是数组大小减1。
2)给数组赋值:
a[0]=2,表示将数组a的第一个单元赋值为2。
3)注意数组的内存地址和数组单元的存放
4)不许多数组变量名赋值:
a=3是错误的。
2.二维数组
当构成一维数组的元素也是一维数组时,就构成了二维数组。
二维数组是一维数组的数组。
以此类推,三维数组是二维数组的数组,四维数组是三维数组的数组……
C语言中,二维数组的定义格式是在一维数组的定义格式基础上增加了一维:
数据类型符数组变量名[整型常量表达式1][整型常量表达式2];
与一维数组相比,二维数组的定义,除了增加了一个[整型常量表达式]外,其他都一样。
对二维数组中数据引用的单元格式是:
数组变量名[下标1][下标2]。
与一维数组相比,数据单元的引用形式除了多一个[下标]外,其他都一样。
3.字符串与数组
(1)字符串的输入:
scanf函数和gets函数。
(2)字符串的输出:
printf函数,cprintf函数或puts函数。
(3)字符串的比较:
strcmp函数。
格式为:
strcmp(字符串1,字符串2);
(4)字符串的复制:
strcpy函数
strcpy(字符数组1,字符串2);
(5)字符串的连接:
strcat函数
strcat(字符数组1,字符串2);
strcat函数的功能是将字符串2连续接到字符数组1的字符串的后面。
(6)求字符串的长度:
strlen函数
strlen(字符串);
第六章函数
1.函数的定义和调用
(1)不带参数没有返回值的函数
1)定义格式:
void函数名(void)
变量声明部分
执行部分
2)说明:
函数名必须是合法标识符。
执行部分放置c语句。
void是一种特殊的数据类型:
空类型,表明这个函数没有返回值。
3)声明格式和调用格式分别为:
void函数名(void);
函数名();
调用任何函数必须先声明函数的原型
#include<
studio.h>
voidshowerr(void);
/*声明showerr函数的原型*/
……
函数在执行完函数体内最后一句语句后,会自动返回到调用它的地方。
在某种条件下,也可以利用return语句返回,其功能即是使函数终止执行并返回到调用它的地方。
(2)不带参数有返回值的函数
1)定义格式
返回值类型函数名(void)
函数名是合法标识符;
返回值类型符必须是合法的数据类型标识符;
当返回值类型符被省略时,默认为int型。
函数的返回值通常由return语句返回给调用者。
3)原型声明格式和调用格式
返回值类型符函数名(void);
或者变量=函数名();
(3)带参数没有返回值的函数
void函数名(形式参数列表)
2)说明
函数名合法标识符;
形参列表格式为:
数据类型1形参名1,数据类型2形参名2,…,数据类型n形参名n
若省略数据类型,则默认int型
只有当函数被调用时,形参才有值
不允许对形参赋初值,但可以在函数的执行部分对形参赋值
3)声明和调用格式
void函数名(形参列表);
函数名(表达式列表);
/*这些表达式称作函数的实际参数,即实参列表*/
(4)带参数有返回值的函数
返回值类型符函数名(形式参数列表)
形参列表中至少要有一个形参
返回值类型符函数名(形参列表);
函数名(实参列表);
或变量名=函数名(实参列表);
4)在定义和调用带参数的函数时一定要注意,形参只有在函数调用时才会有值,它的
值来源于实参,是将实参赋值给形参的结果。
实参是变量时,实参变量和形参是两个不同的实体。
对应着不同的内存单元。
在函数对形参赋值时,对实参变量毫无影响。
2.函数的嵌套调用和递归调用
(1)所谓嵌套调用指的是调用A函数的过程中可以调用B函数,在调用B函数的过程中还可以调用C函数…...
(2)当函数调用它自身时,就形成了递归调用。
c语言允许递归调用。
递归调用有两种:
一种是函数f直接调用自身,称为直接递归
另一种是函数fa调用fb,而函数fb又调用fa,这样的递归叫做间接递归。
3.函数的作用域
c语言规定,函数内部不允许定义函数,因此,没有“局部”的函数,函数都是“全局”的。
同全局变量一样,在函数原型声明中增加extern修饰符,就可以扩大函数的作用域。
其实这是多余的,因为所有的函数都是extern的,他们的作用域都是整个程序。
程序员在定义函数时,可以将函数定义成静态的,静态的函数只能在定义它的文件中使用,不能将静态函数的作用域进行扩展。
第七章指针
1.指针的定义和使用
(1)定义:
数据类型符*变量名(*号表明后面的变量是指针变量)
1)可以在一条语句中同时定义普通变量和指针变量
inta,*p;
2)也可以在一条语句中同时定义多个指针变量
int*p1,*p2;
3)指针变量前面一定要有*号!
!
*是间接引用运算符,是单目运算符,优先级与++、——的优先级相同,具有右结合性。
因此,上面程序中,与a++等价的表达式是(*p)++,而不是*p++。
*p++中的++是作用于p的,而不是作用于*p。
(2)指针的运算
指针参与乘法或除法没有任何意义,因为指针式地址,是一种无符号的整数。
但指针可以参与加法运算
2.指针的指针:
数据类型符**变量名
3.指针与一维数组、二维数组的关系:
定义指向二维数组的指针:
数据类型符(*变量名)[常量表达式]例如:
int(*p)[3]表示这个指针p是指向二维数组的,这个数组包含3列。
要从定义格式上区分指针数组和指向二维数组的指针。
4.指针与字符串
我们可以用字符串为char型的指针变量赋初值。
但是将字符串常量作为初值赋值给字符数组与将字符串常量作为初值赋值给指针变量的含义是不同的。
由于字符型指针可以指向字符串,因此字符指针数组也可以看作是字符串数组。
但指向字符串的指针数组与存放字符串的二维字符数组有本质的区别。
5.指针与数组作为函数的参数
指针的本质是地址,指针可以做参数,而数组名也就可以做参数。
一维数组名作参数时,数组名后面要跟着[],[]中间可以有整型常量,也可以没有。
6.函数指针的定义与引用
当一个指针指向了函数的第一条指令时,这个指针被称为函数指针。
函数指针变量的定义格式是:
数据类型符(*变量名)(参数列表);
其中:
数据类型符实际上是函数指针所指向的函数的返回值类型。
参数列表实际上是函数指针所指向函数的参数列表,参数列表可以为空。
*号和变量名一定要用()括起来。
函数指针的定义极易与函数原型声明相混淆,比较下表说明。
int*pf(intx);
int(*pf)(intx);
上面一行是函数原型的声明,pf是函
数名,返回值是int型指针
上面一行是函数指针变量的定义,pf是变量名,pf所指向的函数的返回值是int型值
第八章预处理命令
宏定义分为两种:
不带参数的宏定义和带参数的宏定义。
由于预编译器处理宏时,仅仅是一个文本替换操作,并不对宏的内容文本进行任何处理,因此,程序员在定义宏时,如果宏是一个表达式,那么一定要将这个表达式用()括起来,否则可能会引起非预期的结果。
带参数的宏定义的格式是:
#definemacro_name(参数列表)macro_content
macro_name是宏名,必须是合法标识符,一般用大写字母命名。
参数列表由一个或多个参数构成,参数只有参数名,没有数据类型符,参数之间
用逗号隔开,参数名必须是合法标识符。
macro_content是宏的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级程序设计c语言 0098 高级 程序设计 语言 期末考试 指导