C语言专升本辅导(整理)_第1页
C语言专升本辅导(整理)_第2页
C语言专升本辅导(整理)_第3页
C语言专升本辅导(整理)_第4页
C语言专升本辅导(整理)_第5页
已阅读5页,还剩223页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计,2008年专升本辅导,1. 对 C 语言的语法、语义有较好的理解。2. 能熟练地阅读 C 源程序,并具有初步分析程序的能力。 3. 初步掌握结构化程序设计的方法和技巧,能从分析问题入手,设计可行的算法,进而用 C 语言编写结构良好的面向过程的程序。 4. 通过上机实验,掌握程序的调试和测试方法。,考 试 要 求,考题类型, 选择题(概念、语法等): 60% 程序阅读题: 20% 程序设计题(或程序填空): 20%,程序设计基础,张杰敏编,高等教育出版社出版 C 语言程序设计,谭浩强编,清华大学出版社出版,参考用书,第一章 C语言概述,C语言发展历史与特点(了解),C程序格式和结

2、构特点(掌握),TC 环境下 C 程序的上机步骤(掌握),结构特点 函数与主函数 程序由一个或多个函数组成 必须有且只能有一个主函数main() 程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。 程序语句 C程序由语句组成 用“;”作为语句终止符 注释 /* */为注释,不能嵌套 不产生编译代码,例: /*This is the main /* of example1.1*/ */,编译预处理命令,C程序的上机步骤,程序代码的录入, 生成源程序*.c,语法分析查错,翻译 生成目标程序*.obj,与其它目标程序或库 链接装配,生成可执行 程序*.exe,第二章 算法,算法

3、的概念(理解) 算法的表示方法(了解) 组成结构化程序的三种基本结构(理解) 结构化程序设计的过程(了解),算法操作步骤,解决: 做什么? 怎么做?,算法的特点,有穷性 确定性 可行性/有效性 有零个或多个输入 有一个或多个输出,有限的操作步骤且每一步均应在合理的时间内完成,无“死循环”,每一步骤通过已经实现的基本运算执行后,在有限次内得到有效的效果,无“死语句”,每一条指令必须有确定的含义,无“二义性”,有多种输入途径可供输入数据,以进行数据处理,有多种输出途径可将运行结果输出,算法的表示方法,自然语言 流程图 N-S流程图 伪代码 计算机程序语言,第三章 数据类型、运算符与表达式,C 语言

4、中数据类型的分类(了解) 整型、实型、字符型、字符串常量的表示方法(掌握) 符号常量的定义和使用(掌握) 变量的定义、初始化(掌握) 算术、赋值、复合赋值、自增、自减、逗号运算符及表达式(掌握) 各类数值型数据间的混合运算(掌握),预备知识 计算机中数的表示及进制转换 各种进制之间的转换 二进制、八进制、十六进制转换成十进制 字节和位 内存以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0或1 数值的表示方法原码、反码和补码 原码:最高位为符号位,其余各位为数值本身的绝对值 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 补码: 正数:原

5、码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加1,基本数据类型,常量与变量 标识符 定义:用来标识变量名、常量名、函数名、数组名、类型名和文件名等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线 大小写敏感 不能使用关键字 长度:TC-最长32个字符;MS C-最长8个字符,字符常量 定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,转义字符及其含义:,转义字符:反斜线后面跟一个字符或一个代码值表示,例 转义字符举例 main() printf(101 x42 Cn); printf(I say:How

6、are you?n); printf(C Programn); printf(Turbo C); ,如 A65, a97, 048 , n10,整型变量 占字节数随机器不同而不同,一般占一个机器字 shortintlong 可用sizeof(类型标识符)测量,实型变量 float:占4字节,提供7位有效数字 double:占8字节,提供16位有效数字,字符型变量 字符变量存放字符ASCII码 char与int数据间可进行算术运算,例 float a; a=111111.111; /* a=111111.1*/ double b; b=111111.111; /* b=111111.111*/,

7、例 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */,没有字符串变量,用字符数组存放,显式转换(强制转换) 一般形式:(类型名)(表达式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3,精度损失问题,学习运算符应注意: 运算符功能 与运算量关系 要求运算量个数 要

8、求运算量类型 运算符优先级别 结合方向 结果的类型,短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,第四章 数据输入与输出,赋值语句及使用(掌握) 字符输入输出( getchar函数和putchar函数)(了解) 格式输入输出( scanf函数和printf函数)(掌握),int a=567;printf ( “%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“%

9、c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;printf(“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%”);,567,ff,101,567,A,ABC,5.677890e+02,567.789000,567.789,%,说明 格式字符要用小写 格式字符与输出项个数应相同,按先后顺序一一对应 输出转换:格式字符与输出项类型不一致,自动按指定格式输出,例 int a=3,b=4; printf(“%d %dn”,a,b); printf(

10、“a=%d , b=%dn”,a,b); 输出结果: 3 4 a=3, b=4,例 main() unsigned int u=65535; printf(”u=%dn,u); 输出结果:u=-1,例 int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b);,附加格式说明符(修饰符),例 scanf(“%3d%*4d%f”, 输入 12345678765.43 则123k, 8765.43f,例 scanf(“%2d%*3d%2d”, 输入 1234567 则12a, 67b,例 scanf(“%3c%2c”, 输入 abcd

11、e 则ac1, d c2,附加格式说明符(修饰符),例 scanf(“%4d%2d%2d”, 输入 19991015 则1999yy, 10 mm, 15 dd,例 scanf(“%d:%d:%d”, 输入 12:30:45 则12 h, 30 m, 45 s,输入分隔符的指定 一般以空格、TAB或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符间字符,例 scanf(“%d%o%x”, 输入 123 123 123 输出 a=123,b=83,c=291,例 scanf(“a=%d,b=%d,c=%d”, 输入 a=12,b=24,c=36 ,例 scanf(“%d,%d”, char

12、 ch; scanf(“%d”, 执行:123 输出:x=123,ch=10,例 int x; char ch; scanf(“%d”, 执行:123 输出:x=123,ch=10,例 int x; char ch; scanf(“%d”,如 scanf(“%c%c%c”, 若输入abc 则ac1, c2, b c3,如 scanf(“%d%c%f”, 若输入1234a123o.26 则 1234 a, a b, 123 c,第五/六章 C程序流程设计,第五章 选择结构 关系、逻辑运算符及表达式(掌握) if 语句的三种形式(掌握) switch 语句及 break 语句的使用 (掌握) 要求

13、能编写含有 if 语句嵌套结构的程序,第六章 循环结构 while 语句及应用(掌握) do-while 语句及应用(掌握) for 语句及应用(掌握) break 语句在循环中的作用(掌握) continue 语句在循环中的作用(了解) 要求能编写含有二重循环结构的程序。,C语句分类,程序控制语句(9种):,复合语句:用 括起来的一组语句 一般形式: 数据说明部分; 执行语句部分; 说明: “”后不加分号 语法上和单一语句相同 复合语句可嵌套,说明: for语句中expr1, expr2 ,expr3 类型任意,都可省略,但分号;不可省 无限循环: for(;) for语句可以转换成whil

14、e结构,expr1; while(expr2) 循环体语句; expr3; ,例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); ,结果:abcdefghij,例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); ,例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); ,例:#include main( ) int i=0; for(;i10;putchar(a+i),i+) ; ,第七章 数组, 一维数组的定义、初始化

15、及元素引用(掌握) 二维数组的定义、初始化及元素引用(掌握) 字符数组的定义及使用(掌握) 字符串处理函数(了解),一维数组的引用 数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式: 数组名下标 其中:下标可以是常量或整型表达式,例 int i=15; int datai; (不能用变量定义数组维数),例 int a10; printf(“%d”,a); () 必须 for(j=0;j10;j+) printf(“%dt”,aj); (),例 int data5; data5=10; /C语言对数组不作越界检查,使用时要 注意,一维数组的初始化 初始化方式,

16、在定义数组时,为数组元素赋初值 (在编译阶段使之得到初值),int a5=1,2,3,4,5; 等价于:a0=1; a1=2; a2=3; a3=4; a4=5;,说明: 数组不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值,当全部数组元素赋初值时,可不指定数组长度,如 int a5=6,2,3; (不用static初值也可为0) 等价于: a0=6; a1=2;a2=3; a3=0; a4=0; 如 int a3=6,2,3,5,1; (),static int a5; 等价于:a0=0; a1=0; a2=0; a3=0; a4=0;,只给部分数组元素赋初值,

17、int a=1,2,3,4,5,6; 编译系统根据初值个数确定数组维数,二维数组元素的初始化 分行初始化: 二维数组元素的引用 形式: 数组名下标下标,按元素排列顺序初始化,字符数组和字符串 字符数组 定义,字符数组的初始化 逐个字符赋值 用字符串常量 字符数组的引用,例 char c10, ch34;,字符串的输入输出 逐个字符I/O: %c 整个字符串I/O: %s,例 用%c main() char str5; int i; for(i=0;i5;i+) scanf(“%c”, ,例 用%s main() char str5; scanf(“%s”, str); printf(“%s”,

18、 str); ,用字符数组名,不要加 (2)char s =“tv0willn”; (3)char s =“x69082n”;,第八章 函数, 函数的定义与调用(掌握) 函数调用时的实参与形参的结合(掌握) 函数原型声明与函数在源程序中的相对位置的关系(理解) 函数的嵌套调用和递归调用(理解) 局部变量和全局变量的概念及应用(理解 ) 变量的存储类别 auto 、 static 、 register 、 extern (了解),函数的定义 一般格式,合法标识符,函数返回值类型 缺省int型 无返回值void,函数体,例 有参函数(现代风格) int max(int x,int y) int z

19、; z=xy?x:y; return(z); ,例 无参函数 printstar( ) printf(“*n”); 或 printstar(void ) printf(“*n”); ,函数的返回值 返回语句 形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换 void型函数,例 无返回值函数 void swap(int x,

20、int y ) int temp; temp=x; x=y; y=temp; ,main() float a,b; int c; scanf(%f,%f, ,函数的调用 调用形式 函数名(实参表); 说明: 实参与形参个数相等,类型一致,按顺序一一对应 实参表求值顺序,因系统而定(Turbo C 自右向左),例 函数说明举例,例 交换两个数,例 求二维数组中最大元素值,第九章 预处理命令, #define 命令的使用(理解) #include 命令的作用(了解),如 if(x=YES) printf(“correct!n”); else if (x=NO) printf(“error!n”);

21、 展开后: if(x=1) printf(“correct!n”); else if (x=0) printf(“error!n”);,宏定义 不带参数宏定义 一般形式: #define 宏名 宏体 功能:用指定标识符(宏名)代替字符序列(宏体),宏展开:预编译时,用宏体替换宏名-不作语法检查,宏体可缺省,表示宏名 定义过或取消宏体,定义位置:任意(一般在函数外面) 作用域:从定义命令到文件结束 #undef可终止宏名作用域 格式: #undef 宏名,宏定义可嵌套,不能递归,例 #define MAX MAX+10 (),引号中的内容与宏名相同也不置换,例 #define PI 3.1415

22、9 printf(“2*PI=%fn”,PI*2); 宏展开:printf(“2*PI=%fn”,3.14159*2);,宏定义中使用必要的括号(),例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2;,文件包含 功能:一个源文件可将另一个源文件的内容全部包含进来 一般形式: #include “文件名” 或 #include ,处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件作一个源文件编译, 直接按标准目录搜索 “” 先在当前目录搜索,再搜索标准目录 可指定路径,第

23、十章 指针, 地址、指针、指针变量的概念(掌握) 指针变量的定义、初始化、赋值(掌握) 两个与指针有关的运算符( float *q ; static char *name;,注意: 1、int *p1, *p2; 与 int *p1, p2; 2、指针变量名是p1,p2 ,不是*p1,*p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定,应用前必须先赋值,指针变量的初始化 一般形式:存储类型 数据类型 *指针名=初始地址值;,赋给指针变量, 不是赋给目标变量,例 int i; int *p=,变量必须已说明过 类型应一致,例 int i; int *p=,用已初

24、始化指针变量作初值,例 main( ) int i; static int *p= . (),不能用auto变量的地址 去初始化static型指针,一级指针变量与一维数组的关系 int *p 与 int q10 数组名是指针(地址)常量 p=q; p+i 是qi的地址 数组元素的表示方法:下标法和指针法, 即若p=q, 则 pi qi *(p+i) *(q+i) 形参数组实质上是指针变量,即int q int *q 在定义指针变量(不是形参)时,不能把int *p 写成int p; 系统只给p分配能保存一个指针值的内存区(一般2字节);而给q分配2*10字节的内存区,指针与二维数组 二维数组的

25、地址,对于一维数组: (1)数组名array表示数组的首地址,即array0的地址; (2)数组名array是地址常量 (3)array+i是元素arrayi的地址 (4)arrayi *(array+i),指针与字符串 字符串表示形式 用字符数组实现,例 main( ) char string=“I love China!”; printf(“%sn”,string); printf(“%sn”,string+7); ,用字符指针实现,例 main( ) char *string=“I love China!”; printf(“%sn”,string); string+=7; while(

26、*string) putchar(string0); string+; ,字符指针初始化:把字符串首地址赋给string char *string; string=“I love China!”;,*string!=0,字符串指针作函数参数,例 用函数调用实现字符串复制,(1)用字符数组作参数,(2)用字符指针变量作参数,void copy_string(char from,char to) int i=0; while(fromi!=0) toi=fromi; i+; toi=0; main() char a=I am a teacher.; char b=You are a student

27、.; printf(string_a=%sn string_b=%sn,a,b); copy_string(a,b); printf(nstring_a=%snstring_b=%sn,a,b); ,void copy_string(char *from,char *to) for(;*from!=0;from+,to+) *to=*from; *to=0; main() char *a=I am a teacher.; char *b=You are a student.; printf(string_a=%snstring_b=%sn,a,b); copy_string(a,b); pri

28、ntf(nstring_a=%snstring_b=%sn,a,b); ,指针数组和多级指针 用于处理二维数组或多个字符串 指针数组 定义:数组中的元素为指针变量 定义形式:存储类型 数据类型 *数组名数组长度说明; 例 int *p4;,指针所指向变量的数据类型,指针本身的存储类型,区分int *p4与int (*p)4,指针数组赋值与初始化,二维数组存储空间固定 字符指针数组相当于可变列长的二维数组 分配内存单元=数组维数*2+各字符串长度,指针数组元素的作用相当于二维数组的行名 但指针数组中元素是指针变量 二维数组的行名是地址常量,定义形式:存储类型 数据类型 *指针名; 如 char

29、*p;,例 int i, *p; p= ()/p是二级指针,不能用变量地址为其赋值,指针本身的存储类型,最终目标变量的数据类型,*p是p间接指向对象的地址 *p是p间接指向对象的值,例 int i=3; int *p1; int *p2; p1=,多级指针,例 三级指针 int *p; 四级指针 char *p;,第十一章 结构体、共用体 和枚举类型, 结构体类型的定义(掌握) 结构体变量、数组、指针变量的定义、初始化及成员引用(掌握) 参数为结构体变量或结构体指针的函数(理解) 共用体的概念及共用体类型的定义(了解) 枚举类型的概念及共用体类型的定义(理解) typedef 语句的使用(了解

30、),例 struct student int num; char name20; char sex; int age; float score; char addr30; ; struct student stu1,stu2;,结构体变量的定义 先定义结构体类型,再定义结构体变量 一般形式:,struct 结构体名 类型标识符 成员名; 类型标识符 成员名; . ; struct 结构体名 变量名表列;,例 #define STUDENT struct student STUDENT int num; char name20; char sex; int age; float score; c

31、har addr30; ; STUDENT stu1,stu2;,说明 结构体类型与结构体变量概念不同 类型:不分配内存; 变量:分配内存 类型:不能赋值、存取、运算; 变量:可以 结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆 结构体类型及变量的作用域与生存期,结构体变量的引用 引用规则 结构体变量不能整体引用,只能引用变量成员,可以将一个结构体变量赋值给另一个结构体变量 结构体嵌套时逐级引用,成员(分量)运算符 优先级: 1 结合性:从左向右,引用方式: 结构体变量名.成员名,结构体数组 结构体数组的定义 三种形式:,形式一: struct student int num; ch

32、ar name20; char sex; int age; ; struct student stu2;,形式二: struct student int num; char name20; char sex; int age; stu2;,形式三: struct int num; char name20; char sex; int age; stu2;,结构体数组初始化,例 struct int num; char name20; char sex; int age; stu =,;,顺序初始化: struct student int num; char name20; char sex;

33、int age; ; struct student stu =100,“Wang Lin”,M,20, 101,“Li Gang”,M,19, 110,“Liu Yan”,F,19;,例 struct student int num; char name20; char sex; int age; stu =,;,结构体数组引用,引用方式: 结构体数组名下标.成员名,结构体和指针 指向结构体变量的指针 定义形式:struct 结构体名 *结构体指针名; 例 struct student *p;,使用结构体指针变量引用成员形式,存放结构体变量在内存的起始地址,指向运算符 优先级: 1 结合方向:

34、从左向右,例 指向结构体的指针变量,main() struct student long int num; char name20; char sex; float score; stu_1,*p; p= ,例 int n; int *p= n=10,struct student stu1; struct student *p= (*p).num=101,指向结构体数组的指针,例 指向结构体数组的指针,struct student int num; char name20; char sex; int age; stu3=10101,Li Lin,M,18, 10102,Zhang Fun,M

35、,19, 10104,Wang Min,F,20; main() struct student *p; for(p=stu;pnum,p-name,p-sex,p-age); ,用指向结构体的指针作函数参数 用结构体变量的成员作参数-值传递 用指向结构体变量或数组的指针作参数-地址传递 用结构体变量作参数-多值传递,效率低,共用体变量引用 引用方式:,例 a.i=1; a.ch=a; a.f=1.5; printf(“%d”,a.i); (编译通过,运行结果不对),引用规则 不能引用共用体变量,只能引用其成员,共用体变量中起作用的成员是最后一次存放的成员,例 union int i; char

36、 ch; float f; a; a=1; (),不能在定义共用体变量时初始化,例 union int i; char ch; float f; a=1,a,1.5; (),可以用一个共用体变量为另一个变量赋值,例 float x; union int i; char ch; float f; a,b; a.i=1; a.ch=a; a.f=1.5; b=a; () x=a.f; (),用typedef定义类型 功能:用自定义名字为已有数据类型命名 类型定义简单形式: typedef type name;,例 typedef int INTEGER;,类型定义语句关键字,已有数据类型名,用户定义的类型名,例 typedef float REAL;,类型定义后,与已有类型一样使用,例 INTEGER a,b,c; REAL f1,f2;,说明: 1.typedef

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论