《第一章 C程序基础.pdf》由会员分享,可在线阅读,更多相关《第一章 C程序基础.pdf(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计 绪论 教学要求 掌握程序设计语言的基本知识 常用算法 会读、会编、会调C程序,具有初步程序设计能力 学习方法 多看书,自主学习 多上机实践(*)第一章 C程序基础 1.1 C语言程序的基本结构 1.2 C程序运行过程 1.3 编写简单的C语言程序 1.4 C语言基本语法成分 1.5 C语言数据类型 1.6 数据的输入与输出 1.7 算法 1.8 C语言的产生、发展及特点 回忆 计算机系统组成计算机系统组成 运算器运算器 硬件系统硬件系统 控制器控制器 软件系统软件系统 存储器存储器 输入设备输入设备 输出设备输出设备 系统软件系统软件 应用软件应用软件 用户为解决具体问题而开发
2、的软件用户为解决具体问题而开发的软件 操作系统操作系统 语言及其处理程序语言及其处理程序 数据库管理系统数据库管理系统 系统支撑软件系统支撑软件 面向过程:面向过程:C语言语言等等 机器语言机器语言、汇编语言汇编语言 面向对象:面向对象:C等等 1.1 C语言程序的基本结构 1.1.1 认识C语言程序 例1、一个最简单的C程序 void main()每个每个C程序必须有主函数程序必须有主函数main。main是函数是函数名,名,main后的后的圆括号圆括号不能省略,不能省略,void是一种是一种数据类型,说明该函数没有返回值。数据类型,说明该函数没有返回值。例2、在屏幕上显示 This is
3、my first C program!#include void main()printf(“This is my first C program!”);主函数主函数 输出函数输出函数 语句结束语句结束 预处理命令预处理命令 例、在屏幕上显示 This is my first C program!And I am very happy!#include void main()printf(“This is my first C program!n”);printf(“And I am very happy!”);例、计算两个数的和并显示结果#include void main()int val
4、ue1,value2,sum;value1=3;value2=5;sum=value1+value2;printf(“The sum is:%dn”,sum);变量定义变量定义 变量使用变量使用 输出结果输出结果 如果想显示为如果想显示为 应该怎么写?应该怎么写?和上例有什么区别?Sum的值是多少?例、想计算任意两个数的和!#include void main()/*求两数之和求两数之和*/int value1,value2,sum;scanf(“%d%d”,&value1,&value2);sum=value1+value2;printf(“%d+%d=%dn”,value1,value2,
5、sum);输入输入2个数个数 程序运行起来是程序运行起来是黑屏,不好理解,黑屏,不好理解,怎么做更好一些?怎么做更好一些?printf(“Input two numbers:n”);注注释释 例6、输入两个数,求两数中较大的数并输出#include void main()int a,b,c;scanf(%d%d,&a,&b);c=max(a,b);/*调用调用max函数计算较大的值函数计算较大的值*/printf(max=%dn,c);/*main函数结束函数结束*/int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);Max(a,b)如
6、如何实现的?何实现的?通过以上例子可以看出:通过以上例子可以看出:1.C程序是由函数构成的程序是由函数构成的。每个。每个程序由一个或多个函数组成,程序由一个或多个函数组成,其中必须其中必须有且仅有一个有且仅有一个主函主函数数main()。函数容易实现。函数容易实现程序的模块化。程序的模块化。预处理命令 主函数 main()声明部分 执行部分 其他函数 声明部分 执行部分 函数首部函数首部 函数体函数体 1.1.2 C语言程序的基本结构语言程序的基本结构 函数类型函数类型 函数名函数名 函数参数类型函数参数类型 函数参数名函数参数名 函数参数类型函数参数类型 函数参数名函数参数名 2.函数由两部
7、分组成:函数的首部和函数体函数由两部分组成:函数的首部和函数体。i.函数的首部包括函数名、函数类型、函数参数名、函数的首部包括函数名、函数类型、函数参数名、参数类型。参数类型。如例如例1.3中中max函数的首部为:函数的首部为:int max (int x,int y)ii.函数体为函数首部下面的大括弧函数体为函数首部下面的大括弧内的部分。内的部分。3.主函数主函数main:一个可执行的一个可执行的C语言程序总是从语言程序总是从main函函数开始执行,而不论其在整个程序中的位置如何。数开始执行,而不论其在整个程序中的位置如何。4.C语言书写风格:语言书写风格:(1)每条语句和数据定义的最后必须
8、有一个分号;。每条语句和数据定义的最后必须有一个分号;。说明说明:在以下三种情况下不允许有分号:在以下三种情况下不允许有分号:a.所所 a.函数函数名称后面不使用分号;名称后面不使用分号;b.在右花括号“在右花括号“”后面不使用分号;后面不使用分号;c.预处理语句后面不使用分号。预处理语句后面不使用分号。while(total=2000)limit+;total=total+limit;;sum();#include“stdio.h”;(2)C程序书写格式自由,一行内可以写几个语句,一个程序书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上。语句也可以分写在多行上。(3)在在C语言
9、中,语言中,大小写字母是有区别的大小写字母是有区别的。(。(C语言习惯语言习惯用小写字母)。用小写字母)。5.输入输出:输入输出:C语言本身语言本身没有输入输出语句没有输入输出语句,它对输入输,它对输入输出实行函数化。出实行函数化。6.注释:注释:可用可用/*/对对C程序中的任何部分作注释,注释程序中的任何部分作注释,注释可以写在程序的任何位置上,“可以写在程序的任何位置上,“/*”与“与“*/”也可不在同一也可不在同一行上。行上。7.预处理命令:预处理命令:预处理命令能够改进程序设计环境,提高预处理命令能够改进程序设计环境,提高编程效率。(宏定义编程效率。(宏定义#define、文件包含、文
10、件包含#include、条件、条件编译编译#ifdef#else#endif。)8.建议:建议:书写程序时,最好使用缩进格式的形式。书写程序时,最好使用缩进格式的形式。float Max=0,Min=100;float average(int n)int i;float s,aver1,sum=0;for(i=1;iMax)Max=s;else if(sMin)Min=s;sum+=s;return(sum/n);main()int n;float aver2;scanf(“%d”,&n);/*输入班级人数输入班级人数*/aver2=average(n);printf(“Max=%6.2fnM
11、in=%6.2fn average=%6.2fn,Max,Min,aver2);1.1.3 语言的表达式和语句 表达式语句的一般形式:表达式;常见的表达式语句有:1、赋值语句:由赋值表达式加上一个分号构成,是程序中使用最多的语句之一。其一般形式为:变量=表达式;=是赋值运算符,功能是将=右边表达式的值赋给左边的一个变量,不是算术中的相等(=)例:x=9;y=a;i=i+1;赋值运算符具有右结合性。例:a=b=3+8;先做3+8,然后将11赋给b,再将b的值11赋给a。变量赋值的特点:变量必须先定义,后使用 例:int x,y;x=6;y=23;z=y-x;变量被赋值前,值是不确定的。例:int
12、 i;if(icompile编译源文件,产编译源文件,产生生.obj文件文件(ctrl+F7或者或者 ););4、连接:、连接:菜单菜单build-build产生产生exe文件文件(F7 或或者者 ););5、运行:、运行:菜单菜单build-execute(ctrl+F5或者或者 )。)。演示:例演示:例1.11.4 工作区窗口工作区窗口 编辑窗口编辑窗口 调试信息调试信息 vc+6.0的开发环境窗口的开发环境窗口 编辑编辑.c程序程序 方法一:方法一:在记事本中编辑在记事本中编辑c源程序,保存时扩展名为源程序,保存时扩展名为.c,启动启动vc+6.0,菜菜单单File-open。方法二:方
13、法二:1)启动)启动vc+6.0后,菜单后,菜单File-New,弹出对话框,选,弹出对话框,选project标标签,左边选签,左边选win32 console application,右边,右边project name给给project起个名字,起个名字,location是存储目录,然后点击是存储目录,然后点击ok;2)然后)然后file-new,选,选files标签,左边标签,左边C/C+source file新建源新建源文件,右边文件,右边file name给文件起名,给文件起名,location是文件存放位置,单是文件存放位置,单击击ok建立新文件;建立新文件;注意注意:源文件名后缀写
14、源文件名后缀写.c的是的是C语言源文件,写语言源文件,写.cpp或者或者 什么都不写的是什么都不写的是C+源文件,不能混淆源文件,不能混淆 1.2.2 源程序、目标程序和可执行程序 1、程序:一组计算机可以识别和执行的指令,每一条指令使 计算机执行特定的操作。2、源程序:用高级语言或汇编语言编写的程序为源程序。扩展名为.C 3、目标程序:源程序经过编译程序翻译所得到二进制代码,扩展名为.OBJ。4、可执行程序:可在操作系统中独立执行的程序为可执行程 序。扩展名为.EXE 1.2 C程序运行过程 编辑源程序编辑源程序 编译编译 连接连接 test.c test.obj test.exe 结果结果
15、 运行运行 上节内容回顾:上节内容回顾:1、计算机语言计算机语言 程序程序 算法算法 2、根据例根据例1.11.4思考下列问题思考下列问题(1)一个)一个C语言程序由且只有一个的函数是什么?语言程序由且只有一个的函数是什么?(2)一条)一条C语言语句怎样表示结束?语言语句怎样表示结束?(3)C语言的书写风格自由吗?为什么?语言的书写风格自由吗?为什么?(4)一个)一个C语言函数的整体怎么表示开始和结束?语言函数的整体怎么表示开始和结束?(5)C语言中的注释怎么表示?语言中的注释怎么表示?(6)C语言有专门的输入输出语句吗?语言有专门的输入输出语句吗?3、上机注意问题:工程、上机注意问题:工程、
16、.c扩展名扩展名 1.2 C程序运行过程 1.2.2 C语言程序上机步骤 1、编辑:将源程序输入到计算机中并保存为磁盘文件 1.2 C程序运行过程 1.2.2 C语言程序上机步骤 2、编译(CompileCompile to OBJ):分为两个步骤:执行预处理命令 执行编译:将源程序翻译成二进制代码的形式,如编译时有错,则修改后重新进行编译 编译时按模块进行的,必须把各模块连接起来才能执行 1.2 C程序运行过程 1.2.2 C语言程序上机步骤 3、连接(CompileLink EXE file):将各模块的二进制代码与系统标准模块连接在一起,生成.EXE的可执行文件。1.2 C程序运行过程
17、1.2.2 C语言程序上机步骤 4、执行(RunRun):执行生成的.EXE文件,查看结果,如有错误,则修改后重新进行编译、连接和运行。1.2 C程序运行过程 1.2.2 C语言程序上机步骤 5、查看运行结果(RunUser screen):1.2 C程序运行过程 1.2.2 C语言程序上机步骤 6、查看运行结果(RunUser screen):1.3 编写简单的语言程序 三种不同的程序设计结构 顺序结构 选择结构(分支结构)循环结构 其中,顺序结构是最基本、最简单的程序结构。在顺序结构程序中,各语句是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。例1.4、已知a=5,b=10,试交
18、换a、b的值。分析:交换两个变量的值,就像一个瓶装酱油,一个瓶 装醋,要交换内容需要借助第三个空瓶一样。交 换两个数也需要借助第三个变量。#include void main()int a=5,b=10,temp;temp=a;a=b;b=temp;printf(a=%d,b=%d n,a,b);5 10 a b temp 例1.4、已知a=5,b=10,试交换a、b的值。分析:交换两个变量的值,就像一个瓶装酱油,一个瓶 装醋,要交换内容需要借助第三个空瓶一样。交 换两个数也需要借助第三个变量。#include void main()int a=5,b=10,temp;temp=a;a=b;b
19、=temp;printf(a=%d,b=%d n,a,b);10 5 a b temp 例1.4、已知a=5,b=10,试交换a、b的值。分析:交换两个变量的值,就像一个瓶装酱油,一个瓶 装醋,要交换内容需要借助第三个空瓶一样。交 换两个数也需要借助第三个变量。#include void main()int a=5,b=10,temp;temp=a;a=b;b=temp;printf(a=%d,b=%d n,a,b);10 5 a b temp 例1.4、已知a=5,b=10,试交换a、b的值。分析:交换两个变量的值,就像一个瓶装酱油,一个瓶 装醋,要交换内容需要借助第三个空瓶一样。交 换两个
20、数也需要借助第三个变量。#include void main()int a=5,b=10,temp;temp=a;a=b;b=temp;printf(a=%d,b=%d n,a,b);10 5 a b temp 例1.5、编写一个显示基本算术运算功能的程序。#include void main()printf(“n30%7 is%d”,30%7);printf(“n30%7 is%d”,30%7);printf(“n2.0/-3+1.8 is%f”,2.0/-3.0+1.8);printf(“n2/3*10000%d”,2/3*10000);printf(“n2/3*10000 is%f”,2
21、/3*10000);printf(“n2.0/3*10000 is%f”,2.0/3*10000);printf(“n2.0/3*10000 is%d”,2.0/3*10000);printf(“n2.0/3*10000 is%e”,2.0/3*10000);运行结果为:307 is%d 30%7 is 2 2.0/-3+1.8 is 1.133333 2/3*10000 is 0 2/3*10000 is 0.000000 2.0/3*10000 is 6666.666667 2.0/3*10000 is-21845 2.0/3*10000 is 6.666667e+03 结果分析:1、为求
22、余运算,但在printf中,是格式符,要输出,需要用表示。(使用错误使得后面的格式字符都失效了)。2、C语言的算术运算符中,单目运算符的优先级高于双目 运算符双目运算符的优先级和数学中一致,单目运算符 自右向左结合。3、2/3*10000的值为0。因为整数相除的结果为整数。将参加运算的变量定义为实数;令表达式的某项乘以1.0,如f=1.0*a/b 进行强制类型转换:f=(float)a/b 例1.6、计算圆柱体的表面积#include#define PI 3.1415926 void main()float r,h,s;printf(“Input r,h:n”);scanf(%f%f,&r,&
23、h);s=2*PI*r*h+2*PI*r*r;printf(“total area is%.2fn,s);说明:#define PI 3.1415926是宏定 义,PI称为符号常量,即用一 个标识符代表一个常量。Float表示实型,在输入输出时 用%f表示。1.4 C语言基本语法成分 语言字符集 字符是C语言最基本的元素,C语言字符集由字母、数字、空白符、标点符号和特殊字符组成 在C程序是用下列字符所组成的字符集写成的:字母:A-Z,a-z 数字:0-9 标点符号、特殊字符(28个):!#%&+-*/=|.,;:?“()空白符:空格,制表符(Tab跳格健),换行符的总称。空白符除了在字符、字符
24、串中有意义外,在程序中只起间隔作用,编译系统会忽略其它位置的空白符。标识符 标识符是给程序中的实体所起的名字 这些实体指:变量,常量,函数,数组,类型 标识符的命名规则 由字母,数字和下划线组成,必须以字母或下划线开头 标识符不能与C语言的关键字重名 建议用户定义标识符时尽量不用下划线开头 注意标识符的有效长度,不同的编译系统有不同的限制,一般不超过32个字符 标识符中区分大小写字母(如:sum 和 SUM 是不同的标识符)定义标识符应遵循的原则 尽量做到见名知义 一般习惯上变量名、函数名用小写,而符号常量用大写 应尽量避免使用容易认错的字符 如:数字1和小写字母l 下面哪些标识符合法?下面哪
25、些标识符合法?a str20 area student Line TABLE go2map _good hello_world god_ 3th =xy“m+n”hello world int 关键字 关键字是C语言预先定义的、具有特定意义的标识符,也称为保留字。C语言包括32个关键字:注意:C语言的关键字都是小写,不能重新定义关键字 auto break case char const continue default do double else enum extern float for goto if int long register return short signed size
26、of static struct switch typedef union unsigned void volatile while 运算符 运算符是用于描述某种运算功能的符号,如+-*/等 运算符可以由一个或多个字符组成 根据参与运算的操作数个数,可分为:单目运算符、双目运算符和三目运算符 C语言运算符分为以下几类:语言运算符分为以下几类:算术运算符:算术运算符:+、-、*、/、%关系运算符:关系运算符:、=、=、!=逻辑运算符:逻辑运算符:!、&、|位运算符:位运算符:、|、&赋值运算符:赋值运算符:=及扩展赋值运算符及扩展赋值运算符 条件运算符:条件运算符:?:逗号运算符:逗号运算符:,
27、指针和地址运算符:指针和地址运算符:*、&求字节运算符:求字节运算符:sizeof 分量运算符:分量运算符:.、-下标运算符:下标运算符:强制类型转换运算符:强制类型转换运算符:(类型类型)其他:如函数调用运算符其他:如函数调用运算符()分隔符 在c语言程序中,空格、逗号、回车/换行等,在不同 的应用场合起着分隔符的作用。例如:int x,y;中的空格和逗号都起着分隔符的作用,如果int和x之间没有空格,程序就会出错;而在x和y之间少了逗号,xy就会被认为是一个变量。其他符号 花括号 通常用于标识函数体或一个复合语句/*/构成一组注释符,编译时系统将忽略注释 注释在程序中起提示、解释作用。在程
28、序调试过程中使用注释可以暂时屏蔽一些语句。1.5 C语言数据类型 用程序设计语言处理问题最终是对数据的处理,而数据有不同类型的区分,这涉及到数据类型的概念。数据类型 C 数数据据类类型型 基本类型基本类型 构造类型构造类型 指针类型指针类型 空类型空类型(void)整型整型 实型实型(浮点型浮点型)字符型字符型(char)长整型长整型(long int)整型整型(int)短整型短整型(short int)双精度双精度(double)单精度型单精度型(float)枚举类型枚举类型(enum)数组类型数组类型 结构体类型结构体类型(struct)公用体类型公用体类型(union)文件类型文件类型(
29、FILE)语言中的数据又分常量和变量,现介绍基本数据类型中的常量和变量。常量 在程序执行期间其值不发生变化的量。又可分为直接常量和符号常量 直接常量 例:8(整型)(整型),2.6(实型)(实型),b(字符型)(字符型),“student”(字符串)(字符串)符号常量 在程序中用标识符代表的常数 定义符号常量的格式:#define 标识符标识符 常量常量 例10、计算圆的周长和面积。#include#define PI 3.14 void main()int r;float c,s,v;r=3;c=2*PI*r;s=PI*r*r;printf(%f,%f,c,s);使用符号常量的优点:使用符号
30、常量的优点:(1)(1)含义清楚含义清楚 (2)(2)修改方便修改方便 特点:标识符名一般大写特点:标识符名一般大写 变量 在程序执行期间值可以变化的量 变量声明的格式:数据类型 变量名列表;例:int x;int a,b,c;x=3;说明:进行变量声明后,计算机系统会为声明的变量分配存储空间,用以存放数据。变量的存储空间可能由一个或多个字节组成,内存中的每个字节都有自己的地址,变量名实际上是一个符号地址。在程序中对变量的赋值和取值操作实际上是通过变量名找到相应的内存地址,然后从对应的存储空间中读取数据。变量的初始化:在声明变量的同时对变量赋初值 例:int x=3;int x=3,y=5;i
31、nt x,y=3,z;3 3 x x 变量名变量名 变量值变量值 存储空间存储空间 1.5.1 整型数据 整型常量 十进制整型:23,-32,0 八进制整型:以0开头 017,023 十六进制整型:以0 x(或0X)开头 0 x17,0X2e 整型变量 分三种类型:short int、int、long int;每种类型又分signed和unsigned,缺省为signed。有符号基本整型 signed int (16位)无符号基本整型 unsigned int (16位)有符号短整型 signed short int (16位)无符号短整型 unsigned short int (16位)有符
32、号长整型 signed long int (32位)无符号长整型 unsigned long int (32位)说明:括起来的为可选项,说明变量时可以省略不写 如何定义整型变量呢?如何定义整型变量呢?例例:int a;int x,y;short a,b;unsigned long m;如果在如果在整常数整常数后面加字母后面加字母U或或u,表示,表示unsigned int型型常量;加字母常量;加字母L或或l表示表示long int型常量型常量。例:例:12U,432L12U,432L 1.5.2 实型数据 实型常量 十进制形式:由数字和小数点组成(必有小数)例:2.8,-3.6,3.,.75(
33、0可省)指数形式:1.289e3,31.4E 1 实型变量 分三类:单精度型 float (占32位,有效数字67)双精度型 double (占64位,有效数字1516)长双精度型 long double(占128位,有效数字1819)一个实型常数默认为double型。要表示float型数,则必须在实数后加上字母f或F 1.5.3 字符型数据 字符常量 用一对单引号括起来的单个字符 例:a,8,A,*转义字符:以“”开头,后跟一些指定字符,以表示特定的、具有控制功能的字符 例:n,”,t,ddd,xhh 字符变量 分二类:有符号:signed char(占8位)无符号:unsigned cha
34、r(占8位)定义形式:char 变量列表;例:char ch1,ch2;ch1=a;ch2=$;字符串常量 由一对双引号(“”)括起来的字符序列。例:Hello、I love China!、How do you do?“为了判断字符串结束,C编译器会自动在字符串的末尾加一个转义字符0,作为字符串常量的结束标志。0的ASCII值为0,是不可显字符,也不作任何操作,即“空操作字符”。因此字符串的实际长度为字符个数加1。注意:a与a是不同的 a是字符常量,在内存中占1个字节 a是字符串常量,在内存中占2个字节 a a a a 0 字符型数据与整型数据的相互运算 字符数据在内存中以相应的ASCII码存
35、放,实质上是二进制形式,而整型数据也以二进制形式存放,所以它们之间在一定范围内互相通用#include void main()char ch;ch=a;printf(%cn,ch);printf(%dn,ch);运行结果:a 97#include void main()char ch;int x;ch=A;x=ch+32;printf(%c,%dn,ch,ch);printf(%c,%dn,x,x);运行结果:A,65 a,97 1.6 数据的输入与输出 C语言的输入/输出均由函数来实现,在使用输入输出函数时,应在程序开头写预编译命令:#include 本节介绍最常用的输入输出函数 格式输入输
36、出函数:printf和 scanf 字符输入输出函数:putchar和getchar 1.6.1 printf()函数 一般形式:printf(“格式控制”格式控制”,输出表列输出表列);例:printf(“hello worldn”);printf(“sum is:%dn”,sum);printf(“a=%d,b=%dn”,a,b);格式控制 普通字符原样输出 普通字母、数字及符号 转义字符:n,t等 格式控制说明:由%和格式字符及附加格式说明字符组成%d:输出十进制整数%f:输出十进制浮点数%c:输出单个字符 格式控制 附加格式说明符 放置位置:在和格式字符之间 如下字符:字母l:输出lo
37、ng型数据或double型数据,如:%ld,%lf等 m(正整数):数据的最小宽度 n(正整数):对于实数,表示输出n位小数;对于字符串,表示截取的字符个数(负号):输出的数据或字符在域内向左对齐(缺省右对齐)输出表列:输出项可以是常量,变量,表达式 例:int x=8;输出结果:printf(x=%8.4fn,6.85);x=6.8500 printf(x=%dn,x);x=8 1.6.2 scanf()函数 一般形式:scanf(“格式控制”,地址表列);格式控制 格式控制字符:基本同printf()相似 普通字符原样输入 地址表列 由变量地址组成:即在变量名前加地址运算符“&”例:sca
38、nf(“%d%d”,&a,&b);要求输入:5 8 scanf(“%d,%d”,&a,&b);要求输入:5,8 scanf(“a=%d,b=%d”,&a,&b);要求输入:a=5,b=8 注意问题 用%c输入字符时,空格和转义字符都会作为有效字符输入 例:scanf(%c%c,&ch1,&ch2);输入:A B 则ch 1为字符A ,ch2为空格 输入数据时,遇到以下情况时输入结束 遇到空格,或“回车”键,“跳格”键时结束 按指定输入宽度结束 例:scanf(%d%3d%2d,&x,&y,&z);输入:25 1867490 x 为 25,y 为 186,z 为 74 遇到非法输入时结束 例:s
39、canf(%d%d,&x,&y);输入:25,3 x 为25,y 无正确数据(因遇逗号而出错)不要在格式控制中输入转义字符及指定精度 1.7 算法 算法是对特定问题求解步骤的一种描述 算法的五大特性 有穷性:一个算法必须在执行有穷步之后结束。确定性:算法的每一步必须是确切定义的,不能含糊。同一程序对于相同输入必须得到相同结果。输 入:算法有零个或多个输入。输 出:算法执行完毕,必须有一个或多个输出结果。有效性:算法的每一步都是能够实现的,即可操作的。1.7.2 算法的表示方法 流程图表示算法 用图框表示各种操作,用箭头表示算法流程 优点:直观形象,易于理解 起止框起止框 输入输入/输出框输出框
40、 判断框判断框 处理框处理框 流程线流程线 或 连接点连接点 C语言是一种结构化程序设计语言,结构化程序设计主要采用自上而下、逐步细化的方法。结构化程序有三种基本结构:A P B 真 假 选择结构 B A 顺序结构 P A 假 真 A P 假 真 当型循环 直到型循环 N-S流程图 顺序结构:先执行A操作,再执行B操作,两者是顺序执行关系 选择结构:当P条件为真时,执行A模块,否则执行B模块 循环结构:当型循环:当P条件成立时,反复执行A,直到P为假。直到型循环:先执行A操作,再判断P是否为假,若P为假,再执行A,直到P为真为止。N-S流程图优点:比文字描述更加直观、形象,易于理解;比传统的流
41、程图紧凑易画;废除流程线,整个算法结构是由各个基本结构按顺序组成的 P 真 假 A B 选择结构 顺序结构 A 当P为真 A 直到P为真 当型循环 直到型循环 1.8 C语言的产生、发展及特点 C语言的产生及发展 ALGOL60CPLBCPCBC标准标准CANSI CISO C 常见的C语言版本有 Borland公司:Turbo C Turbo C+Borland C+C+Builder Microsoft公司:Microsoft C Visual C+Algorithmic language60 C语言的特点 C语言的语言成分简洁、紧凑、书写形式自由;C语言拥有丰富的数据类型;C语言的运算符
42、丰富、功能更强大;C语言是结构化程序设计语言;C语言对语法限制不严格,程序设计灵活;C语言编写的程序具有良好的可移植性;C语言可以实现汇编语言的大部分功能;C语言编译后生成的目标代码小,质量高,程序的执行效率高。附:各类数值型数据间的混合运算 一、自动类型转换 语言允许不同数据类型之间的各种运算。如1.5+2*a-1.23456789;在运算中,系统自动将不同类型的数据先转换成同一类型,然后再运算。转换规则如图:double float long unsigned int char,short 低 高 向左的箭头表示必定的转换,纵向的箭头表示当运算对象为不同类型时转换的方向(箭头只表示数据类型
43、级别的高低,由低向高转换)。二、强制类型转换 语言允许用户使用强制类型转换运算符将一个表达式的值转换成所需的数据类型。形式:(类型名类型名)(表达式表达式)x=(double)a;z=(int)(x+y);y=(float)(5%3);注意:(1)为避免出错,应将表达式用括号括起来。(2)对一个变量进行强制转换后,得到一个所需类型的中间变量,原来变量的类型和值不发生变化。算术运算符+-*/%注意:两个整数相除舍去小数部分,结果为整数。如5/3=1。但在有负数操作数的情况下,整数除法截取的方向及取模运算结果的符号取决于具体机器的实现。两个数中有一个为实数,则运算结果为double型,即1.0/3
44、=0.333333,但1/3=0。要求“%”两侧必须为整数;如7%3=1。复合的赋值运算符 在赋值运算符“=”之前加上+、-、*、/、%、&、|等10种双目运算符,可构成复合的赋值运算符。即构成+=、-=、*=、/=、%=、=、&=、=、|=10种复合运算符。例:a+=5;a=a+5;y*=x-2;y=y*(x-2);x%=y/3;x=x%(y/3);自增与自减运算符+、-作用:使操作数递增1或递减1 形式:前缀:a+;a-;后缀:+a;-a;例:int x,a=5;x=a+;x=+a;x是多少?注意:自增、自减运算符只能作用于变量,而不能是常量或表达式,如:8+、(x*y)+错 在不需要使用任何具体值且仅需要递增变量的情况下,前缀方式和后缀方式的效果相同。逗号运算符 ,一般形式:表达式1,表达式2,表达式n;执行过程:从左至右依次求解表达式1,表达式2表达式n。逗号表达式的值就是表达式n 的值。例:int i=2,j=3,k=4;i+1,j+4,k-2;最后表达式语句的值为2 a=(a=6,a*3,a+3);最后a的值为?小结 掌握C程序的基本结构 了解C语言的产生过程 掌握C程序开发过程 掌握用TURBO C运行一个C程序 掌握C语言基本语法成分 掌握C语言数据类型 掌握数据的输入与输出的常用方法 了解算法的相关知识 了解C语言的产生、发展及特点