1、 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)1 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)2第一章第一章C C程序入门程序入门 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)3本讲本讲主要内容主要内容程序的概念程序的概念简单简单C C程序程序程序操作的对象程序操作的对象数据数据变量和常量变量和常量数据类型数据类型 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)4程序程序程序就是做一件事情的程序就是做一件事情的先后步骤先后步骤 植树程序植树程序:挖坑挖坑 在坑中放入树苗在坑中放入树苗 添土到添土到坑中坑中 浇水浇水 操作对象:坑,树苗,土,
2、水(数据)操作对象:坑,树苗,土,水(数据)操作:挖,放,添,浇(运算符等)操作:挖,放,添,浇(运算符等)次序不能颠倒次序不能颠倒 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)5计算机程序计算机程序(1 1)计算机程序)计算机程序 计算机程序计算机程序 算法算法 数据结构数据结构计算机程序设计计算机程序设计 算法算法 数据结构数据结构 程序设计方法学程序设计方法学算法算法-就是解决问题的方法。就是解决问题的方法。(2 2)算法的特征)算法的特征p 有穷性有穷性如:如:Sin x=x/1-xSin x=x/1-x3 3/3!+x/3!+x5 5/5!-x/5!-x7 7/7!+/
3、7!+ 不是算法。不是算法。 N!=1N!=12 23 3N N 是算法。是算法。p 确定性确定性如:菜谱中说如:菜谱中说“加少许盐加少许盐”不严格,不是算法。不严格,不是算法。p 可执行性可执行性p 0 0个或多个输入个或多个输入p 1 1个或多个输出个或多个输出(3 3)算法描述工具:流程图、)算法描述工具:流程图、N NS S图、图、PDL PDL 语言语言 等等 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)6程序程序流程图表述流程图表述算法举例:输入两个数,输出其中的大者。算法举例:输入两个数,输出其中的大者。用计算机语言用计算机语言实现算法!实现算法!YNab?max=
4、amax=b开始开始结束结束输入两个整数到输入两个整数到a,b变量变量输入输入max判断框判断框处理框处理框起止框起止框流程线流程线输入输入/输出框输出框 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)7简单简单C C程序程序例例1_1 1_1 在显示器上输出:在显示器上输出:hello worldhello world首先要编辑该程序(可用任何编辑文本的软件):首先要编辑该程序(可用任何编辑文本的软件): #include “stdio.h#include “stdio.h” ” void main() / void main() /* *主函数主函数* */ / printf(
5、“hello printf(“hello world”);/ world”);/* *调用输出函数调用输出函数* */ / C C程序的基本形式为:程序的基本形式为:void main()void main() vC C程序都有且仅有一个主函数。程序都有且仅有一个主函数。v任何程序都从任何程序都从mainmain函数开始执行程序函数开始执行程序v语句用于描述对象以及作用在这些语句用于描述对象以及作用在这些对象上的操作,语句写在函数体中(对象上的操作,语句写在函数体中(函数名后的一对花括号中),语句以函数名后的一对花括号中),语句以分号结尾。分号结尾。v关键字及编译预处理命令用小写字母关键字及编
6、译预处理命令用小写字母书写,不能在变量名、函数名、关键书写,不能在变量名、函数名、关键字中插入空格和空行。字中插入空格和空行。v没有行的概念,可任意书写。没有行的概念,可任意书写。 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)8C C程序的实现程序的实现程序的实现要经过以下步骤:程序的实现要经过以下步骤: 编辑编辑:是将写在纸上的源程序:是将写在纸上的源程序( (.C.C) )输入计输入计算机中,并以文件的形式存放。算机中,并以文件的形式存放。 编译编译:经过:经过C C语言编译(编译程序)器将源语言编译(编译程序)器将源程序编译成目标程序程序编译成目标程序( (扩展名为扩展名为
7、.OBJ.OBJ) ),并,并改正编译中出现的语法错误。改正编译中出现的语法错误。 连接连接:对目标程序进行连接生成可执行文:对目标程序进行连接生成可执行文件件( (扩展名为扩展名为.EXE.EXE) )。 运行运行: :运行可执行文件得到运行结果。运行可执行文件得到运行结果。 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)9u C C程序的上机执行过程程序的上机执行过程执执行行编辑编译连连接接编辑编辑程序程序C源源程序程序. .C编译编译程序程序连接连接程序程序目标目标程序程序.obj.obj可执行可执行程序程序. .exe用用户户结结果果C编译编译系统系统其它目其它目标文件标文
8、件C语言语言函数库函数库 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)10C C程序格式及结构特点程序格式及结构特点 程序格式程序格式编写编写输出两个整数之和输出两个整数之和的的C C程序程序 必须有必须有#include stdio.h#include stdio.h void main() void main() / /* *求两数之和求两数之和* */ / int int a,b,sum; a,b,sum; a=123; a=123; b=456 b=456; sum=a+b;sum=a+b; printf(“a+b printf(“a+b=%dn,sum)=%dn,sum
9、);输出是:输出是:a+b=579a+b=579 定义三个整型变量定义三个整型变量给变量赋值给变量赋值计算处理计算处理输出结果输出结果 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)11C C程序格式及结构特点程序格式及结构特点 程序格式程序格式从键盘输入从键盘输入任意两个整数,求它们的积。任意两个整数,求它们的积。 #include “stdio.h#include “stdio.h”void main()void main() intint a,b,sum; a,b,sum;printfprintf(“(“请输入两个整数请输入两个整数:n”);:n”);scanf(“%d,%d
10、”,&a,&bscanf(“%d,%d”,&a,&b););sum=asum=a* *b;b;printf(“sumprintf(“sum =%dn”,sum); =%dn”,sum);等待用户从键盘输入两个整数等待用户从键盘输入两个整数程序运行结果:程序运行结果:请输入两个整数请输入两个整数:12,2:12,2sum =24sum =24 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)12程序操作的对象程序操作的对象数据数据 常量常量:如如34,3.5,a, “ok” 具有固定值具有固定值, ,其值不能改变。其值不能改变。 变量变量 : 其值可以改变,变量名字与其值可以改变,变量
11、名字与内存空间内存空间相联系。相联系。345sum变量值变量值变量名变量名变量的命名规则与标识符的命名规则:(详见课本)变量的命名规则与标识符的命名规则:(详见课本)标识符标识符是编程者在程序中给所使用的常量、变量、函是编程者在程序中给所使用的常量、变量、函数、语句标号、类型定义等所取的名字数、语句标号、类型定义等所取的名字。数据数据程序处理程序处理的对象的对象 数据在计算机内部的存储数据在计算机内部的存储形式(占用的形式(占用的内存单元数量内存单元数量、编码方式编码方式、取值范围取值范围等)等) 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)13“=”运算符改变变量的值运算符改变
12、变量的值: int a,b; a=8; b=9; /*a的值为的值为8,b的的值为值为9*/ a=b+1; /*a的值变为的值变为10*/ a=b; /*a的值变为的值变为9*/ a=a+1;8=a;5=8; a=a+1;8=a;5=8; ? 变量的动态特性变量的动态特性 存储器的存取特点是:取之不尽,一存就变。存储器的存取特点是:取之不尽,一存就变。因此因此,变量中的值可以反复读取,其值不会改变。而把一个,变量中的值可以反复读取,其值不会改变。而把一个新值赋给变量时,变量中原来的值就被新值所替代。新值赋给变量时,变量中原来的值就被新值所替代。 研究式学习研究式学习C程序设计(第一章)程序设计
13、(第一章)14常量与变量常量与变量#include “stdio.h”#define PRICE 30main() int num,total; float v ,r,h; num=10; total=num*PRICE; printf(total=%d,tatal); r=2.5; h=3.2; v=3.14159*r*r*h; printf(“v=%fn”,v);常量常量变量名变量名:以字母或下划线开头以字母或下划线开头,由数字、字母、下,由数字、字母、下划线构成。最多划线构成。最多3131个个字符,多余不识别,字符,多余不识别,一般小写。一般小写。变量变量变量先定变量先定义后使用义后使用
14、符号常量符号常量名字常用大写名字常用大写常量:常量:是指在程序执行中其值不会改变的量是指在程序执行中其值不会改变的量变量:变量:是指在程序执行中其值可改变的量是指在程序执行中其值可改变的量 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)15下列是合法的标识符:下列是合法的标识符: a str2 add100 student area a str2 add100 student area class_5 a_1class_5 a_1下列是非法的标识符下列是非法的标识符: 3th #xyz “m+n” person-name int3th #xyz “m+n” person-name
15、int 变量名区分大小写,变量名区分大小写,a和和A, p和和P是不同的变量是不同的变量 。不能使用系统保留字(关键字)作为标识符。不能使用系统保留字(关键字)作为标识符。 变量要先声明(定义),后使用,定义的任务包括:变量的类型变量要先声明(定义),后使用,定义的任务包括:变量的类型(int ,float),变量的名字以及初值。变量的名字以及初值。 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)16=关键字:关键字:是指在是指在C C语言中已预先定义具有特定含义的语言中已预先定义具有特定含义的标识符标识符, ,通常也称为保留字通常也称为保留字, ,编程者不得再重新命名另作编程者不
16、得再重新命名另作他用。他用。|标识类型的关键字标识类型的关键字(int char float double (int char float double long short unsigned struct union enum long short unsigned struct union enum auto extern static register typedefauto extern static register typedef void)void)|标识控制流的关键字标识控制流的关键字(goto(goto return break return break continue i
17、f else do while switch case continue if else do while switch case default)default)|标识预处理的关键字标识预处理的关键字(define include undef (define include undef ifdef ifndef endififdef ifndef endif) )|其他关键字其他关键字( (sizeof asm fortran ada pascalsizeof asm fortran ada pascal) ) 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)17数据类型数据类型数
18、据类型就像商店出售数据类型就像商店出售的衣服有不同的尺寸,的衣服有不同的尺寸,以供不同身材的人享用以供不同身材的人享用,C C系统也根据数据存系统也根据数据存在的不同形式,将其分在的不同形式,将其分为不同的类型,为不同的类型, 各种数据类型具有各种数据类型具有不同不同的存储长度的存储长度、取值范围、取值范围及允许的操作。及允许的操作。C C 数据数据类型如右图所示:类型如右图所示:数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型整型整型 int字符型字符型 char浮点型浮点型 float(实型实型) double数组数组结构体结构体共用体共用体枚举枚举指数据的内在表现形式指数
19、据的内在表现形式 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)18数据类型数据类型-整型常量整型常量有三种形式的整型常量:有三种形式的整型常量:(1) (1) 与习惯相同的十进制整数。如:与习惯相同的十进制整数。如:46, -23, 046, -23, 0。(2) (2) 以数字以数字0 0开头的八进制整数。如:开头的八进制整数。如:04560456表示八进制表示八进制数数456,456,即即(456)(456)8 8=4=4* *8 82 2+5+5* *8 81 1+6+6* *8 80 0, ,等于十进制的等于十进制的302302。(3)(3)以数字以数字0 0和和x x开
20、头的十六进制整数。如:开头的十六进制整数。如:0 x4560 x456表示表示十六进制整数十六进制整数456456,即,即(456)(456)1616=4=4* *16162 2+5+5* *16161 1+6+6* *16160 0, , 等等于十进制的于十进制的11101110整型变量的定义整型变量的定义 :用:用说明符说明符int 及及不同大小的整型变量)不同大小的整型变量) 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)19 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)20数据类型数据类型-整型数据的定义及取值范围整型数据的定义及取值范围 short shor
21、t intint intint short short signed signed intint short short intint short short 类型类型 占用内存单元占用内存单元 取值范围取值范围 unsigned unsigned intint 2 2字节字节 0 0 6553565535long long intint 4 4字节字节 -2147483648 -2147483648 21474836472147483647unsigned long 4unsigned long 4字节字节 0 0 42949672954294967295-2-231312 23131-1-
22、12 21616-1-12 23232-1-1 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)21数据的存储形式数据的存储形式* 有符号整数有符号整数1212与与-12-12和存储形式和存储形式( (补码形式补码形式):):0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 012:1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0-12:#include “stdio.h”void main()int x=-1;printf(“x=%d”,x);printf(“x=%u”,x);运行结果:运行结果:x=-1x=65535 研究式学习研究式学习C程序设计(第一章
23、)程序设计(第一章)22数据类型数据类型-十进制,但有十进制,但有2 2种形式:种形式:定点:定点:、 注意注意e(E)e(E)前必须有数,前必须有数,e(Ee(E) )后的指数必须为整数,如:后的指数必须为整数,如: e2e2、 2.1e3.5 2.1e3.5 、.e3 .e3 、e e等都是非法的实数等都是非法的实数 。实型变量的定义:实型变量的定义:float f,r;doublefloat f,r;double area; area;float 4float 4字节字节double 8double 8字节字节 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)23charcha
24、rintintfloatfloatdoubledouble类型说明符类型说明符shortshortlonglongsignedsignedunsignedunsigned类型修饰符类型修饰符注意:注意:类型修饰符类型修饰符不能不能单独使用,必须与单独使用,必须与类型类型说明符说明符配合在一起使用配合在一起使用(int型可缺省)型可缺省)C语言采用语言采用类型类型说明符说明符说明不同说明不同的数据类型的数据类型 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)24数据类型数据类型-字符型数据字符型数据( (一一) )* 字符常量字符常量: :一对一对单引号单引号括起来的括起来的一个字符
25、一个字符( (大小写大小写有区别有区别) ),如:,如:a, D, ?, $, a, D, ?, $, 。以以”开头的特殊字符开头的特殊字符( (转义字符转义字符) ),如:,如:n,343, n,343, x41x41见见p8p8表表1-31-3 * 字符变量字符变量: :用来存放字符常量用来存放字符常量例:例:char c1,c2; c1=a; c2=A;* 字符数据在内存中的存储形式字符数据在内存中的存储形式以以ASCIIASCII码存储,占码存储,占1 1字节,用字节,用7 7个二进制位个二进制位9765 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)25 研究式学习研究式
26、学习C程序设计(第一章)程序设计(第一章)26*字符数据的使用方法字符数据的使用方法G 字符数据和整型数据之间可以通用,可以按字符数据和整型数据之间可以通用,可以按字符形式输出,也可以按整型输出。字符形式输出,也可以按整型输出。G 字符数据与整型数据可以互相赋值。字符数据与整型数据可以互相赋值。数据类型数据类型-字符型数据字符型数据( (二二) )*字符串常量字符串常量G用一对用一对双引号双引号括起来的括起来的一串一串字符(字母大小写字符(字母大小写的的ASCIIASCII值不同),如:值不同),如:“C Program”C Program”,”a”,“3304035”a”,“3304035”
27、,“ ”“ ”,“YES & NO”YES & NO”。 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)27字符串常量:用字符串常量:用双引号双引号括起来的字符括起来的字符序列序列 实例:实例:”This is C string.This is C string.” ”a a” ” ” (1 1个个空格)空格) ” (不含空格)不含空格) 串定界符:串定界符:双引号双引号 ”字符串长度字符串长度:字符串中包含的:字符串中包含的字符数量字符数量。tNameAddressntNameAddressn C is very easy.C is very easy. a a 与与 字符字符a
28、 a 的区别的区别 He saidok.nHe saidok.n 研究式学习研究式学习C程序设计(第一章)程序设计(第一章)28字符数据的存储形式字符数据的存储形式 67 72 73 78 65 0 67 72 73 78 65 0 例例:CHINA:CHINA a a a a 97 97所以所以:char c;char c; c=a; c=a;字符串后有字符串后有“串结束标志串结束标志”,字符后没有。,字符后没有。C H I N A 0 a 0a是是ASCII值为值为0的字符、的字符、是空操作符是空操作符、是非显示字符是非显示字符数据类型数据类型-字符型数据字符型数据( (三三) ) 研究式
29、学习研究式学习C程序设计(第一章)程序设计(第一章)29 变量必须先定义后使用变量必须先定义后使用, ,定义定义格式:格式: 类型修饰符类型修饰符 类型说明符类型说明符 变量列表变量列表;C C语言允许在定义变量时对变量进行语言允许在定义变量时对变量进行初始化初始化,即,即对变量赋初值。对变量赋初值。例:例: intint a a=3;=3; float f=3.56 float f=3.56,x=1.0;x=1.0; char c=a; char c=a; int int b,c,d=5, b,c,d=5,a a; ; intint x=y=0; x=y=0; b=c=8; b=c=8; 不能重复定义不能重复定义定义并初始化不能连写不能连写数据类型数据类型-变量赋初值变量赋初值 赋值时可以连写连写l定义(声明)变量后:确定了该变量定义(声明)变量后:确定了该变量占用占用内内存存单元的数量,数据在内存的单元的数量,数据在内存的表示方式表示方式,数据,数据的的取值范围取值范围。