第一篇:程序设计总结
程序设计总结
懂的..................................................................................................................................................1 第一章.C语言概述................................................................................................................1 第二章.程序的灵魂—算法....................................................................................................1 第三章.数据类型、运算符与表达式....................................................................................1 第四章.最简单的C程序设计—顺序程序设计...................................................................2 第五章.选择结构程序设计....................................................................................................2 第六章.循环控制....................................................................................................................3 第七章.数组............................................................................................................................3 第八章.函数............................................................................................................................4 第九章.预处理命令................................................................................................................5 第十章.指针............................................................................................................................5 第十一章.结构体与共用体....................................................................................................5 疑问..................................................................................................................................................6 第八章.函数............................................................................................................................6 第十一章.结构体与共用体....................................................................................................6 第十二章.位运算....................................................................................................................6 第十三章.文件........................................................................................................................6
懂的
第一章.C语言概述
1.1C程序是由函数构成。一个C源程序至少且仅包含一个main函数,也可以包含一个main函数和若干个其他函数。函数是C程序的基本单位。1.2一个函数由两部分组成:即函数的首部和函数体。
1.3一个C程序总是从main函数开始执行的,不论main函数在整个程序中的位置如何。1.4C程序书写格式自由。
1.5每个语句和数据声明的最后必须有一个分号。
1.6 C语言本身没有输入输出语句,输入输出的操作是由库函数scanf和printf等函数来完成的。
1.7可以对C程序的某行或某几行做注释。第二章.程序的灵魂—算法
2.1对数据的操作步骤即算法。
2.2算法可通过自然语言、流程图、N-S流程图、伪代码、计算机语言等方式表示。2.3 3种基本结构:顺序结构、选择结构、循环结构(当型循环结构、直到型循环结构)。2.4结构化的算法有以下特点:1.只有一个入口2.只有一个出口3.结构内的每一部分都有机会被执行到4.结构内不存在“死循环”。第三章.数据类型、运算符与表达式 3.1C语言的数据类型 3.2常量与变量 3.3整型数据 3.4浮点型数据
3.5字符型数据:字符常量用一对单撇号括起,字符串常量用一对双撇号括起。3.6变量赋初值
3.7各类型数值型数据间的混合运算 3.8算术运算符合算术表达式 3.9赋值运算符和赋值表达式 3.10逗号运算符和逗号表达式
第四章.最简单的C程序设计—顺序程序设计 4.1赋值语句
4.2数据输入输出的概念及在C语言中的实现 4.3字符数据的输入输出:putchar和getchar 4.4格式输入与输出:printf与scanf 第五章.选择结构程序设计 5.1关系运算符和关系表达式 5.2逻辑运算符和逻辑表达式 5.3if语句
1.if(表达式)语句
2..if(表达式)语句1else 语句2 3.If(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3.else if(表达式m)语句m else if(表达式n)语句n If语句的嵌套 If(){ If()语句1; else()语句2; } else { If()语句3; else()语句4; } 5.4 switch语句 Switch(表达式){ case 常量表达式1:语句1;break; case 常量表达式2:语句2;break;.case 常量表达式n:语句n;break; Default :语句n+1;break;} 第六章.循环控制
6.1用while语句实现循环 While(表达式)语句
6.2用do...while语句实现循环 Do 循环体语句
While(表达式);(先执行循环体再判断)6.3用for语句实现循环
For(表达式1;表达式2;表达式3)语句
For(循环变量赋初值;循环条件;循环变量增值)语句 6.4循环的嵌套
6.5break语句和continue语句
使用break语句可以跳出循环,结束整个循环过程,不再判断执行循环的条件是否成立continue结束本次循环,跳过循环体下面尚未执行的进行下一次是否执行循环的判定。第七章.数组
7.1一维数组的定义和引用 一维数组的定义: 类型说明符 数组名[常量表达式]; 如 int a[10];一维数组元素的引用
数组名[下标](数组名是从0开始的)7.2 二维数组的定义和引用 二维数组的定义:
类型说明符 数组名[常量表达式][常量表达式]; 如 float a[3][4],b[5][4];二维数组的引用
数组名[下标][下标]; 7.3字符数组的定义
char 数组名[常量表达式]; 如cahr c[10];由于字符型与整型是互相通用的,因此也可以定义一个整型数组,用它存放字符数据,但浪费存储空间。
字符型数据的初始化
如 char c[10]={‘i’,’’,’a’,’m’,’h’,’a’,’p’,’p’,’y’};字符串处理函数 1.puts函数
Puts(字符数组);
其作用是将一个字符串输出到终端。2.gets函数
Gets(字符数组);
其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。3.strcat函数 Strcat(字符数组1,字符数组2);
其作用是连接两个字符数组中的字符串,把字符数串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值—字符数组的地址。4.strcpy和strncpt函数
Strcpy(字符数组1,字符串2);
其作用是将字符串2复制到字符数组1中。可以用strncpy函数将字符串2中前n个字符复制到字符数组1中去,如 strncpy(str1,str2); 其作用是将str2中最前面2个字符复制到str1中。5.strcmp函数
Strcmp(字符串1,字符串2);
其作用是比较字符串1和字符串2的大小,如全部字符相同,则认为相同;若出现不相同的字符,则以第一个不同的字符的比较结果为准。6.strlen函数
Strlen(字符数组);
其作用是测试字符串长度的函数。7.strlwr函数 Strlwr(字符串);
其作用是将字符串中大写字母换成小写字母。8.strupr函数
Strupr(字符串)
其作用是将字符串中小写字母换成大写字母。第八章.函数
8.1函数定义的一般形式 无参函数定义的一般形式 类型标识符 函数名(){ 声明部分 语句部分 } 有参函数定义的一般形式
类型标识符 函数名(形式参数表列){ 声明部分 语句部分 } 空函数
类型说明符 函数名(){} 8.2函数参数和函数值 形式参数和实际参数
在定义函数时函数名后面括号中的变量名称为“形式参数”(简称“形参”),在主调函数中调用一个函数时,函数名后面括号中的参数(可以是一个表达式)称为“实际参数”(简称“实参”)。8.3函数的调用 8.4函数的嵌套调用 8.5函数的递归调用 8.6数组作为函数参数 8.7局部变量和全局变量
在一个函数内部定义的变量,只在本函数范围内有效,即局部变量。在函数之外定义的变量,有效范围为从定义变量的位置开始到本源文件结束,即外部变量也称全局变量。
8.8内部函数和外部函数 第九章.预处理命令 9.1宏定义
9.2“文件包含”处理
一般来说,如果为调用库函数而#include命令来包含相关的头文件,则用尖括号,以节省查找时间。如果要包含的是用户自己编写的文件,一般用双撇号。9.3条件编译 第十章.指针
10.1地址和指针的概念
一个变量的地址成为该变量的“指针”。如果有一个变量专门用来存放另一个变量的地址,则它称为“指针变量”。指针是一个地址,而指针变量是存放地址的变量。10.2变量的指针和指向变量的指针变量 定义一个指针变量 基类型 *指针变量名
第十一章.结构体与共用体 Struct 结构体名 {成员表列};
11.1定义结构体类型变量的方法 先声明结构体类型再定义变量; 在声明结构体类型同时定义变量; Struct 结构体名 { 成员表列 }变量名表列;
直接定义结构体类型变量; Struct { 成员表列 }变量表列;
11.2结构体变量的引用 结构体变量名、成员名 11.3结构体变量的初始化 11.4结构体数组 11.5共同体
使几个不同的变量共占用一段内存的结构称为“共用体”类型的结构。Union 共用体名 { 成员表列 }变量表列;
引用方式与结构体相同。11.6枚举类型
Enum 变量名称{成员表列};
定义了一个枚举类型则变量的值只限于列举出来的值得范围内。11.7用typedef命名已有类型 如 typedef int INTEGER;Typedef float REAL;指定用INTEGER代表int类型,REAL代表float类型。
疑问
第八章.函数 变量的存储类别 第十章.指针
10.1数组与指针:不知道行指针与列指针是什么; 10.2指向函数的指针:不知道怎么用; 10.3指向指针的指针:不知道怎么用; 第十一章.结构体与共用体
11.1指向结构体类型数据的指针:不知道怎么用;
11.2用指针处理链表:不知道什么是头结点,怎样才算是带头结点和不带头结点; 第十二章.位运算 概念不清晰; 第十三章.文件
不知道怎样将一个字符串放入文件中以及引用文件中的字符串;
第二篇:程序设计总结
Strcmp的用法
原型:extern int strcmp(const char *s1,const char * s2);
用法:#include
功能:比较字符串s1和s2。
说明:
当s1 当s1=s2时,返回值=0 当s1>s2时,返回值>0 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇' '为止。如: “A”<“B” “a”>“A” “computer”>“compare” 特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。编辑本段应用举例 举例1:(在VC6.0中运行通过)#include char str1[20]={“i love ”}; char str2[20]={“zftd”}; printf(“%sn”,strcpy(str1,str2));} 输出的是“zftd”还是“zftdve ”? 也就是说strcpy是替换全部的str1,还是将str2复制到str1的前几个(str1占10字节,str2占5字节,输出是str2还是str2和str1的后5字节);strcpy之前,str1[]=“i love ”strcpy后, 复制过来5个字节,“zftd”和结尾的' '共5个字节.于是变成str1[]=“zftd e ”输出的时候,遇' '字符截断,于是只输出“zftd” 例2 定义一个字符串char a[20],和一个字符串c[]=“i am a teacher!”;把c复制到a中就可以这样用:strcpy(a,c);这个函数包含在头文件 程序设计教学工作总结 在一学期的教学工作中,本人能坚持党的教育方针,认真学习国家的各种法律法规,严格要求自己,努力培养自己的职业道德修养与正确的行为规范,在实际的工作岗位上尽职尽责,自始至终以认真、严谨的治学态度,勤恳、坚持不懈的精神从事教学工作。 为了上好这门课,我按照规范教学规范管理严格要求自己,深入研究教学大纲,认真钻研教材,精心设计教法,认真备写教案,精选典型试题,强化训练,力争在有限的时间,使每一堂课的教学优质高效。重视实践性教学,耐心进行辅导,认真批改和及时评讲作业。广泛涉猎各种知识,形成比较完整的知识结构,严格要求学生,尊重学生,发扬教学民主,使学生学有所得,不断提高,从而不断提高自己的教学水平和思想觉悟,并顺利完成教育教学任务。 在教学中,我采用案例教学法,将抽象的程序设计知识,以一个个实用案例的形式呈现给学生,符合学生 认知规律。学生课堂纪律较好,部分学生参与度较高;学生积极就练习过程中问题提问,学习积极性较高,课堂气氛活跃。本门课程达到教学目标,教学效果良好。 在过去的教学工作中,自己虽然取得了一些成绩,也积累了一些教学经验,但在理论与实践相结合的教学方法中还有待进一步提高。今后,我要更加努力地提高教学质量,成为真正让学生满意的教师。 1.Von Neumann提出存储程序计算机模型; 2.存储程序结构特点:以运算器为核心;采用存储程序原理(指令和数据都在存储器);存储器按地址访问的、线性编址的空间;控制流由指令产生;指令由操作码和操作数组成;数据以二进制编码表示,采用二进制运算。 3.计算机分型:VLSI/向量机/流水线/Cache/并行; 4.David Patterson提出了RISC体系结构; 5.线延迟墙:导线变细,阻力变大;导线间隔变短,导致耦合电容,从而影响频率; 频率墙:不能仅仅依靠提高处理器的主频来提高系统的性能; 存储墙:处理器性能与存储系统性能之间存在巨大的差距 I/O墙:处理器的主频与I/O总线时钟频率之间存在巨大的差距 6.程序的时间局部性(循环),程序的空间局部性(数组)7.开销性能设计必须考虑的因素:成本和价格 8.芯片制作过程:版图设计、备片、光刻成像、参杂、金属化、、钝化、切割、测试、封装 9.集成电路成本= 10.计算机系统的成本和价格 影响计算机系统成本的主要因素:时间和产量等,最直接影响是时间 11.计算机性能评测:时间; 响应时间(执行时间):从事件开始到结束之间的时间。吞吐率:在单位时间内所能完成的工作量(任务)。 用户以响应时间为标准,多道程序系统以吞吐率为标准 响应时间与性能成反比 “X比Y快”:对于给定的任务,X的响应时间比Y少,“X比Y快n倍”指: 响应时间一般定义为CPU时间 CPU时间:CPU运行某程序时的工作时间,包括用户CPU时间和系统CPU时间 12.计算机性能设计和评价的原则:大概率事件优先、Amdahl定律 13.Amdahl定律:加快某部件执行速度所获得的系统加速比,受限于该部件在系统所占的重要性。该定律可以确定系统中对性能限制最大的部件,也可以用来计算通过改进某部件所获得的系统性能的提高。 推论:如果仅对计算机一部分做性能改进,则改进越多,获得的效果越小; 如果只针对整个任务的一部分进行优化,那么所获得的加速比不小于1/(1-fe); 14.系统加速比 15.系统加速比依赖的两个因素:可改进比例、部件加速比。 fe是可改进比例,Se是部件加速比,Te是优化后的时间,S是系统加速比 16.程序执行的CPU时间为: CLK总时钟周期数 程序执行过程中所处理的指令书IC 每条指令执行所需要的时钟周期数CPI 17.时钟频率(f)反映了计算机实现技术、生产工艺和计算机组织; 指令的平均时钟周期数(CPI)反映了计算机组织(如流水线)和计算机指令集结构。程序的指令数IC:反映了计算机指令集的结构和编译技术。 第三章 程序编译的过程 18.GCC可以编译多种高级语言,包含了预处理器、编译器、汇编器、链接器等组件。 第四章 指令系统 19.指令集:指令的集合,每条指令由CPU执行 指令表示方法:二进制格式;物理存储空间组织方式位、字节、字等; x86可变字长RISC固定字长 操作由操作码表示 操作数:存储单元的地址,隐含或显示表示 存储单元:存储器、寄存器、堆栈和累加器 20.大端方式:高地址存低位;小端方式:高地址存高位 21.DLX指令集结构 特点:注重指令流水效率;简化指令的译码;32个32位通用寄存器;R0始终为0;R31保存返回地址。 寄存器寻址:ADD,R1,R2,R3 立即数寻址:ADD,R1,R2,#42 偏移寻址:ADD,R1,R2,40(R3)寄存器间接寻址:ADD,R1,R2,(R3)I类型指令: Regs[R1] ←32 Mem[30+Regs[R2]] R类型指令: J类型指令:J name ##表示拼接 下标表示选中某个域,上标表示复制某个域,Mem表示存储器中的一个数组,存储器按照字节寻址,可以传送任意字节的数据。 22.MIPS指令集 设计原则:简单有益于规整;所有算术指令都有三个操作数,操作数的顺序是固定的(目标操作数在前)23. 第一章面向对象编程原理 近五十年间,软件技术经历了多个阶段的发展演变 目前为止最流行的技术还是面向过程编程(POP) 面向过程编程采用了自顶向下的设计方案,问题被看做多个执行任务的序列。为完成这些任务,须实现一些函数。 面向过程有两大不足,即:(1)数据可在程序内自由迁移,程序内任何函数都会引起数据的更改,增加了数据的脆弱性。(2)它并不能很好地建模现实世界。 为了克服面向过程编程中的不足,人们发明了面向对象编程(OOP)。它采用自底向上的编程方案,在程序开发中,把数据视为重要元素,不允许数据在系统内自由迁移。它还将数据和函数紧密绑定于成为类的数据结构中,函数可操作类中的数据。此特性称为数据封装。 在面向对象编程中,问题被视为一系列称为对象的实体的集合。对象是类的实例; 将数据与程序的直接访问隔绝,这称为数据隐藏。 数据抽象指的是,将各种必要特性合并,而不引入背景细节。 继承是这样的一个过程,即某类的对象得到另一类对象的属性。 多态指的是,一个名称,多种形态。在程序中,我们可以借此定义多个同名函数。此特性亦可重载运算符,这样一来,同一个运算符在不同的实例下,会有不同的行为。 动态绑定指的是,给定过程的代码,直到运行期被调用时才确定。 消息传递涉及对象名,函数(消息)名以及发送的信息。 与传统的编程技术相比,面向对象技术具有诸多优势——最显著的当属重用技术。 在实时系统等几乎所有的计算机领域,面向对象编程的应用程序都已受到重视。 不少语言都支持面向对象编程,流行的语言包括C++、Smalltalk和Java。 第二章C++入门 C++是C语言的超级 C++在C语言的基础上,添加了一些面向对象的特性,诸如对象、继承、函数重载和运算符重载。这些特性加强了程序的清晰性,可扩展性,使程序容易维护。 C++可用于开发各种系统,诸如编辑器、编译器、数据库、通信系统以及其他更多复杂的实际系统。 C++支持交互式输入输出,并引入了新的注释符号//,可用于注释单句。它也支持C语言的注释风格。 和C程序一样,所有C++程序的执行入口都是main()函数,并以return()语句作为结束。头文件iostream应包含于所有使用输入输出操作的程序开头。 所有标准C++程序都要包含using namespace std指令 典型的C++程序包括四个基本部分:也就是头文件包含部分、类声明部分、成员函数部分和主程序部分 和C程序一样,C++程序可用于任何文本编辑器创建 大多数编译器提供了集成开发运行环境。流行的编译器系统有UNIX AT&T C++、Turbo C++和微软公司的Visual C++ 第三章符号、表达式和控制结构 C++有不同的符号,包括关键字、标识符、常量、字符串和操作符 标识符指的是变量名、函数名、数组名、类名等 C++中增加了void的一个用途,可用于声明通用指针 C++中枚举数据类型略有不同,枚举类型名称为新的类型名。这样我们就可以声明枚举类型的变量 在C++中,字符数组的大小应比字符串的实际长度大1 C++增加了指针常量和常量指针的概念,对于前者我们不能修改赋予它的地址值,对于后者,我们不能修改它指向的内容。 在C++的内存管理和多态实现中,指针被广泛地使用。 C++中提供了const修饰符,用于声明常量,常量也是变量,只是其值不可变更。const修饰符默认修饰整型。 C++的变量类型检查非常严格,它不允许不同类型变量之间的赋值。类型转换是打破此规的唯一办法。 C++允许我们在程序中随处声明变量,而且可以利用声明处的表达式,在运行期完成初始化。 引用变量给之前定义的变量提供了一个别名。它们都指向内存中的同一个数据对象。所以,改变其中一个的值,另一边量的值也会随之改变。 引用变量必须在声明时初始化,这建立了它和要引用的变量之间的对应关系。 作用于解析操作符(::)的主要用于类,以识别成员函数所属的类 除了malloc()、calloc()、free()函数外,C++提供了两个一元操作符,即new和delete,以更好和更方便地分配和释放内存 C++也提供了操纵器,来格式化输出数据。最常用的操纵器为endl和setw C++支持七种表达式类型。表达式中数据类型混用时,C++使用特定规则,自动地进行类型转换。 使用类型转换操作符,C++也可显示地进行变量和表达式的类型转换 和C语言一样,C++也支持三种基本的控制结构,也就是顺序结构,分支结构和循环结构,并使用各种控制语句实现它们,比如if、if…else、switch、do…while、while以及for。 第四章C++中的函数 在程序的不同处,调用函数可减少程序的大小。 在C++中,main()函数向操作系统返回一个整型值。因为函数的返回值类型默认是整型,所以main()函数中的关键字int是可选的。而如果没有返回语句,大部分C++编译器会提示一个警告。 函数原型向编译器提供了函数的细节,比如参数的数目和类型,以及返回值的类型。 C++的引用变量使我们可以传引用参数给函数。函数也可以返回引用变量。 当函数声明为内联时,编译器用相应的函数代码替换了函数调用。一般情况下,小函数才使用内联。 编译器可能会忽略函数的内联声明,如果函数声明太长或过于复杂,编译器将按常规函数编译它。 当函数声明时,C++允许我们把默认值赋给函数参数。这种情况下,我们可以无需指明所有参数,便可调用函数。默认参数总是由右到左添加。 C++中,函数的参数可声明为常量,表示函数不可更改此变量。 C++允许函数重载,也就是说,我们可以定义多个同名函数。通过检查参数数目和类型编译器会准确地匹配函数调用和函数代码。 C++支持两种新的函数类型,亦即友元函数和虚函数。 C++标准库支持很多数学库函数,使用它们可以完成许多数学计算。 第五章 类和对象 类是结构体数据类型的扩展,一个类有多个成员变量和成员函数。 默认情况下,类的成员是私有的,而结构体的成员是公用的。 只有成员函数可以访问私有数据成员和私有函数。但是类外可以访问公用成员。 在C++中,类变量称为对象。利用对象并使用点操作符,我们可以访问类的公用成员。 我们可以在类内或类外定义成员函数。成员函数和常规函数的区别在于,成员函数的头 部有一个隶属标识符,以表明所属类。 对象声明时,内存空间才会分配。每一对象的成员变量空间单独分配,而成员函数的空间则统一分配。 类的一个成员变量可声明为静态成员,一般用于维护整个类的通用值。 静态成员变量必须定义于类外。 静态成员函数可访问声明在同类的静态成员,调用静态成员函数时需要用到类名。 C++允许我们使用对象数组。 对象可用作函数自变量。 友元函数不在友元声明类的作用域类,它可以访问累的所有私有数据。 函数可以返回对象。 如果成员函数不改变类内的任何数据,我们可以将其声明为常量成员函数,只要在函数原型中加上关键词const(声明和定义都要加)。 我们也可以在函数内定义和使用类。这种类称为局部类。 第六章构造函数和析构函数 C++提供了一种称为构造函数的特殊成员函数,它能帮助对象在创建时完成初始化。这一过程被称为对象的自动初始化。 构造函数名和类名一致。 构造函数通常用来初始化变量,以及分配内存。 和常规函数一样,构造函数也可以被重载。 当对象同时被创建和初始化时,复制构造函数被调用。 我们可以声明一个常量对象,其数据值不能改变。 C++还提供另一种成员函数,称为析构函数。当对象不再需要时,会调用这种函数来销毁对象。 第七章运算符重载和类型转换 运算符重载是C++的重要特性之一。又被称为编译时多态性。 使用重载特性,我们可以对两个用户自定义数据类型,比如说对象,执行相加的操作,使用的语法就和基本数据类型一样。 我们可以重载几乎所有C++的运算符,下面几个是例外: 类成员访问符(.,.*)。 作用域解析符(::)。 大小运算符(sizeof)。 条件运算符(?:)。 运算符重载是通过一种称为运算符函数的特殊函数完成的,该函数定义了运算符的特定任务。 运算符重载时有一些限制。运算符函数必须是非静态的成员函数或者友元函数。重载的运算符必须有至少一个用户自定义类型的操作数。 编译器不支持用户自定义数据类型的自动类型转换,我们可以使用自定义的转换运算符函数,以实现自定义数据类型的自动类型转换。 转换运算符函数应符合下列条件: 必须是类成员。 必须不指定返回值。 必须没有参数。 第八章继承:类的扩展 从旧类派生一个新类的机制被称为继承。继承提供了可重用性的概念。通过继承,C++的类可以被重用。 派生类继承了基类的一部分或所有特性。 只有一个基类的派生类被称为单继承。 可从多个类继承,这被称为多继承。 可从另一派生类继承类,这被称为多级继承。 当某类的属性被多于一个类继承时,这被称为层次继承。 不管是在公用模式还是私有模式,类的私有成员都不可被继承。 以公用模式继承的保护成员仍为派生类的保护成员,而以私有模式继承的保护成员,则变成派生类的私有成员。 友元函数和友元类的成员函数可直接访问私有和保护数据。 派生类的成员函数只能直接访问保护和公用数据。不过他们可通过基类的成员函数访问私有数据。 多路继承可能引起祖父基类的继承成员的重复。通过将共同的基类设为虚基类,我们可以避免祖父基类成员的重复。 在多继承中,基类的创建次序与他们在派生类中的声明次序一致。 类可包含其他类的对象。这被称为包含关系或嵌套。第三篇:程序设计教学总结
第四篇:程序设计期中考总结[定稿]
第五篇:C++程序设计总结