C程序设计提纲式.ppt_第1页
C程序设计提纲式.ppt_第2页
C程序设计提纲式.ppt_第3页
C程序设计提纲式.ppt_第4页
C程序设计提纲式.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

C程序设计 主讲:贺细平 电话E-mail:390199309 办公室:六教207 课程地位与学习方法 v课程地位:在软件设计中具有基础性地位 培养计算思维-用计算机求解问题时特有的思维 方式。“C通百通”! v编程高手秘笈 上机思考上机思考 程序设计是“练”出来的! v考核办法: 平时上机实践(60%)+期终闭卷笔试(40%) 第1讲 我与程序设计有个美丽的约会 -初识C语言 v课程重要性学习方法 v编程入门知识 v赋值语句的用法 vif判断的用法 v实例:比大小 程序设计入门知识 v计算机程序的执行过程: v冯.诺依曼计算机模型 数据的二进制表示 存储程序、自动执行、顺序串行 v程序是怎样炼成的? 编写代码编译执行程序修改 程序是“改”出来的! v其他 应用程序与操作系统的关系 应用程序与内存、外存的关系 初识C语言 v赋值 赋值运算符“=” a=b+c; 先读取b和c的值并作加法运算,将结果写到变量a 中取。 计算机存取数据的特点: v无论多少次“读”操作不会改变被读数据 v写操作将使用新的值覆盖原来的值,原来的数据丢失。 v比较与判断 If语句的用法 常用的比较运算符:, = , b;如果a等于b,则输出a=b。 vSample Input 123456789012345678901234567890 23456789012345678901234567890 vSample Output ab 选钻石矿 Description 大家都知道钻石晶莹剔透、有棱有角、非常漂亮,代表着高贵、纯洁和永恒。可能你们知道吗 ?钻石并非天生就这么漂亮,这些钻石来自非常辛苦的大海捞针式的选矿工作和艰苦巨细 的打磨得来的。现在,我们就来试试选矿的工作,假设我们要从一堆包含很多大大小小钻 石块的矿中筛选出所有钻石。 用一个字符串表示一堆钻石矿。非数字的字符表示泥土、岩石等杂质,一串连续的数字表示一 小块钻石的价值(也可以看成是钻石的大小,因为钻石的大小与价值直接相关的)。将所 有的数字相加,即为本堆矿物所筛选的钻石总价值。 Input 在一行中输入一个字符串,行的末尾有一个回车。字符串的长度大于等于1,小于等于106; Output 输出钻石总价值。 Sample Input adsf32kg! 0012FF74 0012FF75 0012FF76 0012FF77 0012FF78 0012FF79 0012FF7A 0012FF7B 0012FF7C0A 0012FF7D00 0012FF7E00 0012FF7F00 0012FF80 0012FF81 0012FF82 0012FF83 a a 0012FF74 0012FF75 0012FF76 0012FF77 0012FF78CC 0012FF79CC 0012FF7ACC 0012FF7BCC 0012FF7C0A 0012FF7D00 0012FF7E00 0012FF7F00 0012FF80 0012FF81 0012FF82 0012FF83 int b=a*2; b 变量与指针变量 v普通变量三要素 变量名: v程序中通过名字引用它。 v程序中变量名与其值直接关联, 以直接寻址方式读/写变量。 变量类型: v表示数据的需要占用的字节数 v数据表示的范围 v数据所能进行哪些运算。 vint型,double型,char型 变量所占内存单元的起始地址 :简称为变量的地址。 v通过取地址运算符 a 0012FF74 0012FF75 0012FF76 0012FF77 0012FF7814 0012FF7900 0012FF7A00 0012FF7B00 0012FF7C0A 0012FF7D00 0012FF7E00 0012FF7F00 0012FF80 0012FF81 0012FF82 0012FF83 int b=a*2; pa 变量与指针变量 int a=10; int *pa; pa = a 0012FF74 0012FF75 0012FF76 0012FF77 0012FF787C 0012FF79FF 0012FF7A12 0012FF7B00 0012FF7C0A 0012FF7D00 0012FF7E00 0012FF7F00 0012FF80 0012FF81 0012FF82 0012FF83 v指针变量三要素 变量名: v程序中通过名字引用它。 v程序中指针变量名与其所指向的值间 接关联,以间接寻址方式读写所指向 的变量。 变量类型:表示它所指向的变量的数 据类型。 vint *型,double*型,char*型 变量所占的内存单元的起始编号: v即变量在内存中的起始地址。 v通过取地址运算符得到这个起始地址 。 2个值 v指针变量的值:即所指向变量的地址 v它所指向的变量的值。通过间接寻址 运算符获得。 pa 变量与指针变量 int a=10; int *pa; pa = *pa= *pa+10; 0012FF74 0012FF75 0012FF76 0012FF77 0012FF787C 0012FF79FF 0012FF7A12 0012FF7B00 0012FF7C14 0012FF7D00 0012FF7E00 0012FF7F00 0012FF80 0012FF81 0012FF82 0012FF83 v指针变量三要素 指针变量名: v程序中通过名字引用它。 v程序中指针变量名与其所指向的值间 接关联,以间接寻址方式读写所指向 的变量。 指针变量类型:表示它所指向的变量 的数据类型。 vint *型,double*型,char*型 指针变量所占的内存单元的起始编号 : v即变量在内存中的起始地址。 v通过取地址运算符得到这个起始地址 。 2个值 v指针变量的值:即所指向变量的地址 v它所指向的变量的值。通过间接寻址 运算符获得。 注意:在32位的操作系统中,任何 类型的指针变量占用4个字节的内存 空间。即机器的寻址空间。 a pa 变量与指针变量 int a=10; int *pa; pa = *pa= *pa+10; a 0012FF74 0012FF75 0012FF76 0012FF77 0012FF787C 0012FF79FF 0012FF7A12 0012FF7B00 0012FF7C0A 0012FF7D00 0012FF7E00 0012FF7F00 0012FF80 0012FF81 0012FF82 0012FF83 0012FF7C pa 0012FF7C 10 10 a pa a 20 a3 a0 a1 数组与指针变量 int a4; a0=1; a1=2; a2=3; a3=4; 0012FF7401 0012FF7500 0012FF7600 0012FF7700 0012FF7802 0012FF7900 0012FF7A00 0012FF7B00 0012FF7C03 0012FF7D00 0012FF7E00 0012FF7F00 0012FF8004 0012FF8100 0012FF8200 0012FF8300 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 重要概念: 数组名是指针常量,它表示数组的起始地址。 数组与指针变量 0012FF7401 0012FF7500 0012FF7600 0012FF7700 0012FF7802 0012FF7900 0012FF7A00 0012FF7B00 0012FF7C03 0012FF7D00 0012FF7E00 0012FF7F00 0012FF8004 0012FF8100 0012FF8200 0012FF8300 int a4; int *p; p=a; *p=1; p+; *p=2; p+; *p=3; p+; *p=4 p int a4; int *p; p=a; for(i=0;i v#include vint main() v vint a=10,b=20; vint c,d,t; vc=a;d=b; vt=c;c=d;d=t; vprintf(“a=%d,b=%dn“,a,b); vint *pa,*pb; vpa= vpb= vt=*pa; *pa=*pb; *pb=t; vprintf(“a=%d,b=%dn“,a,b); vreturn 0; v 第15讲:内存地址的妙用(3) 指针变量在动态内存分配中的应用 v数组:是内存中开辟的地址连续的存储空间 v动态分配方式:举例 特点:容量在运行时确定 。分配和回收耗时,存储 空间利用率高,能利用非 连续小块空间。 能在运行过程中动态地申 请,动态地释放。 数据保存在堆区(heap) 生命期:申请成功后一直 到释放前,在何处申请对 生命期没有影响。必须由 程序员负责释放,否则存 在内存泄漏。 v静态的分配方式:举例 特点:容量预先设定,运行时 不能修改。分配速度快,存储 空间利用率低,不能利用非连 续的小块空间。 全局数组: v开辟在进程的数据区(data segment),可以较大。 v生命期:在主函数运行前分 配,主函数返回后释放。 局部数组:即任何函数内定义 的静态数组,在栈区(stack) 。 v生命期:函数运行时分配, 函数返回后释放。 第16讲:动态内存分配的应用:二维 数组的动态生成与销毁 v1:蛟龙翻身 v2:二维数组的动态分配 用一维数组模拟 用指针数组和动态分配的一维数组模拟 v实例:图像的翻转和旋转 第17讲:软件构件化的基础之数据的 结盟-结构体 v1:结构体的概念和应用场合 v2:结构体的用法: v (1)设计自定义数据类型:结构体, v (2)使用结构体类型定义结构体变量 v (3)读写结构体变量:读写结构体变量的成员 v3:应用举例:简单电话薄 第18讲 环环相扣的结构体-链表初步 v 1:链表的概念和用途 v 2:链表的结点类型设计 v 3:链表的常用操作的实现 v 4:应用举例:谁是幸运者 第19讲 结构体的排序(基础) v 1:选择排序与冒泡排序 v 2:结构体上的选择排序与冒泡排序 v 3:举例,学生信息的排序 v 4: 库函数qsort的用法。 第20讲 结构体的排序(进阶) v 1:选择排序 v 2:冒泡排序 第21讲:数据的持久化 -文件(1) v文件:计算机持久化存储数据的基本单位。 v文件类型千变万化 vs 文本文件与二进制文件 v常用的文件读写操作。 打开(新建)文件,关闭文件。 从文件读数据 向文件写数据 文件读/写指针的定位操作。 文件的删除。 v举例:源代码文件添加行号 第22讲:数据的持久化 -文件(2) v文件:计算机持久化存储数据的基本单位。 v文件类型千变万化 vs 文本文件与二进

温馨提示

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

最新文档

评论

0/150

提交评论