C语言教程1.ppt_第1页
C语言教程1.ppt_第2页
C语言教程1.ppt_第3页
C语言教程1.ppt_第4页
C语言教程1.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、C 语言程序设计,西南大学荣昌校区,信管系计科2班鹏哥,教材,C程序设计(第四版)谭浩强 清华大学出版社 C程序设计学习辅导(原名C程序设计题解与上机指导)(第四版) 谭浩强 清华大学出版社,教学安排,学时:40学时(授课:24学时;上机:16学时,从第8周开始) 授课方式: 教室:授课为主 上机地点: 荣昌校区:待定 上机内容:作业及练习 考试:闭卷,1、掌握C语言的基本语法规则、数据类型,掌握C程序的基本结构。,课程的基本要求,3、具备初步的C语言程序设计能力,能用C语言解决实际问题。,2、掌握C语言程序设计的基本算法。,教学安排,C语言概述和算法 基本数据类型、运算符和表达式 数据的输入

2、和输出 程序结构 数组 函数 指针,第一章 C语言概述,1.1 程序设计语言的发展,汇编语言,高级语言,通用语言:fortran;basic;c 数据库语言:foxbase;FoxPro 网页制作语言:HTML;Java,机器语言,1.2 C语言特点,1.C语言具有结构化的流程控制语句,用函数作为程序的组成单位,因而设计出的程序结构清晰,便于开发大型软件;,2、C语言能够直接访问物理部件,能实现汇编语言的大部分功能。既有高级语言的特点(具有良好的可移植性),又有低级语言的许多功能;,6、C语言生成的目标代码质量高,程序执行速度快。,3、C语言提供了丰富的数据类型;,4、C语言语法限制不太严格,

3、程序设计自由度大;,5、C语言简洁、紧凑;,7、C语言本身没有输入输出语句。输入输出的操作是由库函数scanf和printf等函数来完成。,1.3 C程序格式和结构特点 例1.1 第一个程序 Hello,World!,/* example1.1 The first C Program*/ #include /* “stdio.h”*/ main() printf(“Hello,World!”); ,输出: Hello,World!,例1.2,/* example1.2 calculate the sum of a and b*/ #include /* This is the main pro

4、gram */ Int add() ; main() int a,b,sum; a=10; b=24; sum=add(a,b); printf(”sum= %dn,sum); /* This function calculates the sum of x and y */ int add(int x,int y) int z; z=x+y; return(z); ,运行结果: sum=34,C语言程序结构小结:,(1)C语言程序由函数构成,至少且只有一个 main函数,从main函数开始执行;,(2)函数由函数首部和函数体(包括声明部分和执行部分)组成; main() 变量说明; 语句;

5、,类型 变量名;,(2) scanf(输入数据格式, ,两个常用函数(输入、输出函数介绍),(1) printf(“普通字符 或用%开头或用开头”, 输出内容);,格式输出函数 printf 函数的参数为 格式控制,输出表列 如 printf(“ a=%d, x=%f”, a,x ) ; 格式控制是以 “ ”括起来的字符串,输出表列是用逗号分开的变量名或表达式。格式控制中,%以及其后格式字符为格式说明。 格式字符: d 用十进制整数形式输出 f 用十进制小数形式输出 双引号中的其他字符照原样输出,格式控制,输出表列,输入函数 scanf 的一般形式: scanf(格式控制,地址表列) main

6、( ) int a ,b ,c ; scanf(“%d%d%d”, 本程序运行时,执行到scanf等待用户键入数据。键入数据时,每个数据之间须用空格字符分开。,格式控制,地址表列,例1.3: main() printf(“This is a C program.n”); 例1.4: main() /* 计算两数之和 */ int a,b,sum; /* 这是定义变量 */ Scanf(“%d%d”, 说明:本程序计算两数之和,并输出结果。,1.4 C程序的上机步骤,第二章 程序的灵魂算法,求解问题的步骤,(1)分析问题。,(2)算法分析。,(3)程序设计。,(4)程序调试。,(5)运行与维护。

7、,例1 求12345。 可先写出这样的算法: (1)先求12,得到结果2; (2)将步骤1得到的结果再乘以3,得到结果6; (3)将6再乘以4,得到24; (4)将24再乘以5,得到120。,求12345,上述算法太繁琐,我们找一种通用的表示方法。 S1:设变量p,被乘数,p=1; s2:设变量i,代表乘数,i=2; s3:使pi,乘积放在被乘数变量p中,可表示为:p i p; s4:使i的值加1,即i+1 i; s5:如果i不大于5,返回重新执行步骤s3以及其后的s4、s5;否则,算法结束。最后得到的p就是5!的值。,例2.求13579 11,如果题目改为求13579 11。 上述算法稍作改

8、动: s1: 1 p; s2: 3 i; s3: p i p; s4: i+2 i s5: 若i11,返回s3;否则,结束。,1、有穷性:一个算法应当包含有限的步骤,而不能是无限的步骤;同时一个算法应当在执行一定数量的步骤后,算法结束,不能死循环。 事实上“有穷性”往往指“在合理的范围之内”的有限步骤。 2、确定性:算法中的每一个步骤都应当是确定的,而不是含糊的、摸棱两可的。也就是说不应当产生歧义。特别是算法用自然语言描述时应当注意这点。 例如:“将成绩优秀的同学名单打印输出”就是有歧义的。“成绩优秀”是要求每门课程都90分以上,还是平均成绩在90分以上?不明确,有歧义,不适合描述算法步骤。,

9、算法的特性,3、有0个或多个输入(即:可以没有输入,也可以有输入) 所谓输入是指算法执行时从外界获取必要信息。(外界是相对算法本身的,输入可以是人工键盘输入的数据,也可以是程序其它部分传递给算法的数据) 4、有1个或多个输出(即算法必须得到结果) 算法的输出:算法得到的结果。算法必须有结果,没有结果的算法没有意义。(结果可以是显示在屏幕上的,也可以是将结果数据传递给程序的其它部分) 5、有效性 算法的每个步骤都应当能有效执行,并能得到确定的结果。例如:b=0,则执行a/b是不能有效执行的。,算法举例:求两个整数之和。,(1)准备两个整数;,解题的基本思路:,(3)输出和。,(2)作加法运算;并

10、存放起来,main( ),一个程序的开始,函数开始的标志,int i,j,sum;,变量说明,申请存储空间,i=2;j=-3;,给出两个整数,给变量赋值,sum=i+j;,作加法,并保留和,printf(The sum of i+j is%dn,sum);,输出和,函数结束的标志,算法的表示方法,自然语言 传统流程图 结构化流程图(N-S流程图) 伪代码、计算机语言等,流程图:用一些约定的几何图形来描述算法。用某种图框表示某种操作,用箭头表示算法流程,起止框,输入输出框,判断选择框,处理框,流程线,连接点,注释框,例: 求5!,p=1,i=2,p=p*i,i=i+1,i5,结束,N,Y,开始,

11、结构化程序设计 基本思想:任何程序都可以用三种基本结构表示; 结构化程序:由三种基本结构反复嵌套构成的程序叫; 优点:结构清晰,易读,提高程序设计质量和效率.,结构化程序设计,(1)顺序结构程序设计,依次顺序执行程序语句,执行a块,执行b块,a块,b块,A,B,例如,令a、b的值 分别为5、10; a = 5; b = 10;,(2)判别选择结构程序设计,举例,求a、b两个 数中的最大值;,满足条件否,满足,不满足,执行a块,执行b块,条件成立?,执行a块,执行b块,成立,不成立,b max?,Max = a;,max = b;,Y,N,多分支选择结构,注:A,B,A1.An可以是一个简单语句

12、,也可以是一个基本结构,(3)循环结构程序设计,循环又分“当型循环”和“直到型循环” 举例,求1100的累加和。 int i,sum=0; while(i =100) sum=sum+i; i=i+1; ,直到条件满足为止,执行循环中的指令,当条件满足时,执行循环中指令,i=100?,sum=sum+i; i=i+1;,Y,sum=0;,N,三种基本结构,有以下共同点: l只有一个入口:不得从结构外随意转入结构中某点。 l只有一个出口:不得从结构内某个位置随意转出(跳出)。 l结构中的每一部分都有机会被执行到。(没有“死语句”) l结构内不存在“死循环”(无终止的循环) 已经证明:由三种基本结

13、构顺序组成的算法结构,可以解决任何复杂问题。由基本结构组成的算法属于“结构化”算法。,第三章 C语言简单程序设计 顺序程序设计,数据的表现形式及其运算 基本数据类型 常量和变量 数据类型转换 运算符与表达式,C 数 据 类 型,基本类型,派生类型,枚举类型 空类型void,字符型,整 型,实型,单精度型float,双精度型double,数组,结构体struct,共用体union 指针类型,短整型short,长整型long,整型int,3.1 数据类型,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,标识符 定义:用来标识变量、常量、函数等的字符序列 组成:

14、只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 区分大小写 不能使用关键字 长度:最长32个字符,随系统而异,但至少前个字符有效。 命名原则: 见名知意 不宜混淆 如l与I, o与0,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,(1)与数据类型有关的(14): char int float double signed unsigned short long void str

15、uct union typedef enum sizeof,(3) 与程序控制结构有关的(12): do while for if else switch case default goto continue break return,(2)与存储类别有关的: auto extern register static,3.2.1常量:在运行程序的过程中值保持不变的量,1、直接常量和符号常量 直接常量:即常数。如123 、123.0、 a 等。 符号常量:用指定的名称代替一个常量。 C中符号常量的定义: #define 常量名 取值 注意:符号常量在程序中不能重新赋值。,3.2.2 变量 1.变量

16、的概念 在程序运行过程中,其值可以被改变的量称为变量。 2.变量的两个要素 (1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。 (2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。 C语言中变量:“先定义,后使用”。也就是说,C要求对所有用到的变量做强制定义。,整型常量的表示方法 十进制:09 八进制:07,以 0开头 十六进制:09,AF/af,以 0 x或 0X 开头,例如: 100 -8 0 +123 010 024 0100 073 0 x38 0 x10 0X10 0XFF 0 x0a,整型数据类型,注意: 十六进制常量中可

17、以使用大写字母AF,也可以使用小写字母af。 八进制常量中不能出现数字 8 或 9 例如:018、0921非法,整型变量1)整型数据在内存中的存放形式(二进制) 2)分类 根据占用内存字节数的不同,整型变量又分为类: (1)基本整型(类型关键字为int)。 (2)短整型(类型关键字为short int)。 (3)长整型(类型关键字为long int) (4)无符号整型。无符号型又分为无符号基本整型(unsigned int)、无符号短整型(unsigned short)和无符号长整型(unsigned long)三种,只能用来存储无符号整数。,占用内存字节数与值域 上述各类型整型变量占用的内存

18、字节数,随系统而异。在16位操作系统中,一般用字节表示一个int型变量,且long型(字节)int型(字节)short型(字节)。,3)整型变量的定义变量说明的一般形式为: 类型说明符 变量名标识符,变量名标识符,.; 例如:int a,b,c; (a,b,c为整型变量)long x,y; (x,y为长整型变量)unsigned int p,q; (p,q为无符号整型变量) 不同种类的整型数据可以进行算术运算 4)整型数据的溢出(P44)例3.3,实型常量表示形式: 小数形式 1.0 1. +12.0 -12.0 0.0 指数形式 1e3 1.8e-3 -123E-6 -.1E-3,指数只能是

19、整数,而尾数则可以是整数也可以是小数 ,无论指数或尾数均不能省略 例如:1e、E.5、E-3 非法 实型常量的类型:默认为double型,后面加F(或f),则强调表示该数是float类型 例如:3.5f、1e2F,实型数据类型,实型变量 1)实型数据在内存中的存放形式:一个实型数据一般在内存中占4个字节(32位)。 2)实型变量的分类 实型变量分为:单精度(float)、双精度(double) 。 单精度:其类型说明符为float 单精度说明符 双精度:double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-383.4E+38,只能提供七位有效

20、数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-3081.7E+308,可提供16位有效数字。,实型变量定义:类型说明符 变量名标识符,变量名标识符,. 例如: float x,y; (x,y为单精度实型量) double a,b,c; (a,b,c为双精度实型量)说明 (1).实型常数不分单、双精度,都按双精度double型处理。 (2).实型常量可以赋值给一个float、double、long double型变量。根据变量的类型截取实型常量中相应的有效数字。,决定分配字节数 和数的表示范围,合法标识符,字符型数据类型,字符常量 单引号括起来的单个可视字符 例如:a、A

21、、+ 、3、 等 转义字符常量 单引号括起来的 与可视字符组合,例如:,转义字符表,字符形式,功能,n,换行,t 、V,横向跳格、,b 、r,竖向跳格,退格、,f,回车,、,8进制数表示的ASCII码对应的字符,反斜杠、单引号、双引号,ddd,换页,xhh,16进制数表示的ASCII码对应的字符,字符变量 字符变量的类型关键字为char,一般占用1字节内存单元。 1)变量值的存储 字符变量用来存储字符。将一个字符存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。 例如, char ch1, ch2; /*定义两个字符变量:ch1,ch2*/ ch1=a; c

22、h2=b; /*给字符变量赋值*/,只能是英文的单引号,2)特性 字符数据在内存中存储的是字符的ASCII码 一个无符号整数,其形式与整数的存储形式一样,所以语言允许字符型数据与整型数据之间通用。 (1)一个字符型数据,既可以字符形式输出,也可以整数形式输出。 /*程序功能:用字符形式和整数形式输出字符变量*/ main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); 程序运行结果: ch1=a,ch2=b ch1=97,ch2=98,(2)允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行

温馨提示

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

评论

0/150

提交评论