1 / 434

C 语言程序设计 Copyer:Vigiking

C 语言程序设计 Copyer:Vigiking. 第一章 计算机语言与 C 语言概述. 1.1 计算机语言概念 ■ 计算机语言定义 计算机能够识别和接受的语言。 要使计算机按自己的意图工作,必须使用计算机所能接受、理解和执行的指令指挥计算机工作。. ■ 计算机语言的种类 机器语言 低级语言 汇编语言 ( 面向计算机 ) BASIC 入门语言 F77 科学计算 高级语言 Foxpro 数据库管理 ( 面向问题 ) C 多用途. 计算机语言. ……. ……. • 机器语言 最早问世,用二进制代码构成指令。

Download Presentation

C 语言程序设计 Copyer:Vigiking

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C语言程序设计 Copyer:Vigiking

  2. 第一章 计算机语言与C语言概述 1.1 计算机语言概念 ■计算机语言定义 计算机能够识别和接受的语言。 要使计算机按自己的意图工作,必须使用计算机所能接受、理解和执行的指令指挥计算机工作。

  3. ■计算机语言的种类 机器语言 低级语言汇编语言 (面向计算机) BASIC入门语言 F77科学计算 高级语言Foxpro数据库管理 (面向问题 )C多用途 计算机语言 …… ……

  4. •机器语言 最早问世,用二进制代码构成指令。 如: 100000 (+) 110000 (-) 用机器语言编程的缺点: ─繁琐、不直观、不易调试。 如计算y=2x2+3x-1需要七八条指令。 ─移植性差。 依赖于计算机。

  5. •汇编语言 用符号构成指令,如:MOV、ADD 用汇编语言编程: 相对直观,但仍繁琐,仍是面向计算机的语言。 汇编语言是计算机间接接受的语言

  6. •高级语言 与低级语言相比,有根本性的区别: 是面向问题的语言。 高级语言的一条指令(语句): y=2*x*x+3*x-1; 对应于:y=2x2+3x-1 y=sin(x); 对应于:y=sinx 用高级语言编程: 直观、易懂、移植性好(不依赖于具体计算机)

  7. 上机运行高级语言程序需经过编译: 编译执行 要上机完成一个计算问题,主要的任务就是用高级语言编写出相应的源程序。即至少要学会一种计算机语言。 高级语言源程序 机器指令 目的程序 结果 编译程序

  8. 1.2 C语言的特点 集高级语言和低级语言的优点于一身: ●能实现低级语言的大部分功能(如直接访问内存物理地址、进行位操作等)。 ●图形功能强。 ●运算符和数据结构丰富。 ●语法限制不太严格,程序设计自由度大。 ●生成目标代码质量高,程序执行效率高。

  9. 1.3 简单的C程序介绍 例1: main()主函数说明 { 程序框架 printf(“abcdef”);函数体 } 语句 程序的功能是输出字符串:abcdef

  10. 例2:求两数之和。 main() { int a,b,c;a a=100; b=50;b c=a+b;c printf(“\n c=%d”,c); } 程序运行结果:c=150

  11. 例3:求两数中的最大值。函数类型 函数名 形参 main()int max (int x,int y) {int a,b,c;{ int z; scanf(“%d,%d”,&a,&b); if(x>y) z=x; c=max(a,b); else z=y; printf(“\nmax is:%d”,c); return(z); } } ax by c z (两个函数组成) 3 3 5 5 5 5

  12. 总结上例可知: (1) C程序由函数构成。 (2) 函数由两部分组成: 函数说明部分:函数名、函数类型、形参名、形参类型。 函数体:实现函数的具体操作;由语句构成。 (3) 程序总是从main函数开始执行。 (4) 书写格式自由。 (5)语句必须有分号。 :

  13. 第二章 算法 2.1 算法的概念 要利用计算机处理问题,光学习语言的语法规则还不够,最重要的是要学会针对各类型的问题,拟定出有效的解题方法和步骤。解题方法和步骤就是算法。

  14. 算法: 为了解决一个问题而采取的有限步骤。 计算机算法: 如何使计算机一步一步地工作的具体过程。

  15. 利用计算机处理问题的步骤: 1)设计好算法——算法设计; 2)用计算机语言实现算法——程序设计。 算法必须是“有效”的。 算法设计还要充分考虑算法的好坏。 衡量算法好坏的主要标准: ① 程序简练。 ② 执行速度快。 ③ 占空间少。

  16. 10 s=∑i 1 例:考虑 的算法。 算法①:直接表达。 直接用语句 s=1+2+3+4+5+6+7+8+9+10 当项数较多时该算法不适用

  17. 算法②:迭代法(累加求和法) s=1+2+3+4+5+6+7+8+9+10 算法步骤: s i ① 使s=0 + ② 使i=1累加器 记数器 ③ s+i→s ④ i+1→i ⑤ 若i≤10转③,否则转⑥ ⑥ 输出s 0 1 3 6 10 1 2 3 4 5 该算法通用,是好算法

  18. 2.2 算法的表示 算法需要有统一的表示方法 常用的表示方法有: 自然语言 流程图 结构化流程图 N-S流程图.

  19. 1、自然语言 对于计算s=1+2+3+4+5+6+7+8+9+10 用自然语言表示为: ①使s=0(s为累加器) ②使i=1(i为计数器) ③s+i→s(累加求和公式) ④i+1→i(计数器加1) ⑤若i≤10转③,否则转⑥ ⑥输出s的值 特点:通俗易懂、文字冗长、含义不大严格。

  20. 2、流程图 用流程图符号表示算法。 常用的流程图符号 起止框输入输出框 处理框流程线 判断框

  21. 直观形象,易于理解,次序清楚 s+i → s 对于计算 s=1+2+3+4+5+6+7+8+9+10 用流程图表示为: i+1 → i 0 → s S+i → s S+i → s Y i≤10 1 → i N 输出s

  22. 3、结构化流程图 传统的流程图有一个弊端:对流程线没有严格的限制,对于较复杂的算法可能会变成乱麻一般(BS型算法)。 为克服这一弊端,提出了由三个基本结构组成算法流程图的思想: 结构化流程图

  23. 三个基本结构: ①顺序结构 按固定顺序(从上到下或从左到右)执行的结构。 a A B b

  24. a ②选择结构 根据条件P选择执行哪一个分支。 成立不成立 成立 p 不成立 A B b

  25. 例:计算 y= 1/x 当x≠0时 y= 10000 当x=0时 的算法流程图图: 选择结构 输入x Y X=0? N 10000→y 1/x→y 输出y

  26. ③循环结构 重复执行某些操作的结构。 分为两种: 当型循环和直到型循环。 当型循环直到型循环 a a A A P1 Y P2 N N Y b b

  27. 可以看出,每个基本结构都只有一个入口和一个出口,因此,用三个基本结构构成的流程图不会象乱麻一般,用三个基本结构构成的流程图就成为结构化流程图,用结构化流程图描述的算法称为结构化算法,相应的程序设计就称为结构化程序设计。可以看出,每个基本结构都只有一个入口和一个出口,因此,用三个基本结构构成的流程图不会象乱麻一般,用三个基本结构构成的流程图就成为结构化流程图,用结构化流程图描述的算法称为结构化算法,相应的程序设计就称为结构化程序设计。

  28. 观察前例: S+i → s 0 → s 顺序结构 循环结构 i+1 → i 1 → i y i≤10 n 输出s

  29. 4N-S流程图 N-S流程图的三个基本结构: 顺序结构 选择结构 P 成立 不成立 A B A B B 循环结构 当P1 A 直到P2

  30. 例:计算 y= 1/x 当x≠0时 y= 10000 当x=0时 的N-S流程图: 输入x X=0? 是 否 10000→y 1/x→y 输出y

  31. 例: 计算 s=1+2+3+4+5+6+7+8+9+10 的N-S流程图: i≤10 直到i>10 直到型当型 0 → s 0 → s 1 → i 1 → i s+i → s i+1 → i s+i → s i+1 → i 输出s 输出s

  32. 第三章 数据类型、运算符与 表达式3.1 C 的数据类型●基本类型 (整型、实型、字符型、枚举型)●构造类型 (略)●指针类型 (略)●空类型 各类型包含常量与变量

  33. 3.2 常量与变量 ■常量与符号常量 常量 在程序运行过程中其值保持不变的量。 符号常量 用来代表一个常量的标识符。 #define PI 3.1415926

  34. 例: #define PI 3.1415926 main() { float r=2,c; c=2*PI*r; printf(“%f”,c); }

  35. ■变量 其值可以改变的量。 变量的三要素: ①变量名 每个变量有一个名字,作为识别该变量的标识符。 ② 变量的值 每个变量有一个值,变量的值是随时可以改变的。

  36. ③变量的存储单元 每个变量占据一个内存单元,用于存放变量的值。 变量名 a 变量值 存储单元 3

  37. 变量的命名规则: 由字母、数字和下划线组成 以字母或下划线开头 a、x1、y_2、_b1、_1c 合法 1x、a+2、Ф、Ω 不合法 变量必须先定义后使用。 程序中何时使用常量?何时使用变量?

  38. 3.3 整型数据 ■整型常量 即整常数,c的整常数有三种形式: ①十进制整数 与数学中的整数一致,如:100,123,15等。 ②八进制整数 以0开头的整数,如:010,07,020等。 ③十六进制整数 以0x开头的整数,如:0x10,0xff,0x2a等。

  39. ■整型变量 用于存放整数的变量。 分4种类型: ①基本型:int a 16位,可表示的数值范围:-32768—32767 ②短整型:short int b 16位,可表示的数值范围:-32768—32767 ③长整型:long int c 32位,数值范围:-2147483648—2147483647

  40. ④无符号型:加上 unsigned 只存放正数。 如:unsigned int x 变量x为无符号整数,16位全表示数码, 数值范围:0—65535 在程序设计中,如果要使用整型变量,必须首先选择以上类型符来定义变量,然后才能使用;

  41. 例: main() 定义 { int a,b,c; a=100; b=50; 使用 c=a+b; printf(“%d”,c); } 一般根据什么原则选择变量的类型?

  42. 3.4 实型数据 ■实型常量 可使用两种形式表示: ①小数形式:如 1.23, 3.1415926 15.48 ②指数形式:如 1e-20 1.23e5

  43. ■实型变量 用于存放实数的变量 分单精度和双精度两种: float a,b 定义a和b为单精度型变量 32位,7位有效数字,10-38—1038 double x,y 定义x和y为双精度型变量 64位,15位有效数字,10-308—10308

  44. 例: main() { float r,c; double r,c; r=5; c=2*3.1415926*r; printf(“%f”,c); }

  45. 3.5 字符型数据 ■字符常量 用单引号括起来的一个字符。 ’a’,’x’,’*’,’1’等 除此外,以’\’开头的字符如’\n’,’\t’等 称为转义字符,祥见书表3.3

  46. ■字符型变量 用于存放字符的变量。 char c1,c2 定义c1和c2为字符型变量 c1=’a’; c2=’b’; 字符赋值 字符型变量存放一个字符,占据一个字节

  47. a 97 ■字符型数据的存储形式 存放ASCII码 不是 而是 如字符’a’在内存中存放97,’b’存放98。 与整数的存储形式一致,它们之间可以通用 一个字符数据既可以作字符用,也可以作整数用(取其ASCII代码)。 如:32+’a’相当于 32+97 若 int x; char c; 则 x=’a’; c=97; x=97; c=’a’; 都允许

  48. ■字符串常量 用双引号括起来的字符序列。 如:”abcde”,”china” ”a”也属字符串。 注意”a”与’a’的区别。 对于: char c; c=”a”;用法错误

  49. 字符串中每个字符各占一个字节,并且在字符串结尾加上一个结束标记’\0’字符串中每个字符各占一个字节,并且在字符串结尾加上一个结束标记’\0’ 如:”china”在内存中占6个字节。 c h i n a \0 C语言中专门的字符串变量,可用字符数组存放(以后介绍)。

  50. 3 3.6 变量赋初值 在定义变量的同时给相应的变量赋初值。 如: int a=3;a float b=5.2; char c=’a’; int x=y=z=6; 效果: 在给变量分配内存单元的同时在相应的单 元中存放初值。

More Related