《c语言入门教程(比较全)》由会员分享,可在线阅读,更多相关《c语言入门教程(比较全)(434页珍藏版)》请在金锄头文库上搜索。
1、C语言程序设计 Copyer:Vigiking,第一章 计算机语言与C语言概述,1.1 计算机语言概念 计算机语言定义 计算机能够识别和接受的语言。 要使计算机按自己的意图工作,必须使用计算机所能接受、理解和执行的指令指挥计算机工作。,计算机语言的种类 机器语言 低级语言 汇编语言 (面向计算机) BASIC 入门语言 F77 科学计算 高级语言 Foxpro 数据库管理 (面向问题 ) C 多用途,计算机语言,机器语言 最早问世,用二进制代码构成指令。 如: 100000 (+) 110000 (-) 用机器语言编程的缺点: 繁琐、不直观、不易调试。 如计算y=2x2+3x-1需要七八条指令
2、。 移植性差。 依赖于计算机。,汇编语言 用符号构成指令,如:MOV、ADD 用汇编语言编程: 相对直观,但仍繁琐,仍是面向计算机的语言。 汇编语言是计算机间接接受的语言,高级语言 与低级语言相比,有根本性的区别: 是面向问题的语言。 高级语言的一条指令(语句): y=2*x*x+3*x-1; 对应于:y=2x2+3x-1 y=sin(x); 对应于:y=sinx 用高级语言编程: 直观、易懂、移植性好(不依赖于具体计算机),上机运行高级语言程序需经过编译: 编译 执行 要上机完成一个计算问题,主要的任务就是用高级语言编写出相应的源程序。即至少要学会一种计算机语言。,高级语言源程序,机器指令
3、目的程序,结果,编译程序,1.2 C语言的特点 集高级语言和低级语言的优点于一身: 能实现低级语言的大部分功能(如直接访问内存物理地址、进行位操作等)。 图形功能强。 运算符和数据结构丰富。 语法限制不太严格,程序设计自由度大。 生成目标代码质量高,程序执行效率高。,1.3 简单的C程序介绍 例1: main() 主函数说明 程序框架 printf(“abcdef”); 函数体 语句 程序的功能是输出字符串:abcdef,例2:求两数之和。 main() int a,b,c; a a=100; b=50; b c=a+b; c printf(“n c=%d”,c); 程序运行结果:c=150,
4、例3:求两数中的最大值。 函数类型 函数名 形参 main() int max (int x,int y) int a,b,c; int z; scanf(“%d,%d”, a x b y c z (两个函数组成),3,5,3,5,5,5,总结上例可知: (1) C程序由函数构成。 (2) 函数由两部分组成: 函数说明部分:函数名、函数类型、形参名、形参类型。 函数体:实现函数的具体操作;由语句构成。 (3) 程序总是从main函数开始执行。 (4) 书写格式自由。 (5)语句必须有分号。 :,第二章 算法 2.1 算法的概念 要利用计算机处理问题,光学习语言的语法规则还不够,最重要的是要学会
5、针对各类型的问题,拟定出有效的解题方法和步骤。解题方法和步骤就是算法。,算法: 为了解决一个问题而采取的有限步骤。 计算机算法: 如何使计算机一步一步地工作的具体过程。,利用计算机处理问题的步骤: 1)设计好算法算法设计; 2)用计算机语言实现算法程序设计。 算法必须是“有效”的。 算法设计还要充分考虑算法的好坏。 衡量算法好坏的主要标准: 程序简练。 执行速度快。 占空间少。,例:考虑 的算法。 算法:直接表达。 直接用语句 s=1+2+3+4+5+6+7+8+9+10,当项数较多时该算法不适用,s=i,1,10,算法:迭代法(累加求和法) s=1+2+3+4+5+6+7+8+9+10 算法
6、步骤: s i 使s=0 + 使i=1 累加器 记数器 s+is i+1i 若i10转,否则转 输出s,0,1,1,2,3,3,6,4,10,5,该算法通用,是好算法,2.2 算法的表示 算法需要有统一的表示方法 常用的表示方法有: 自然语言 流程图 结构化流程图 N-S流程图.,1、自然语言 对于计算 s=1+2+3+4+5+6+7+8+9+10 用自然语言表示为: 使s=0 (s为累加器) 使i=1 (i为计数器) s+is (累加求和公式) i+1i (计数器加1) 若i10转,否则转 输出s的值 特点:通俗易懂、文字冗长、含义不大严格。,2、流程图 用流程图符号表示算法。 常用的流程图
7、符号 起止框 输入输出框 处理框 流程线 判断框,对于计算 s=1+2+3+4+5+6+7+8+9+10 用流程图表示为:,s+i s,i+1 i,S+i s,S+i s,i10,输出s,0 s,1 i,直观形象,易于理解,次序清楚,Y,N,3、结构化流程图 传统的流程图有一个弊端:对流程线没有严格的限制,对于较复杂的算法可能会变成乱麻一般(BS型算法)。 为克服这一弊端,提出了由三个基本结构组成算法流程图的思想: 结构化流程图,三个基本结构: 顺序结构 按固定顺序(从上到下或从左到右)执行的结构。,A,B,a,b, 选择结构 根据条件P选择执行哪一个分支。 成立 不成立,p,A,B,a,b,
8、成立,不成立,例:计算 y= 1/x 当x0时 y= 10000 当x=0时 的算法流程图图: 选择结构,输入x,X=0?,10000y,1/xy,输出y,Y,N, 循环结构 重复执行某些操作的结构。 分为两种: 当型循环和直到型循环。 当型循环 直到型循环,P1,A,A,P2,a,a,b,b,Y,Y,N,N,可以看出,每个基本结构都只有一个入口和一个出口,因此,用三个基本结构构成的流程图不会象乱麻一般,用三个基本结构构成的流程图就成为结构化流程图,用结构化流程图描述的算法称为结构化算法,相应的程序设计就称为结构化程序设计。,观察前例:,0 s,1 i,S+i s,i+1 i,i10,输出s,
9、顺序结构,循环结构,y,n,4 N-S流程图 N-S流程图的三个基本结构:,A,B,P,成立,不成立,A,B,A,B,当P1,直到P2,顺序结构,选择结构,循环结构,例:计算 y= 1/x 当x0时 y= 10000 当x=0时 的N-S流程图:,输入x,X=0?,是,否,10000y 1/xy,输出y,例: 计算 s=1+2+3+4+5+6+7+8+9+10 的N-S流程图: i10 直到i10 直到型 当型,0 s,1 i,输出s,1 i,0 s,s+i s,i+1 i,s+i s,i+1 i,输出s,第三章 数据类型、运算符 与 表达式 3.1 C 的数据类型 基本类型 (整型、实型、字
10、符型、枚举型) 构造类型 (略) 指针类型 (略) 空类型 各类型包含常量与变量,3.2 常量与变量 常量与符号常量 常量 在程序运行过程中其值保持不变的量。 符号常量 用来代表一个常量的标识符。 #define PI 3.1415926,例: #define PI 3.1415926 main() float r=2,c; c=2*PI*r; printf(“%f”,c); ,变量 其值可以改变的量。 变量的三要素: 变量名 每个变量有一个名字,作为识别该变量的标识符。 变量的值 每个变量有一个值,变量的值是随时可以改变的。,变量的存储单元 每个变量占据一个内存单元,用于存放变量的值。 变量
11、名 a 变量值 存储单元,3,变量的命名规则: 由字母、数字和下划线组成 以字母或下划线开头 a、x1、y_2、_b1、_1c 合法 1x、a+2、 不合法 变量必须先定义后使用。 程序中何时使用常量?何时使用变量?,3.3 整型数据 整型常量 即整常数,c的整常数有三种形式: 十进制整数 与数学中的整数一致,如:100,123,15等。 八进制整数 以0开头的整数,如:010,07,020等。 十六进制整数 以0x开头的整数,如:0x10,0xff,0x2a等。,整型变量 用于存放整数的变量。 分4种类型: 基本型:int a 16位,可表示的数值范围:-3276832767 短整型:sho
12、rt int b 16位,可表示的数值范围:-3276832767 长整型:long int c 32位,数值范围:-21474836482147483647,无符号型:加上 unsigned 只存放正数。 如:unsigned int x 变量x为无符号整数,16位全表示数码, 数值范围:065535 在程序设计中,如果要使用整型变量,必须首先选择以上类型符来定义变量,然后才能使用;,例: main() 定义 int a,b,c; a=100; b=50; 使用 c=a+b; printf(“%d”,c); 一般根据什么原则选择变量的类型?,3.4 实型数据 实型常量 可使用两种形式表示:
13、小数形式:如 1.23, 3.1415926 15.48 指数形式:如 1e-20 1.23e5,实型变量 用于存放实数的变量 分单精度和双精度两种: float a,b 定义a和b为单精度型变量 32位,7位有效数字,10-381038 double x,y 定义x和y为双精度型变量 64位,15位有效数字,10-30810308,例: main() float r,c; double r,c; r=5; c=2*3.1415926*r; printf(“%f”,c); ,3.5 字符型数据 字符常量 用单引号括起来的一个字符。 a,x,*,1等 除此外,以开头的字符如n,t等 称为转义字符
14、,祥见书表3.3,字符型变量 用于存放字符的变量。 char c1,c2 定义c1和c2为字符型变量 c1=a; c2=b; 字符赋值 字符型变量存放一个字符,占据一个字节,字符型数据的存储形式 存放ASCII码 不是 而是 如字符a在内存中存放97,b 存放98。 与整数的存储形式一致,它们之间可以通用 一个字符数据既可以作字符用,也可以作整数用(取其ASCII代码)。 如:32+a相当于 32+97 若 int x; char c; 则 x=a; c=97; x=97; c=a; 都允许,a,97,字符串常量 用双引号括起来的字符序列。 如:”abcde”,”china” ”a”也属字符串。 注意”a”与a的区别。 对于: char c; c=”a