C程序设计提纲式.ppt

上传人:牧羊曲112 文档编号:6503620 上传时间:2023-11-07 格式:PPT 页数:51 大小:383KB
返回 下载 相关 举报
C程序设计提纲式.ppt_第1页
第1页 / 共51页
C程序设计提纲式.ppt_第2页
第2页 / 共51页
C程序设计提纲式.ppt_第3页
第3页 / 共51页
C程序设计提纲式.ppt_第4页
第4页 / 共51页
C程序设计提纲式.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《C程序设计提纲式.ppt》由会员分享,可在线阅读,更多相关《C程序设计提纲式.ppt(51页珍藏版)》请在三一办公上搜索。

1、C程序设计,主讲:贺细平电话:E-mail:办公室:六教207,课程地位与学习方法,课程地位:在软件设计中具有基础性地位培养计算思维-用计算机求解问题时特有的思维方式。“C通百通”!编程高手秘笈上机思考上机思考程序设计是“练”出来的!考核办法:平时上机实践(60%)+期终闭卷笔试(40%),第1讲我与程序设计有个美丽的约会-初识C语言,课程重要性学习方法编程入门知识赋值语句的用法if判断的用法实例:比大小,程序设计入门知识,计算机程序的执行过程:冯.诺依曼计算机模型数据的二进制表示存储程序、自动执行、顺序串行程序是怎样炼成的?编写代码编译执行程序修改程序是“改”出来的!其他应用程序与操作系统的

2、关系应用程序与内存、外存的关系,初识C语言,赋值 赋值运算符“=”a=b+c;先读取b和c的值并作加法运算,将结果写到变量a中取。计算机存取数据的特点:无论多少次“读”操作不会改变被读数据写操作将使用新的值覆盖原来的值,原来的数据丢失。比较与判断If语句的用法常用的比较运算符:,=,=,应用实例,求两个数的和交换两个变量的值求2个数中的较大值求3个数中的最大值求4个数、5个数思考:求100个数,1000个数中的最大值。,第2讲机器擅长(重复和存储)-循环与数组(初步),赋值运算符for循环的运用数组的基本用法,第3讲我想即我得-逻辑的表达(初步),分支与循环(进阶)多分支多重循环错落有致的代码

3、:代码格式规范,第4讲矩阵型数据的处理:二维数组,多重循环与二维数组重新演示选择排序法中2重循环的做法。二维数组的赋值和按行按列的访问。,第5讲 我想与我得(进阶)-分支与循环的综合运用(1),1:实验中存在的问题2:闰年的判断3:循环的break,与continue:判断一个整数是否是素数(也称为质数)。4:标志变量的设置运用:在素数判断中设置标志变量。(素数筛方法)。5:如何得到数字n的各个位的数字。,实验中常见问题,输入和输出格式的进行说明。要求输入格式和输出严格按题目描述的格式。OJ判题方式:逐个字符的比对。循环次数是由一个变量决定的说明。对于数的取值范围的说明:例如输入中给出了0=n

4、=100,这意味着,它的输入数据已经保证在此范围之内,程序中不需判断。以正方形的面积为例:说明使用数组的方法和不使用数组的方法。输出时可以对每个case输出一次,也可以在计算完所有case后输出。二者只是在占用存储空间上有所区别。输入数据和输出数据交错出现在屏幕上的说明。这种情况是允许的,因为输入和输出是分开来看的。程序运行结果必须充分测试,不能只是满足于题目中给出的测试用例。,判断是否是素数,Description判断某个数是否是素数。Input输入一个整数n(2=n=10000);Output如果是素数,则输出yes,否则,输出no。Sample Input5Sample Outputye

5、s,第6讲 我想与我得(进阶)-分支与循环的综合运用(2),素数筛法求数字的各个位。统计成绩的分布情况。,N平方的各个位,Description对于给定的非负整数n,求n平方的各个位上数字。Input输入一个整数n(0=n=5000);Output按照从高位到低位的输出分别输出各位数字,各个数字之间1个空格隔开。最后一个数字的后面只有回车没有空格。Sample Input3216Sample Output1 0 3 4 2 6 5 6,素数的个数,Description给定的区间2,n,求其中有素数的个数。Input输入一个整数n(1=n=1*106);Output输出素数的个数。Sample

6、 Input10Sample Output4,成绩分布情况,Description对于某次考试后,为了了解学生成绩的统计特性,现需要统计出每个分值上的人数。然后作出成绩分布的曲线图。成绩采用百分制,并且成绩均为非负整数。Input第一行包含一个整数n表示学生人数。接下来的一行中有n个代表学生分数的介于0,100 整数;Output依次输出每个分数值上的人数。Sample Input略Sample Output略,第7,8讲 文本的处理-字符串的存储与处理,1:通过实例说明字符串数据的输入和输出的方法。字符串与数组。2:字符串数据的存放和空终止符的说明。3:字符串处理函数的运用。4:数字和字符串

7、的相互转换。,尊姓大名,Description输入一个人的名字,请输出他(她)的姓和名。Input输入第一行表示测试用例的个数n。其后的n行,每行中有一个人的名字。输入的名字中的每个汉字使用汉语拼音,而不是中文,拼音之间用空格分隔。并且约定,如果是复姓,则姓的拼音之间没有空格。Output每个测试用例输出2行。格式参见输出样例。Sample Input2He Xi PingOuyang Zheng HuaSample OutputLastname:HeFirstname:Xi PingLastname:OuyangFirstname:Zheng Hua,英汉字典之超水版,Description

8、简单的实现英汉字典的功能。(详见文档)InputOutputSample InputSample Output,两小儿辩数,Description大家一定都学过两小儿辩日课文吧!应该对其中两个小孩的童真和爱较劲儿有深刻的印象。小朋友们在一起总想争个第一,谁也不肯服输。就拿数字的大小来说吧,小朋友们总是说出一个比对方更大的数字,因此数字越说越长,谁也说不服谁。那就请你用给他们编写一个裁判程序吧!Input输入a,b两个整数,分别表示2个小朋友给出的。1a,b101000Output按照示例输出比较的结果。如果a小于b,则输出ab;如果a等于b,则输出a=b。Sample InputSample

9、Outputab,选钻石矿,Description大家都知道钻石晶莹剔透、有棱有角、非常漂亮,代表着高贵、纯洁和永恒。可能你们知道吗?钻石并非天生就这么漂亮,这些钻石来自非常辛苦的大海捞针式的选矿工作和艰苦巨细的打磨得来的。现在,我们就来试试选矿的工作,假设我们要从一堆包含很多大大小小钻石块的矿中筛选出所有钻石。用一个字符串表示一堆钻石矿。非数字的字符表示泥土、岩石等杂质,一串连续的数字表示一小块钻石的价值(也可以看成是钻石的大小,因为钻石的大小与价值直接相关的)。将所有的数字相加,即为本堆矿物所筛选的钻石总价值。Input在一行中输入一个字符串,行的末尾有一个回车。字符串的长度大于等于1,小

10、于等于106;Output输出钻石总价值。Sample Inputadsf32kg!&4 560*4(#)Sample Output600,第9讲 分工合作的利器-设计模块化之函数(1),1:函数相关概念:先定义后使用。参数的类型与个数必须正确。返回值是所表示的含义。形式参数与实际参数的传递过程。2:如何设计函数:设计函数某块的原则:具有一定的功能,具有相对的独立性,具有清晰地接口。3:实例讲解:公历万年历。,第10讲 分工合作的利器-设计模块化之函数(2),1:讲解完公历万年历。2:将其中判断闰年的过程设为函数。3:讲解全局变量和局部变量和静态变量的区别。4:“分式化简”实例。求最小值和最大

11、公约数设计为函数。,第11讲:程序之美 函数的递归(1),1:递归的概念:函数自身调用自身。原问题求解方式与子问题相似(此为“递”)当子问题的规模小到一个特定程度时问题的解是已知的。(此为“归”)2:递归举例:Fibonacci数列,阶乘,求和、正反序输出一组数据,选择排序。,第12讲:程序之美 函数的递归(2),递归与非递归(循环)的区别:递归方式的实现代码相对简洁,但是每次递归但需要有一定的开销,效率有损失,并且递归的深度不能过大,否则堆栈溢出。循环方式的实现相对较复杂,但是运行效率高,不会有堆栈的溢出。,本次小结理解递归函数适用的场合。清楚递归调用的“递”过程和“归”过程。掌握递归函数的

12、简单应用。,递归举例:1:猜猜有多少2:生成全排列3:折半查找4:应用实例:整存零取,全排列,最大公约数。,第13讲:内存地址的妙用(1)指针的基本概念,1:什么是指针:指针即内存地址。2:变量,指针变量深入理解变量和指针变量3:指针变量的用法&运算符:取地址运算符*运算符:间接寻址运算符4:指针变量的使用场合。参数传递(能将函数中结果带回到调用者)函数名作为参数传递动态内存分配链表文件操作,变量与指针变量,普通变量三要素变量名:程序中通过名字引用它。程序中变量名与其值直接关联,直接寻址读/写变量。变量类型:表示数据的需要占用的字节数数据表示的范围数据所能进行哪些运算。int型,double型

13、,char型变量所占内存单元的起始地址:简称为变量的地址。通过取地址运算符&得到这个起始地址。,int a=10;,a,&a的值?,0012FF7C,b,变量与指针变量,普通变量三要素变量名:程序中通过名字引用它。程序中变量名与其值直接关联,以直接寻址方式读/写变量。变量类型:表示数据的需要占用的字节数数据表示的范围数据所能进行哪些运算。int型,double型,char型变量所占内存单元的起始地址:简称为变量的地址。通过取地址运算符&得到这个起始地址。,int a=10;,a,int b=a*2;,b,变量与指针变量,普通变量三要素变量名:程序中通过名字引用它。程序中变量名与其值直接关联,以

14、直接寻址方式读/写变量。变量类型:表示数据的需要占用的字节数数据表示的范围数据所能进行哪些运算。int型,double型,char型变量所占内存单元的起始地址:简称为变量的地址。通过取地址运算符&得到这个起始地址。,int a=10;,a,int b=a*2;,pa,变量与指针变量,int a=10;int*pa;pa=,a,指针变量三要素变量名:程序中通过名字引用它。程序中指针变量名与其所指向的值间接关联,以间接寻址方式读写所指向的变量。变量类型:表示它所指向的变量的数据类型。int*型,double*型,char*型变量所占的内存单元的起始编号:即变量在内存中的起始地址。通过取地址运算符得

15、到这个起始地址。2个值指针变量的值:即所指向变量的地址它所指向的变量的值。通过间接寻址运算符获得。,pa,变量与指针变量,int a=10;int*pa;pa=,指针变量三要素指针变量名:程序中通过名字引用它。程序中指针变量名与其所指向的值间接关联,以间接寻址方式读写所指向的变量。指针变量类型:表示它所指向的变量的数据类型。int*型,double*型,char*型指针变量所占的内存单元的起始编号:即变量在内存中的起始地址。通过取地址运算符得到这个起始地址。2个值指针变量的值:即所指向变量的地址它所指向的变量的值。通过间接寻址运算符获得。注意:在32位的操作系统中,任何类型的指针变量占用4个字

16、节的内存空间。即机器的寻址空间。,a,pa,变量与指针变量,int a=10;int*pa;pa=,a,0012FF7C,pa,0012FF7C,10,10,a,pa,a,20,a3,a0,a1,数组与指针变量,int a4;a0=1;a1=2;a2=3;a3=4;,a2,int a4;int*p;p=a;*p=1;*(p+1)=2;*(p+2)=3;*(p+3)=4;,int a4;int*p;p=a;*p=1;p+;*p=2;p+;*p=3;p+;*p=4,int a4;int*p;p=a;p0=1;p1=2;p2=3;p3=4;,a,重要概念:数组名是指针常量,它表示数组的起始地址。,数

17、组与指针变量,int a4;int*p;p=a;*p=1;p+;*p=2;p+;*p=3;p+;*p=4,int a4;int*p;p=a;for(i=0;i4;i+)*p=i+1;p+;,a,注意:每次p+移动4个字节,这是由p所指向的是整型数据 是4个字节决定的。,数组与指针变量,char a16;char*p;p=a;for(i=0;i16;i+)*p=a+i;p+;,a,注意:每次p+移动1个字节,这是由p所指向的是字符型数据 是1个字节决定的。,数组与指针变量,char a4;char*p;p=a;for(i=0;i16;i+)*p=a+i;p+;,a,注意:每次p+移动1个字节,这

18、是由p所指向的是字符型数据 是1个字节决定的。,数组与指针变量,char a4;char*p;p=a;for(i=0;i16;i+)*p=a+i;p+;,a,注意:每次p+移动1个字节,这是由p所指向的是字符型数据 是1个字节决定的。,数组与指针变量,char a4;char*p;p=a;for(i=0;i16;i+)*p=a+i;p+;,a,注意:每次p+移动1个字节,这是由p所指向的是字符型数据 是1个字节决定的。,第14讲:内存地址的妙用(2)指针作为函数参数,函数参数传递的2种方式。传值调用:实参形参的单向传递,可以理解为“传复印件”传址调用:实参的双向传递,可以理解为“传原件”。本质

19、上都是传递一个数值的复制件。只不过传值时的值是一个普通的变量值,而传址时传递的是地址。交换2个变量值的函数先不用函数实现用2种方法(复制值,复制地址的方法)交换2个变量的值注意事项,定义多个指针变量必须重复写*号。int*p1,*p1(正确)Int*p1,p2;(只有p1是指针,p2是int型变量)理解scanf()中的&的作用。,-指针作为函数参数,指向普通变量的指针作为函数参数指向一维数组的指针作为函数参数指向二维数组的指针作为函数参数二级指针,多级指针二维数组,多维数组指向函数的指针作为函数参数实例:图像的翻转,#include#includeint main()int a=10,b=2

20、0;int c,d,t;c=a;d=b;t=c;c=d;d=t;printf(a=%d,b=%dn,a,b);int*pa,*pb;pa=,第15讲:内存地址的妙用(3)指针变量在动态内存分配中的应用,数组:是内存中开辟的地址连续的存储空间,动态分配方式:举例特点:容量在运行时确定。分配和回收耗时,存储空间利用率高,能利用非连续小块空间。能在运行过程中动态地申请,动态地释放。数据保存在堆区(heap)生命期:申请成功后一直到释放前,在何处申请对生命期没有影响。必须由程序员负责释放,否则存在内存泄漏。,静态的分配方式:举例特点:容量预先设定,运行时不能修改。分配速度快,存储空间利用率低,不能利用

21、非连续的小块空间。全局数组:开辟在进程的数据区(data segment),可以较大。生命期:在主函数运行前分配,主函数返回后释放。局部数组:即任何函数内定义的静态数组,在栈区(stack)。生命期:函数运行时分配,函数返回后释放。,第16讲:动态内存分配的应用:二维数组的动态生成与销毁,1:蛟龙翻身2:二维数组的动态分配用一维数组模拟用指针数组和动态分配的一维数组模拟实例:图像的翻转和旋转,第17讲:软件构件化的基础之数据的结盟-结构体,1:结构体的概念和应用场合2:结构体的用法:(1)设计自定义数据类型:结构体,(2)使用结构体类型定义结构体变量(3)读写结构体变量:读写结构体变量的成员3

22、:应用举例:简单电话薄,第18讲环环相扣的结构体-链表初步,1:链表的概念和用途 2:链表的结点类型设计 3:链表的常用操作的实现 4:应用举例:谁是幸运者,第19讲 结构体的排序(基础),1:选择排序与冒泡排序 2:结构体上的选择排序与冒泡排序 3:举例,学生信息的排序 4:库函数qsort的用法。,第20讲 结构体的排序(进阶),1:选择排序 2:冒泡排序,第21讲:数据的持久化-文件(1),文件:计算机持久化存储数据的基本单位。文件类型千变万化 vs 文本文件与二进制文件常用的文件读写操作。打开(新建)文件,关闭文件。从文件读数据向文件写数据文件读/写指针的定位操作。文件的删除。举例:源代码文件添加行号,第22讲:数据的持久化-文件(2),文件:计算机持久化存储数据的基本单位。文件类型千变万化 vs 文本文件与二进制文件常用的文件读写操作。打开(新建)文件,关闭文件。从文件读数据向文件写数据文件读/写指针的定位操作。文件的删除。二进制文件读写举例:获取图片或mp3文件信息,第23讲:深入到bit的运算-位运算,位(bit):字节byte是计算机存储管理的基本单位。1 byte=8 bits位运算的特点:运算速度快:相比乘2除2运算。操作硬件的需要:设置或读取某些特殊的硬件端口数据或硬件标志位寄存器或缓冲区的数据。位运算包括:&,|,举例:循环移位,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号