




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C程序设计实例教程 山东科技大学机电学院,1,第一章 C语言概述,本章的主要内容: C语言的发展 C语言的组成及特点 C 语言的调试方法 程序设计入门,C程序设计实例教程 山东科技大学机电学院,2,本章的学习要求 : 了解:C语言的发展 掌握:C语言的特点、简单C程序的组成 掌握:C程序的上机调试步骤 重点:简单C程序的组成、上机调试步骤 难点:集成开发环境的学习、程序调试方法,C程序设计实例教程 山东科技大学机电学院,3,1.1 C语言的发展,一、程序设计语言的发展:,CPU指令系统,由0、1序列构成的指令码组成 如:10000000 加 10010000 减,用助记符号描述的指令系统 如
2、ADD A, B,客观世界可以分类,对象是类的实例 对象是数据和方法的封装 对象间通过发送和接受消息发生联系,程序设计是数据被加工的过程,C程序设计实例教程 山东科技大学机电学院,4,二、C语言发展过程 产生过程 时间:19721973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie C标准 标准C: K /*格式输出函数*/ ,C程序设计实例教程 山东科技大学机电学院,8,例题 2,#include /*函数功能:计算两个整数相加之和 入口参数:整型数据a和b 返回值: 整型数a和b之和 */ int Add(int a,
3、int b) return (a + b); /*主函数*/ main() int x, y, sum = 0; printf(Input two integers:); scanf(%d%d, /*输出x和y相加之和*/ ,C程序设计实例教程 山东科技大学机电学院,9,例题 3,判断一个数是否为素数。 #include stdio.h void main() int i,n; scanf(%d, ,C程序设计实例教程 山东科技大学机电学院,10,例4 正弦函数,#include stdio.h #include math.h #define PI 3.1415926 /*宏定义*/ void
4、 main() double x; scanf(%lf, /*调用系统函数*/ ,C程序设计实例教程 山东科技大学机电学院,11,例4 正弦函数,#include stdio.h #include math.h #define PI 3.1415926 /*宏定义*/ double sinx(double x); /*函数声明语句*/ void main() double x; scanf(%lf, ,C程序设计实例教程 山东科技大学机电学院,12,例5 汉诺塔,C程序设计实例教程 山东科技大学机电学院,13,例5 汉诺塔,#include stdio.h void move(char s,c
5、har t) printf(%c-%c ,s,t); void Hanoi(int n,char one,char two,char three) if(n=1) move(one,three); else Hanoi(n-1,one,three,two); move(one,three); Hanoi(n-1,two,one,three); ,C程序设计实例教程 山东科技大学机电学院,14,例5 汉诺塔,void main() int h; printf(input number:n); scanf(%d, ,C程序设计实例教程 山东科技大学机电学院,15,1.3 C程序的调试方法,C程序上
6、机操作过程主要包括以下几个步骤: (1)编辑。选择合适的编辑程序,将C语言源程序通过键盘输入到计算机中,并保存为扩展名为“.c”的源文件。 (2)编译。该过程对编辑好的源文件经过C编译程序进行编译,生产扩展名为.obj的目标文件。 (3)连接。经过编译后生成的目标文件还是不能执行的,还需要通过连接程序将源文件生成的目标文件和其包含的库函数及其他目标文件连接后才能生成扩展名为.exe的可执行程序。 (4)执行。执行过程是将连接生成的可执行文件在操作系统下运行,检查程序运行结果。,C程序设计实例教程 山东科技大学机电学院,16,C程序上机操作流程,C程序设计实例教程 山东科技大学机电学院,17,1
7、.4 程序设计入门,程序设计的过程,简单地说就是数据被加工的过程。人们可以通过程序在计算机中的执行来完成对计算机的各种控制。学习程序设计的目的就是学会控制计算机的能力。 一个程序应包括: (1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。 (2)对操作的描述。即操作步骤,也就是算法(algorithm)。,C程序设计实例教程 山东科技大学机电学院,18,使用C语言进行程序设计的主要步骤包括: (1)分析所要处理的具体问题,确定需要的数据结构及解决问题的方法。 (2)通过一定方式将数据结构和算法进行描述。 (3)用C语言将解决问题需要的数据
8、结构、算法进行描述,即编制C程序。 (4)将编制好的C程序通过编译、连接、执行后得出解决问题的结果。,C程序设计实例教程 山东科技大学机电学院,19,1.5 Turbo C 2.0集成开发环境,一、TurboC 2.0集成开发环境 主菜单内容有: File Edit Run Compile Project Options Debug Break/watch 除Edit外,其他各项均有子菜单,只要用Alt加上某项中第一个字母,就可进入该项的子菜单中,由于篇幅限制,这里只介绍常用的部分功能菜单。,C程序设计实例教程 山东科技大学机电学院,20,1.6 Visual C+ 6.0 集成环境调试,启动
9、Visual C+ 6.0 创建新工程 创建源文件 源程序的调试与运行 源程序书写 源程序编译 运行程序,C程序设计实例教程 山东科技大学机电学院,21,第二章 数据类型,内容提要: 标识符命名; 基本数据类型; 常量和变量; 常用运算符和表达式; 运算符的优先级与结合性,C程序设计实例教程 山东科技大学机电学院,22,关键字(Keyword) 又称为保留字,C语言中预先规定的具有固定含义的一些单词 int,return等 标识符(Identifier) 系统预定义标识符,main,printf 等 用户自定义标识符,Add, x, y 等 运算符(Operator) 34种,详见附录2,C程
10、序常见符号分类,2.1 标识符和字符集,C程序设计实例教程 山东科技大学机电学院,23,分隔符(Separator) 空格、回车/换行、逗号等 其它符号 大花括号“”和“”通常用于标识函数体或者一个语句块 “/*”和“*/”是程序注释所需的定界符 数据(Data) 变量(Variable) 常量(Constant),C程序设计实例教程 山东科技大学机电学院,24,标识符: 定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字 长度:最长32个字符,C程序设计实例教程 山东科技大学机电学院,25,命名原则:
11、见名知意 不宜混淆 如l与1, o与0,例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,C程序设计实例教程 山东科技大学机电学院,26,C语言的标识符可分为以下3类。 1. 关键字:关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。 (1)类型说明符。用于定义、说明变量、函数或其他数据结构的类型。如前面例题中用到的int,double等。 (2)语句定义符。用于表示一个语句的功能。如例1.3中用到的if else就是条件语句的语句定义符。 (
12、3)预处理命令字。用于表示一个预处理命令,如前面各例中用到的include。,C程序设计实例教程 山东科技大学机电学院,27,C语言共有32个关键字: (由系统定义,不能重作其它定义) auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigned union void volatile while,C程序设计实例教程
13、 山东科技大学机电学院,28,2. 特定字 特定字是具有特殊含义的标识符。它们虽然不是关键字,但是在习惯上把它们看成关键字。所以一般用户定义的标识符也不要使用它们。 特定字包括: define undef include ifdef ifndef endif line,C程序设计实例教程 山东科技大学机电学院,29,3. 用户定义字 用户定义字指用户按照语法规则定义的标识符。用户定义字可以用来标识用户自己使用的变量,符号常量、数据类型以及函数等。 注意: (1)不能使用关键字和特定字。 (2)用户定义字为了标识不同的对象,标识符的前8个字符要有区别。 (3)标识符最好有含义。 (4)避免使用容
14、易混淆的字符。如l与1,0与o,z与2等。 (5)大、小写代表不同的意义。 (6)尽量不要与某个库函数同名,C程序设计实例教程 山东科技大学机电学院,30,字 符 集 字符集是高级语言的编译系统所能识别的字母、数字和特殊符号。每种高级语言都有自己特定的字符集。 C语言的字符集包括: (1)大、小写英文字母: A ,B, ,Z,a,b,z。 (2)数字: 0,1,2,9。 (3)运算符: + * / % = 。 (6)特殊符号: _ $ #。 (7)空白符:空格符、换行符和制表符。,C程序设计实例教程 山东科技大学机电学院,31,2.2 数据类型,数据为什么要区分类型? 不同类型的数据代表不同的
15、 数据表示形式 合法的取值范围 占用内存空间大小 可参与的运算种类,C程序设计实例教程 山东科技大学机电学院,32,2.2 数据类型,C程序设计实例教程 山东科技大学机电学院,33,基本数据类型,整型,字符型,实型,有,无,说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:,C程序设计实例教程 山东科技大学机电学院,34,数值常量和符号常量 定义:在程序运行过程中,其值不能被改变的量称为常量。如12、0、3为整型常量,4.6、1.23为实型常量,a、d为字符常量。 也可以用一个标识符代表一个常量,称为符号常量。习惯上,符号常量名用大写,变量名用小写,以示区别。 使用符号常
16、量的好处 : 含义清楚,符号常量名在定义时应考虑“见名知意”。 在需要改变一个常量时能做到“一改全改”。,2.3 常量和变量,C程序设计实例教程 山东科技大学机电学院,35,举例:符号常量的使用 #define PRICE 30 #include void main ( ) int num,total; num=10; total=num * PRICE; printf(total=%d,total); 程序中用#define命令行定义PRICE代表常量30。 该程序的运行结果:total=300,C程序设计实例教程 山东科技大学机电学院,36,变量 定义:变量是由程序命名的一块计算机内存区域
17、,是用来存储一个可以变化的数值。 定义变量的格式为:类型说明符 变量名表 ; 请注意区分变量名和变量值这两个不同的概念 : 变量名实际上是以一个名字对应,代表一个地址。,2.3 常量和变量,C程序设计实例教程 山东科技大学机电学院,37,整型常量 定义:整型常量就是整常数。 分类:在C语言中,使用的整常数有八进制、十六进制和十进制三种。 八进制整常数。八进制整常数必须以0开头,即以0作为八进制数的前缀,数码取值为07。如:015(十进制为13),0101(十进制为65),0177777(十进制为65535)。,2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,38,十六进制整常数
18、。十六进制整常数的前缀为0X或0 x,其数码取值为09,AF或af。 如:0X2A(十进制为42),0XA0(十进制为160),0XFFFF(十进制为65535) 十进制整常数。十进制整常数没有前缀,其数码为09,2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,39,十进制:4956= 410+910 +510+610,二进制:1011=12+02 +12+12,十六进制:81AE=816+116 +1016+1416,八进制:4275=48+28 +78+58,常见数制表示方法:,C程序设计实例教程 山东科技大学机电学院,40,整型变量 内存中的存放形式 :整型常量就是整常数
19、。,2.4 整型数据类型,内存以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0或1,1、字节和位,C程序设计实例教程 山东科技大学机电学院,41,2、数值的表示方法原码、反码和补码 原码:最高位为符号位,其余各位为数值本身的绝对值 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 补码: 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加1,C程序设计实例教程 山东科技大学机电学院,42,整型变量 分类: 基本型。类型说明符为int,在内存中占2个字节,其取值为基本整常数。 短整量。类型说明符为short int
20、或short。所占字节和取值范围均与基本型相同。 长整型。类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。 无符号型。类型说明符为unsigned。,2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,43,整型变量 说明: 一般形式为:类型说明符 变量名标识符,变量名标识符。 例如: int a,b,c; (a,b,c为整型变量) long x,y; (x,y为长整型变量) unsigned p,q; (p,q为无符号整型变量),2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,44,在书写变量说明时,应注意 : 允许在一个类型说明符
21、后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。 最后一个变量名之后必须以“;”号结尾。 变量说明必须放在变量使用之前,一般放在函数体的开头部分。,2.4 整型数据类型,C程序设计实例教程 山东科技大学机电学院,45,实例,整型变量的定义和使用。 #include void main() int a,b,c,d; /*指定a、b、c、d为整型变量*/ unsigned u; /*指定u为无符号整型变量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn”,c,d); 运行结果为: a+u=2
22、2,b+u=-14 可以看到不同种类的整型数据可以进行算术运算。在本例中是int型数据与unsigned int型数据进行相加相减运算。,C程序设计实例教程 山东科技大学机电学院,46,【例2.3】 整型数据的溢出 #include void main() int a,b; a=32767; b=a+1; printf(%d,%d,a,b); 在TurboC 2.0环境下运行结果为:32767,-32768 而在Visual C+ 6.0环境下,由于是32位应用程序,int类型占4个字节,所以输出结果为:32768,32768,C程序设计实例教程 山东科技大学机电学院,47,变量a的最高位为0
23、,后15位全为1。加1后变成第1位为1,后面15位全为0。而它是32768的补码形式,所以输出变量b的值为32768。请注意:一个整型变量只能容纳一3276832767范围内的数,无法表示大于32767的数。,C程序设计实例教程 山东科技大学机电学院,48,在Visual C+下查看整型在内存的表示 #include stdio.h void main() int n,i=31,a32=0; scanf(%d, ,C程序设计实例教程 山东科技大学机电学院,49,在Visual C+下查看整型在内存的表示 #include stdio.h void main() int n=65536,i,j=
24、3; char *p; p=(char *) ,C程序设计实例教程 山东科技大学机电学院,50,浮点常量 定义:浮点数就是平常所说的实数 。 分类:有两种形式:十进制数形式和指数形式 。 十进制数形式。由数码0 9和小数点组成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均为合法的浮点数。 指数形式。由十进制数、加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n(a为十进制数,n为十进制整数)其值为 a*10n,如:2.1E5(等于2.1*105),3.7E-2(等于3.7*10-2)。,2.5 浮点型数据类型,C程序设
25、计实例教程 山东科技大学机电学院,51,浮点变量 分类:浮点型变量分为单精度(float)型、双精度(double)型和长双精度(long double)型三类 。 定义形式: 单精度(float)型。float a,b; 双精度(double)型。double c,d; 长双精度(long double)型。 long double t;,2.5 浮点型数据类型,C程序设计实例教程 山东科技大学机电学院,52,实例,【例2.4】把一个浮点实型常数9876543219分别赋给一个float型变量和double型变量,以验证单精度变量和双精度变量的区别。 #include void main(
26、) float a; double b; a=987654.3219; b=987654.3219; printf(a=%fnb=%fn,a,b); 由于float型变量a只能接受7位有效数字,因此,从第八位(即小数点后第二位)起数字已不准确,而double型变量b能全部接受上述l0位数字。,运行结果如下: a=987654.312500 b=987654.321900,C程序设计实例教程 山东科技大学机电学院,53,字符常量 定义:字符常量是用单引号括起来的一个字符。例如a,b,=,+,?都是合法字符常量。 定义形式: 字符常量只能用单引号括起来,不能用双引号或其他括号。 字符常量只能是单个
27、字符,不能是字符串。 字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。 转义字符是一种特殊的字符常量。转义字符以反斜线开头,后跟一个或几个字符。,2.6 字符类型,C程序设计实例教程 山东科技大学机电学院,54,表2-2 转义字符及其含义,C程序设计实例教程 山东科技大学机电学院,55,广义地讲,语言字符集中的任何一个字符均可用转义字符来表示。表2-2中的ddd和xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如101表示字母A ,102表示字母B,134表示反斜线,XOA表示换行等。,C程序设计实例教程 山东科技大学机电学院,56,【例2.
28、5】转义字符的使用 #include void main() int a,b,c; a=5; b=6; c=7; printf(%dnt%d %dn %d %dtb%dn,a,b,c,a,b,c); a、b、c为整数5-a,6-b,7-c 调用printf显示程序运行结果 printf(%dnt%d %dn %d %dtb%dn,a,b,c,a,b,c);,C程序设计实例教程 山东科技大学机电学院,57,以下程序输出结果 #include stdio.h void main() printf(1234567890123456789012345n); printf(thellotabcn); ,
29、C程序设计实例教程 山东科技大学机电学院,58,以下程序输出结果 #include stdio.h void main() printf(1234567890123456789012345n); printf(thellotbabcn); t之后的b删除了制表符号,所以abc紧接着前面进行输出,C程序设计实例教程 山东科技大学机电学院,59,字符变量 类型说明符:char 取值:字符常量,即单个字符 举例: 【例2.6】向字符变量赋以整数。 #include void main( ) char a,b; a=120; b=121; printf(%c,%cn%d,%dn,a,b,a,b); ,
30、显示结果: a,b 120,121,C程序设计实例教程 山东科技大学机电学院,60,例2.7 大小写字母的转换。 #include void main() char a,b; a=x; b=y; a=a-32; b=b-32; printf(%c,%cn%d,%dn,a,b,a,b); ,C程序设计实例教程 山东科技大学机电学院,61,字符串常量 定义:是由一对双引号括起的字符序列 ,如:“CHINA” 。 与字符常量区别 : (1)字符常量由单引号括起来,字符串常量由双引号括起来。 (2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。 (3)可以把一个字符常量赋予一个字符变量,但
31、不能把一个字符串常量赋予一个字符变量。 (4)字符常量占一个字节的内存空间。,C程序设计实例教程 山东科技大学机电学院,62,字符和字符串的区别,占用空间不同 #include stdio.h void main() printf(%d,%dn,sizeof(a),sizeof(a); ,C程序设计实例教程 山东科技大学机电学院,63,2.7 不同数据类型之间的转换,一、自动转换 环境:自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。 3+A+5/2=? 3+A+5.0/2=? 遵循以下规则: (1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 (2)转换按数据长度
32、增加的方向进行,以保证精度不降低。,C程序设计实例教程 山东科技大学机电学院,64,(3)所有的浮点运算都是以双精度进行的。 (4)char型和short型参与运算时,必须先转换成int型。 (5)在赋值运算中,赋值号两边量的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型。,不同类型自动转换规则,C程序设计实例教程 山东科技大学机电学院,65,#include stdio.h void main() int a=10; char b=A; float x=3.14; printf(%lfn, a+b*2+x*3); ,C程序设计实例教程 山东科技大学机电学院,66,二、强制类型转换
33、实现:通过类型转换运算来实现的 。 形式为: (类型说明符)(表达式) 注意问题: (1)类型说明符和表达式都必须加括号。 (2)无论是强制转换或是自动转换,都是临时性转换,不改变数据说明时对该变量定义的类型。,C程序设计实例教程 山东科技大学机电学院,67,【例2.9】强制类型转换。 #include void main( ) float f=5.75; printf(int)f=%d,f=%fn,(int)f,f); 运行结果: (int)f=5,f=5.750000,C程序设计实例教程 山东科技大学机电学院,68,第三章 运算符和表达式,掌握:算术、关系、逻辑等常见运算符 掌握:各种运算
34、符的优先级 掌握:各种表达式的组成及运算过程 重点:运算符的优先级及表达式分析计算 难点:自增、自减运算符,C程序设计实例教程 山东科技大学机电学院,69,3.1 算术运算符和算术表达式,算术运算符 int a=5,b=20,x,y; x=a+; y=+b; a=? b=? x=? y=?,C程序设计实例教程 山东科技大学机电学院,70,算术表达式 定义:算术表达式是由算术运算符和括号将运算对象连接起来的式子,其中运算对象可以是常量、变量、函数、数组元素等内容。 形式: 表达式1 算术运算符 表达式2 【例3.1】若a=5,b=3,c=2,x=1.5,则算术表达式a*x*x+b*x+c的结果是
35、多少?,C程序设计实例教程 山东科技大学机电学院,71,注意: (1)当运算符“/”两侧的操作数为整型时,计算结果为整型,如19/2=9。 (2)运算符“%”两侧的操作数必须是基本整型、短整型或长整型数,而不能是浮点型数字。 (3)运算符“+”、“-”只能用于变量,而不能用于常量或表达式,如:i+、-j均是正确的,而+10、(a+b)+则是错误的。,C程序设计实例教程 山东科技大学机电学院,72,3.2 赋值运算符和赋值表达式,赋值运算符,C程序设计实例教程 山东科技大学机电学院,73,赋值表达式 定义: 赋值表达式是由赋值运算符和括号将运算对象连接起来的式子,其中运算对象可以是常量、变量、函
36、数、数组元素等内容。 形式: 变量名称 赋值运算符 表达式,C程序设计实例教程 山东科技大学机电学院,74,举例,【例3.4】已知int a=5,b=3,x=10,计算如下表达式的值。 a=a*8 表达式值为40,a=40 b%=2 表达式值为1,b=1 x*=(a+b) 表达式值为410,x=410 a=b=c=5 表达式值为5,a,b,c值为5 a=(b=5) b=5,a=5 a=5+(c=6) 表达式值为11,c=6,a=11 a=(b=4)+(c=6) 表达式值为10,a=10,b=4,c=6 a=(b=10)/(c=2) 表达式值为5,a=5,b=10,c=2,C程序设计实例教程 山
37、东科技大学机电学院,75,注意: (1)对于简单赋值运算符和复合赋值运算符,等号左侧的操作数只能为变量,而不能是常量或表达式,如a=5是正确的,而10=3+2以及a+b=8都是错误的。 (2)赋值运算符具有右结合性,因此a=b=c=10是正确的,等价于a=(b=(c=10)。 (3)当等号“=”两侧的类型不同时,将要进行数值类型的转换,C程序设计实例教程 山东科技大学机电学院,76,赋值语句 在赋值表达式的基础上添加“;”就构成了赋值语句。如x=(a=4)+8;计算时先计算右侧括号中的内容,然后与8相加,并将结果赋给变量x。 【例3.5】已知华氏温度与摄氏温度之间的转换公式为C=5/9*(F-
38、32),编写程序将输入的华氏温度转换为摄氏温度输出,C程序设计实例教程 山东科技大学机电学院,77,#include stdio.h void main() int f; float c; scanf(%d, /*输出结果*/ ,C程序设计实例教程 山东科技大学机电学院,78,3.3 关系运算符和关系表达式,关系运算符 C语言提供了6种关系运算符,C程序设计实例教程 山东科技大学机电学院,79,关系表达式 定义:关系表达式是由关系运算符和括号将运算对象连接起来的式子,其中运算对象可以是常量、变量、函数、数组元素等内容。 一般组成形式: 表达式1 关系运算符 表达式2 注意: 关系表达式的结果是
39、1或0,前者对应于关系成立,后者对应于关系不成立。如: 531 关系不成立,表达式的值为0 (3+7)!=(2+8) 关系不成立,表达式的值为0,C程序设计实例教程 山东科技大学机电学院,80,【例3.6】若有int a=3,b=2,c=1,d,f; 则 ab /表达式值1 (ab)=c /表达式值1 b+cb /d=1 f=abc /f=0 注意: (1)表达式1和表达式2还可以是常量、变量的形式,也可以是赋值表达式、逻辑表达式、关系表达式等表达式嵌套的形式。 (2)关系表达式的值为0或1。,C程序设计实例教程 山东科技大学机电学院,81,3.4 逻辑运算符和逻辑表达式,逻辑运算符,其中逻辑
40、与运算符 scanf(%d, ,C程序设计实例教程 山东科技大学机电学院,86,注意: (1)在逻辑运算值时,以“1”代表“真”,“0”代表“假”;但在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。如3 float x=200,y=0.85; printf(%d,%dn,i=5 ,C程序设计实例教程 山东科技大学机电学院,88,3.5 条件运算符和条件表达式,条件运算符 :C语言提供了1种条件运算符,其中该运算符是三目运算符,具有右结合性。,C程序设计实例教程 山东科技大学机电学院,89,条件表达式 定义:条件表达式是由条件运算符和有关表达式、变量或常量等
41、组成的式子。 条件表达式的一般形式为: 表达式1? 表达式2: 表达式3 其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。如存在两个整型变量a=5,b=10,求二者之间的较大值,可以用条件表达式表示为:ab?a:b。,C程序设计实例教程 山东科技大学机电学院,90,注意: (1)条件运算符中“?”和“”是一对运算符,不能分开单独使用; (2)条件运算符的结合方向是自右至左。因此ab?a:cd?c:d应理解为ab?a:(cd?c:d)。,【例】 if(ab) max=a; else max=b; 改写成用条件表达式表示的形式为:
42、max=ab?a:b。,C程序设计实例教程 山东科技大学机电学院,91,3.6 逗号运算符和逗号表达式,逗号运算符 :C语言提供了1种逗号运算符,C程序设计实例教程 山东科技大学机电学院,92,逗号表达式 定义:逗号表达式是由逗号运算符和有关变量、常量、表达式等组成的式子。 逗号表达式的一般形式为: 表达式1,表达式2, 表达式3 求解的顺序: 是自左向右进行,先求解表达式1的值,然后求解表达式2的值,依次类推,整个逗号表达式的值是最后一个表达式的值。,C程序设计实例教程 山东科技大学机电学院,93,【例3.9】 计算如下逗号表达式的值。 a=3*5,a*4 /a=15,表达式值60 a=3*
43、5,a*4,a+5 /a=15,表达式值20 x=(a=3,6*3) /赋值表达式,表达式值18,x=18 x=a=3,6*a /逗号表达式,表达式值18,x=3,C程序设计实例教程 山东科技大学机电学院,94,注意: (1)并不是所有出现逗号的地方都是逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。 (2)逗号表达式中各个表达式也可以是逗号表达式的形式,即(表达式1,表达式2),表达式3,构成表达式嵌套的形式。 (3)通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。,C程序设计实例教程 山东科技大学机电学院,95,设有定义:int x=2;以下
44、表达式中,值不为6的是_D_。 A)x*=x+1 B)x+,2*x C)x*=(1+x) D)2*x, x+=2 为表示关系xy z,应使用的C语言表达式是_A_。 A) (x=y) A) 30 B) 24 C) 60 D) 48,C程序设计实例教程 山东科技大学机电学院,96,表达式y=(1312?15:67?8:9)的值为_ 。 A) 9B) 8 C) 15 D) 1 若x=5,y=3 则y*=x+5; y的值为_。 A) 10B) 20 C) 15D) 30 以下程序的运行结果是_。 main ( ) int x=10,y=10; printf(“%d %dn”, x-, -y); ,C
45、程序设计实例教程 山东科技大学机电学院,97,已有定义 int x=3, y=4, z=5;则表达式 “!(x+y)+z-1 while(i=100) s=s+i; i=i+1; printf(s=%dn,s); ,C程序设计实例教程 山东科技大学机电学院,113,三、N-S结构图描述法,定义:1973年美国学者I.Nassi和B.Shneiderman提出了一种新的程序控制流程图的表示方法,即N-S结构图。 用 N-S结构图表示三种基本结构 顺序结构,选择结构,C程序设计实例教程 山东科技大学机电学院,114,三、N-S结构图描述法,循环结构,(a)当型循环,(b)直到型循环,C程序设计实例
46、教程 山东科技大学机电学院,115,举例,【例4.4】输出两个整数中的较大值,用N-S结构的流程图表示算法,C程序设计实例教程 山东科技大学机电学院,116,算法的特点 一个算法应该具有以下5个重要的特征,在表示一个算法时需要从这些特征出发,以使得设计的算法切实可行。 有穷性:一个算法必须保证执行有限步之后结束; 确切性:算法的每一步骤必须有确切的定义; 输入:一个算法有0个或多个输入,以刻划运算对象的初始情况,所谓0个输入是指算法本身给定了初始条件;,C程序设计实例教程 山东科技大学机电学院,117,输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
47、可行性:算法原则上能够精确地运行,且人们用笔和纸做有限次运算后即可完成。,C程序设计实例教程 山东科技大学机电学院,118,4.2 C程序语句,C语句分为5种类型,分别是表达式语句、函数调用语句、控制语句、复合语句和空语句。 表达式语句 定义:由运算符和操作数组合起来的符合C语言格式的式子。 分类:可分为算术表达式、逻辑表达式、关系表达式等多种形式。 格式为:;表达式语句是由一个完整的表达式及分号“;”构成一个语句 注意:表达式和表达式语句的区别就在于后者带有分号,是一个可以运行的语句。,C程序设计实例教程 山东科技大学机电学院,119,函数调用语句 定义:函数调用语句是在函数调用的基础上加分
48、号“;”组成的 。 调用格式: 函数名称(实参表列); 举例: c=getchar(); /*用于从键盘读入一个字符*/ printf(c=%c,c); /*用于将c进行格式输出*/ m=max(a,b,c); /*用于求取a、b、c三者之间的最大值并将结果赋值给m*/,C程序设计实例教程 山东科技大学机电学院,120,控制语句 定义:用于控制程序执行的语句。 分类:C语言中共有9种控制语句,包括选择分支结构(if、ifelse、ifelse ifelse)、循环结构(ifgoto、while、dowhile、for)以及循环控制语句break和continue语句。 调用格式:if(expr
49、ession) statements;,C程序设计实例教程 山东科技大学机电学院,121,实例分析:输入两个数字,求两个数的较大值。 分析:对于两个数字求较大值的方法,主要是对其数值进行比较,在C语言中用关系运算符(、=、!=和=)来表示,两个数的大小关系有前者大于后者以及前者小于或等于后者两种形式,是一种典型的双分支选择结构,用ifelse来实现。,C程序设计实例教程 山东科技大学机电学院,122,复合语句,复合语句 定义:是用一对大括号 将多条语句括起来的一组特殊语句,有时候也称之为“程序段”,整体上作为一条语句 。 调用格式: 语句1; 语句2; 语句n; 或 语句1; 语句2; 语句n
50、; ,C程序设计实例教程 山东科技大学机电学院,123,举例:求1+2+3+4+5。 #include stdio.h void main() int i=1,sum=0; while(i=5) /*复合语句作为循环体语句*/ sum+=i; i+; printf(sum=%dn,sum); 注意:复合语句可以嵌套,并且在复合语句内部可以进行变量的定义和初始化,这些变量在复合语句外部无效。,C程序设计实例教程 山东科技大学机电学院,124,空语句,空语句 定义:空语句是没有任何符号的语句,仅仅以分号“;”作为标识。 格式: ; 作用:空语句本身没有实际功能,只是表示什么操作都不做 目的:一是定
51、义程序结构并在以后增加语句;二是实现空循环等待;三是实现跳转目标点等。,C程序设计实例教程 山东科技大学机电学院,125,4.3 顺序结构程序设计,字符的输入和输出 (1)getchar() 格式:char getchar(void); 功能:从键盘读入一个字符,返回该字符的ASCII,可以将该结果赋值给字符变量或整型变量 。回车结束输入 ( 2)getch() 格式:int getch(void); 功能:从键盘读入一个字符,返回该字符的ASCII,但屏幕上不会显该字符。,C程序设计实例教程 山东科技大学机电学院,126,(3)getche() 格式:int getche(void); 功能
52、:从键盘读入一个字符,返回该字符的ASCII,屏幕上会显该字符。读一字符后结束输入。 (4)putchar(ch) 格式:void putchar(char ch); 功能:向屏幕的当前光标位置输出一个字符。,C程序设计实例教程 山东科技大学机电学院,127,举例,【例4.7】利用上述函数从键盘读入一个字符并输出结果。 #include stdio.h #include conio.h /*getche函数所在的头文件*/ void main() char c; c=getche(); /*调用getche函数读取字符*/ putchar(c); /*输出读取的字符内容*/ ,C程序设计实例教
53、程 山东科技大学机电学院,128,字符串的输入与输出 C语言中从键盘读入和输出一个字符串常用的函数有以下两个: 1.gets函数 格式: char *gets(char *s); 功能:从标准输入设备读入一个字符串并写入s所指向的内存单元。读入过程中遇回车则结束。 2. puts函数 格式: int puts(const char *s); 功能:输出一个以空字符结尾的字符串到标准输出设备。如输出上面s的内容时:puts(s);,C程序设计实例教程 山东科技大学机电学院,129,举例:从键盘输入一个字符串,计算字符串长度并输出结果。 分析:本题意图是求取一个字符串的长度,实际是统计一个字符串中
54、有效字符的个数,从前面讲述内容可以知道字符串是由空字符(0)结尾的字符序列,统计时需要从字符串的第一个字符开始,依次判断当前字符的内容是否为空字符,遇到首个空字符时统计结束。,C程序设计实例教程 山东科技大学机电学院,130,格式化输入与输出 数字、字符由控制台输入和向控制台输出的常用函数一般有scanf和printf两个函数 。 (1)printf()函数 格式:int printf(char *format,arg1,arg2,); 功能:用于按照格式format的规则转换、格式化输出参数arg1、arg2等的数据到标准输出设备。,C程序设计实例教程 山东科技大学机电学院,131,prin
55、tf函数中可以使用的控制字符如表1,C程序设计实例教程 山东科技大学机电学院,132,printf函数的修饰字符如表2,C程序设计实例教程 山东科技大学机电学院,133,【例4.10】写出下列程序的输出结果。 #include stdio.h void main() int a=314; float f=218.456; char ch=a; char s=CLanguage; printf(%7d,%-4dn,a,a); printf(%f,%8f,%8.1f,%.2f,%.2en,f,f,f,f,f); printf(%3cn,ch); printf(%sn%12sn%8.5sn%2.5s
56、n%.3sn,s,s,s,s,s); ,C程序设计实例教程 山东科技大学机电学院,134,scanf函数用转换字符,(2)scanf()函数 格式:int scanf(char *format,); 功能:用于从标准输入设备读取字符并按照format的控制格式将读取的字符存储到对应参数中,每个输入参数必须是指针的形式 。 格式控制format中可能包含下列部分的内容: (1)空格或制表符,在处理过程中将被忽略; (2)普通字符(不包括%),用于匹配输入流中下一个非空白符字符; (3)转换说明,依次由一个%、一个可选的赋值禁止字符*、一个可选的数字(指定最大字段宽度)、一个可选的h、l或L字符以
57、及一个转换字符组成。,C程序设计实例教程 山东科技大学机电学院,135,scanf函数用转换字符 如下表,C程序设计实例教程 山东科技大学机电学院,136,scanf函数使用的修饰字符如下表,C程序设计实例教程 山东科技大学机电学院,137,【例4.11】格式输入、输出有关数据。 #include stdio.h void main() int a,b; float s; char m10; scanf(%d,%d,%f,%s, ,C程序设计实例教程 山东科技大学机电学院,138,4.4 选择结构的基本形式,选择分支结构通常有单分支、双分支和多分支等多种情况。 简单分支结构 形式:if(exp
58、ression) statements 执行过程: 系统首先对expression表达式进行判断,当表达式结果为真(不为0)时执行statements语句;否则,跳过statements语句,继续执行其后的其他语句 。,C程序设计实例教程 山东科技大学机电学院,139,C程序设计实例教程 山东科技大学机电学院,140,双分支结构 形式:if(expression) statements1 else statements2 执行过程: 系统首先对expression表达式进行判断,当表达式结果为真(不为0)时执行statements1语句;否则,执行statements2语句。选择结构执行完成后继续执行其后的其他语句。,C程序设计实例教程 山东科技大学机电学院,141,C程序设计实例教程 山东科技大学机电学院,142,【例4.15】判断一年的天数。 分析: 该题的意图是输出某年的总天数,实际是判断该年是闰年还是平年。闰年的判断条件是能被4整除但不能被100整除,或者能被400整除。 具体步骤是: (1)从键盘读入要判断的年份; (2)判断该年是否为闰年
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专利导航分析师岗位面试问题及答案
- 知识产权运营师岗位面试问题及答案
- 河南广东联考2025年高一化学第二学期期末调研模拟试题含解析
- 广西贺州市桂梧高级中学2025届高一化学第二学期期末质量跟踪监视试题含解析
- 甘肃省庆阳市长庆中学2025年高二下化学期末调研模拟试题含解析
- 北京集体资产管理办法
- 公司出国证件管理办法
- 智慧手环使用管理办法
- 晋中市健康码管理办法
- 内贸船舶卫生管理办法
- 风电项目安全专业监理实施细则
- 淮南新东辰控股集团有限责任公司招聘笔试题库2024
- 01J925-1压型钢板、夹芯板屋面及墙体建筑构造
- 高一化学会考知识点
- 医院信息机房运维服务项目需求
- 有趣的汉字甲骨文演变完整模板
- (完整版)曲臂式高空作业车安全技术交底
- 2024年民族宗教政策法规宣传月知识竞赛考试题库(含答案)
- 《3-6岁儿童学习与发展指南》考试参考题库120题(含答案)
- 诊所中药饮片清单
- 《发酵饲料的应用》课件
评论
0/150
提交评论