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

下载本文档

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

文档简介

1、C语言程序设计,第 三 讲,3.1 顺序程序设计举例 3.2 数据的表示形式及其运算 3.3 C语句 3.4 数据的输入输出,顺序结构程序设计,第 3 章,算法:在主函数中调用printf函数原样输出以上信息即可。,例3.1 在屏幕上显示“Hello ,C program!”信息。,3. 1,顺序程序设计举例,#include “stdio.h” int main( ) printf(“Hello, C program!n”); return 0; ,转义符号,换行,最简单的输出文本信息的程序模式:,3. 1,顺序程序设计举例,#include “stdio.h” int main( ) pr

2、intf(“”); return 0; ,输出信息放在这里,思考:在屏幕上显示: Hello ,C I Will be an excellent programmer!,#include int main( ) printf(“Hello ,C n I Will be an excellent programmer!n”); return 0; ,printf(“Hello ,C n”); printf(“I Will be an excellent programmer! n”); return 0; ,算法:,例3.2 有人用温度计测量出用华氏法表示的温度(如 64F),今要求把它转换为以

3、摄氏法表示的温度(如 20C) 。,3. 1,顺序程序设计举例,表达式:C=5/9*(f-32),编程时需要 解决的问题,输出: printf(格式控制,输出项列表),#include int main ( ) printf(“c=%fn”, (5.0/9)*(64-32); return 0; ,3. 1,顺序程序设计举例,3. 1,顺序程序设计举例,#include “stdio.h” int main( ) printf(“”,); return 0; ,最简单的计算程序的模式:,计算表达式,算法,例3.3:编写C程序,运行时输入梯形的底和高,计算梯形的面积,并将计算结果在屏幕上进行显示

4、。,3. 1,顺序程序设计举例,3. 1,顺序程序设计举例,编程时需要解决的问题 (1) 如何获取底和高 输入函数 scanf (2) 输入的数据如何存放 定义变量 (3) 如何输入公式 利用运算符、常量、变量表示成合法的表达式,3. 1,顺序程序设计举例,#include “stdio.h” int main() float a,b,h; printf(“please input a,b and h:”); scanf(“%f%f%f”, ,变量定义语句,输入语句,表达式,3. 1,顺序程序设计举例,#include “stdio.h” int main() float a,b,h,s; p

5、rintf(“please input a,b and h:”); scanf(“%f%f%f”, ,赋值语句,最简单的输出文本信息的程序模式:,3. 1,顺序程序设计举例,#include “stdio.h” int main( ) printf(“”); return 0; ,输出信息放在这里,3. 1,顺序程序设计举例,#include “stdio.h” int main( ) printf(“”,); return 0; ,最简单的计算程序的模式:,计算表达式,3. 1,顺序程序设计举例,#include “stdio.h” int main( ) 若干变量定义语句; 输入语句; 若

6、干计算和赋值语句; 若干输出语句; return 0; ,顺序结构程序的通用模式:,3.2.1,常量与变量, 对标识符的定义 用来标识对象名字的有效字符序列。对象包括变量、函数、数组、类型等。即标识符就是对象的名字。,标识符, 标识符的构成 C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。 大小写敏感,讨论:判断下列标识符号合法性 sumSumM.D.JohndayDate3days student_name#33lotus_1_2_3ab above $123 _toDay,M.D.John,#33,$123,ab,3days,3.2.2,C语言中的数据

7、类型,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,数据类型整型,整型,3.2.2,C语言中的数据类型,(signed),(signed),(signed),不同平台,不同编译器,可能会迥然不同 凡是需要字节数的地方,一律用sizeof获得,基本整型,短整型,长整型,signed,unsigned,整型数据在内存中二进制补码形式存放,+1001001,十进制,二进制(真值),+73,原码,0 100 1001,-1001001,-73,1 100 1001,补码,0 100 1001,1 011 0111,3.2.2,C语言中的数据类型,数据类型字符型,占

8、用的空间 一个字节的存储空间。 存储形式 存储字符相应的二进制ASCII代码。 例:存储字符d d (100)10 (1100100)2,3.2.2,C语言中的数据类型,数据类型字符型,字符型数据的子类型 有符号字符型 signed char 无符号字符型 unsigned char,3.2.2,C语言中的数据类型,对于有符号字符型数据,允许存储的值为-128127,但字符的代码不可能为负值,所以在存储字符时,实际只使用0127这一部分。,数据类型浮点型,浮点型数据的子类型 单精度(float型) 双精度(double型) 长双精度型(long double) 存储形式 二进制指数形式存储,3

9、.2.2,C语言中的数据类型,字母e之前的小数中,小数点前的数字为0,小数点后第一位数字不为0的表示形式 例如: 123.456可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e,规范化的指数形式,3.2.1,常量与变量,小数部分,指数,数符,例:3.1415926,0.31415926e1,0.123456e3,3.2.1,在程序执行过程中其值不能被改变的量。,常量与变量,1 常量,常量可分为不同类型,常用的有以下四种: 整型常量 实型常量 字符型常量 字符串常量, 十进制整数, 八进制整数

10、,包括符号“+”与“-”,07,以数字0开始。如0123,3.2.1,常量与变量,整型常量,包括符号“+”与“-”,09。如30、-128等, 十六进制整数,包括符号“+”与“-”,09、AF,以0 x开始。如0 x123、0 xA6,3.2.1,常量与变量,整型常量,长整型数的表示: 在整型常量的后面加一个字母l或L。 如:345L 无符号整型数的表示: 在整型常量的后面加一个字母U。 如:234u,整型常量在内存中存储时(VC+6.0中)的处理规则:, 若数值在-21474836482147483647范围内,认为是int型的,自动分配4字节存储空间;, 若超过了上述范围,而在long l

11、ong范围内,则认为是long long型的,分配8字节存储空间;, 若在一个整型常量后面加上字母L或l,则认为是long int型常量,自动分配4字节存储空间;如:123L、432L、0l等。,3.2.1,常量与变量, 十进制小数形式, 指数形式(科学记数法),包括符号“+”与“-”,09,小数点“.”以及e(或E)。如12.3e2, 在符号e(或E)的前面必须要有数字。 e(或E)的后面的指数必须为整数。,注意,必须要有,指数形式实型常量 12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 , .e3,3.2.1,常量与变量,实型常量,包括符号“+”与“-”,09

12、以及小数点“.”。如12.7、-12.7,3.浮点型数据的舍入误差,运行结果: a=3.141593,转义字符:一个以字符开头的字符序列,普通字符:用单引号括起来的一个字符,如: a 、A 等,转义字符及其作用,3.2.1,常量与变量,字符型常量,【例3.3】,例 转义字符举例(ch2_001.c,ch2_004.c) int main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); return 0; ,运行结果:(屏幕显示) A B C I say:”How ar

13、e you?” C Program Turbo C,3.2.1,常量与变量,用一对双引号括起来的一个字符序列,如: “How do you do?”、“China”、“a”、“$123.45”等,存储:系统自动为字符串常量后面加上“0”作为字符串结束标志,使所占内存单元多一个,但字符串常量的长度不变。,3.2.1,常量与变量,字符串常量,3.2.1,常量与变量,字面常量(直接常量) 从其字面即可判断其值。,符号常量 使用专门的符号来代表一个常量。,符号常量的定义 #define ,符号常量定义举例 #define PI 3.1415926 #define STAR *,说明:符号常量一般使用大

14、写英文字母表示,以区别一般用小写字母表示的变量,注意:符号常量不能赋值! STAR = #,3.2.1,常量与变量,【例3.2】 在程序中使用符号常量。,运行结果: total=300,符号常量的使用能给程序员带来哪些好处?,含义清楚;一改全改,#define PRICE 30 int main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); return 0; ,在程序执行过程中其值可以被改变的量,2 变量,3.2.1,常量与变量,#define PRICE 30 int main() int num,tot

15、al; num=10; total=num*PRICE; printf(total=%d,total); return 0; ,变量,变量四要素,变量的标识符。用来区分不同的变量。 变量名应遵循标识符的命名规则。,TEXT,变量名,为存储不同类型的数据,变量分为不同的类型。,在某一时刻,变量有一个确定的值。,用来保存其值。 不同类型的变量占用存储空间的大小不同。,TEXT,类型,TEXT,变量值,存储空间,3.2.1,常量与变量,变量名、类型、变量值、存储空间之间的关系,杯 中 物 质,物 质 性 质,杯 子,变量,34、25,整型,变 量 名,变 量 值,变 量 类 型,容器的空间,变量的存

16、储空间,3.2.1,常量与变量,在C语言中,要求对所用到的变量使用前必须先强制定义,即:先定义,后使用。, 能按名字使用变量 凡未被事先定义的用户标识符,系统不把其认作是变量名 以便分配相应的存储空间 定义时指定了变量的类型,在编译时就能为变量分配相应的存储单元 检查运算是否合法 定义时指定了每一个变量的类型,便于编译时据此检查程序中对其进行的运算是否合法,数据类型 变量名1,变量名2,变量名n;,变量的定义,3.2.1,常量与变量,整型变量的定义,【例3.3】 整型变量的定义与使用。 #include int main() int a,b,c,d; unsigned u; a=12;b=-2

17、4;u=10; c=a+u;d=b+u; printf(“ a+u=d, b+u=dn”,c,d); return 0; ,运行结果为: a+u=22 , b+u=-14,变量的定义一般放在一个函数开头的声明部分,可以同时定义多个同类型的变量,各变量之间用逗号分隔,定义变量只是为变量分配存储空间,在未对这 些变量赋值前,这些变量中(即存储空间中)的值是随机的;,3.2.3 整型变量,实型变量的定义,【例3.4】 实型变量的定义与使用。 #include “stdio.h” void main() float i; double j; i=4444.444444; j=4444.44444444

18、44444; printf(“i=%fnj=%fn”,i,j); return 0; ,3.2.4 实型变量, char c1,c2; c1=a; c2=b; printf(“c1=cn,c1); printf(“c2=cn”,c2); ,一个字符变量只能存放一个字符。实际上并不是把该字符本身存入内存单元中,而是将该字符对应的ASCII码存入内存单元中,3.2.4 字符型变量,在内存中字符数据的存储形式与整型数据类似,这就使得字符型数据和整型数据之间可以通用。即一个字符数据既可以字符形式输出,也可以整数形式输出。,3.2.4 字符数据在内存中的存储形式及其使用方法,以字符形式输出时,系统先将内

19、存单元中的ASCII码转换成相应字符,然后输出。,以整数形式输出时,直接将ASCII码作为整数输出。,因此,可以对字符数据进行算术运算,这时相当于对其ASCII码进行算术运算。,【例3.4】 给字符变量赋整数值。 #include int main( ) unsigned char c1,c2; c1= 97;c2= 98; printf(“%c %c n”,c1,c2); /*以字符形式输出*/ printf(“%d %d n”,c1,c2); /*以整数形式输出*/ return 0; ,运行结果为: a b 97 98,【例3.8】 大小写字母转换。 #include int main(

20、 ) char c1,c2; c1= A; c2=c1+32; printf(“c dn”,c2,c2); ,C语言允许字符数据与整数直接进行算术运算,可以相互赋值。,运行结果为: a 97,3 常变量,3.2.1,常量与变量,const 数据类型 变量名=数值;,const int a=30;,常变量与常量的区别:常变量具有变量的基本属性,即有名字、类型、占内存单元。常变量是有名字的不变量,而常量是没有名字的不变量。,常变量与符号常量的区别:符号常量不分配内存单元,在预编译后,符号常量就不存在了;常变量要占内存单元,有变量值,只是其值不能改变。,C运算符 算术运算符 + - * / + -

21、关系运算符 = ! j = i+; printf(“%d %dn”,i,j); i = 0; j = +i; printf(“%d %d”,i,j); return 0; ,1 1,区分: j=i+1; j=+i;,1 0,用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子, 称为C算术表达式。 如: a*b/c-1.5+a,x+sqrt(0.25*y)/(abs(a+b)-3.6),3.2.7 运算符和表达式,3. 算术表达式,教学进程,教学进程,表达式求值,(1)先按运算符优先级别的高低来执行; (2)在一个运算对象两侧的运算符的优先级别相同,则按规 定的“结合方向”处理。详见P

22、378,常量、变量、函数等,运算规则:不同类型数据运算时自动转换成同一类型,4 不同类型数据间的混合运算,char ch; int i; float f; double d;,ch/i + f*d - (f+i),注意:系统所进行的类型转换并不改变原数据的类型,只是在运算过程中将其值变成同类型后再运算。,(double) a 将a的值转换成double类型 (int)(x+y) 将x+y的结果转换成int类型 (int) x+y 将x的值转换成int类型后与y进行相加 (float)(5%3) 将5%3 的值转换成float类型,在强制类型转换过程中,并不改变原变量的类型,只是在运算过程中将其

23、值转换类型后再运算。,(类型名)(表达式),5 强制类型转换运算符,【例3.8】 强制类型转换。 #include int main( ) float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%dn”,x,i); return 0; ,运行结果为: x=3.6,i=3,5 强制类型转换运算符,C语句,3.3, 一条语句经编译后产生若干条机器指令。, 一个函数的执行部分是由若干条语句组成的。, C语句都是用来完成一定的操作任务的。,C语句的分类,C语句分为5类:控制语句、函数调用语句、表达式语句、复合语句、空语句。,(1) 控制语句 用于完成一定的控制

24、功能 if ( ) else switch ( ) for ( ) do while ( ) while ( ) break continue return goto 标号 说明:“( ) ”中是一个判断条件, “”表示内嵌的语句。,今后学习的重点哦!,(3) 表达式语句 由一个表达式加一个分号构成 赋值语句:赋值表达式加一个;号 如:s=3.1415*r*r; i+;,(2)函数调用语句 由一个函数调用加一个分号构成 如:printf(“This is a C statement.”);,(5)复合语句 用“”括起来的若干个语句 z=x+y; t=z/100; printf(“%f”,t);

25、 ,(4) 空语句 只有一个分号,什么都不做,例如: for(i=0;i=10;i+) ;,(1)复合语句的 之外不能有分号 (2)复合语句中可以是简单语句、 复合语句,空语句。,用作转向点,或为循环语句提供空体,1. 赋值运算符“” 作用:将一个数据赋给一个变量,常量、变量或表达式,只能是变量,不能是常量或表达式,例 3=x-2*y; a+b=3;,例 a3; a(a+b)*c,赋值语句,3.3.2,2. 复合的赋值运算符 赋值运算符前面加上其它运算符,如 += -= *= /= %= = = int i; i=10; f=i; 则 f=10.0,例2 int i; i=2.56; /结果i

26、=2;,- 类型转换 P62-63 自学,结合方向:自右向左,例: a=b=c=5 a=(b=5) a=5+(c=6),/* 表达式值为5,a,b,c值为5 */,/* b=5;a=5 */,/* 表达式值11,c=6,a=11 */, 区别赋值表达式和赋值语句的不同,如: if (a=b)0)t=a; if(a=b;)0)t=a;,给定义的部分变量初始化 如:int a,b,c=5;,对几个变量赋同一初值 如:int a=3,b=3,c=3; int a=b=c=3(),定义变量的同时给变量初始化 如: int a=3; char c=a;,6,变量赋初值,注意:初始化不是在编译阶段完成的,

27、而是在程序运行时执行到本函数时赋初值的。,数据的输入与输出是相对于计算机而言的。其中: 输出: 从计算机向外部设备( 显示器、打印机等)输出数据; 输入: 从输入设备(键盘、鼠标、扫描仪等)向计算机输入 数据。,3.4.3,数据输入输出的概念及在C语言中的实现,C语言本身不提供输入输出语句,输入和输出操作是由C函 数库中的系统函数来实现的。,例如: 字符输入函数: getchar 字符输出函数:putchar 格式输入函数: scanf 格式输出函数: printf 字符串输入函数:gets 字数串输出函数:puts,数据输入输出的概念及在C语言中的实现,注意:若在程序中使用C语言所提供的输入

28、或输出函数,应该在程序开头使用包含命令(include)将头文件”stdio.h”包含进来。,#include “stdio.h” 或 #include ,3.4.3, printf (格式控制符,输出项列表) ;, 格式控制符 ,用一对双引号括起来的字符串,包括两种信息: 格式说明 由“%”和特定字符组成,用于说明输出项目所采用的格式,如:%d、%c、%f等 普通字符 作为说明性的文字、符号等,照原样显示出来。 输出项列表 指出所要输出的内容,可以是常量、变量或表达式。,Printf函数,3.4.3, 例如: printf(a=%d b=%fn,a,b) ;,功能:向终端输出若干个类型任意的

29、数据, d,教学进程,按十进制整型数据的实际长度输出有符号数。,2. 基本的格式字符,printf(“%dn%d”,12,-123);, %c,仅输出一个字符。,输出时,可以指定输出数据的宽度,%md,printf(“%3dn%5d”,1234,-123);,char ch=a; printf(“%c”,ch);,m表示输出的整型数据所占总宽度(即列数),其中: 当实际数据的位数不到m位时,数据前面将用空格补满; 若实际数据位数大于m,则以数据的实际位数为准进行输出。,输出时,可以指定输出数据的宽度,%mc,short a=121; int b=377; printf(“%c %c”,a,b)

30、;, %f,以小数形式输出一个实数(含单双精度数)。 整数部分全部输出,并输出6位小数。, %e 或%E,以指数形式输出一个实数(含单双精度数)。 小数点前仅1位非0数字,并输出6位小数,指数部分占5位。, %s,输出一个字符串。,printf(%sn, CHINA); 输出的结果是字符串 CHINA,printf(%fn, 1/3); 0.333333,m.nf 或 -m.nf,格式说明符中的m表示整个数据所占的宽度,n表示小数点后面所占的位数,数值长度小于m,左端补空格。 如果在小数点后取n位后,所规定的数据宽度m不够输出数据前面的整数部分(包括小数点),则整数部分按实际的位数进行输出。,

31、printf(%en,123.456); 1.234560e+002,P73-P74自学,【例3.9】 输出实数时,指定小数位数。,# include int main ( ) float f=123.456; printf(%f%10f%10.2f%.2f%-10.2fn,f,f,f,f,f); return 0; ,运行结果: 123.456001123.456001123.46123.46123.46 ,几点说明:,编译程序只是检查printf函数的调用形式,不分析格式字符串,如果格式字符与输出项类型不匹配,不进行类型转换; 格式字符要用小写字母; 格式控制字符串中可以包含转义字符; 格

32、式控制字符串中的普通字符原样输出; 输出项的参数除了常数,变量外还可以是表达式、函数调用如:printf(“max=%dti=%dn”,max(a,b),i+);,int i=321; float f=123.456; printf(“%5.2fn”,i); printf(“%5d:”,f);,403022178.21 0, scanf(格式控制符,变量地址列表), 作用 按格式控制符的要求将数据从终端送到变量地址所指定的存储单元。 说明 “格式控制符”的含义同printf函数,说明输入数据应使用的格式。 “变量地址列表”是由若干个地址组成的,可以是变量的地址或字符 串的首地址。,scanf函

33、数,3.4.3,变量地址,变量的地址通过对变量名“求地址”运算得到,形式: float b; scanf(“%d%f”, ,12,12.34, float b,c; printf(“input a,b,c:”); scanf(“%d%f%f”, ,input a,b,c:12 3 4 A=12,b=3.000000,c=4.000000,scanf(“%a,%b,%c”,input a,b,c:12,3,4 A=12,b=3.000000,c=4.000000,scanf(“a=%d,b=%f,c=%f”,说明:,(1) 用%c格式输入字符时,一次接收一个字符,空格字符是有效字符:如 scan

34、f(%c%c%c, 若输入:x y z 则a得到x,b得到空格,c得到y,只有输入:xyz 才能使a得到x,b得到y,c得到z,(2) 在输入数值数据时,如输入空格、回车、Tab键或遇非法字符(不属于数值的字符),则认为数据结束。如 scanf(%d%c%f, 若输入:1234a123o,26 则a得到1234,b得到a,c得到123,(3)与格式输出一样,格式输入各格式说明符与内存地址表中的变量地址在个数、次序、类型方面必须一一对应,字符数据的输入输出,3.4.5,字符数据的输出函数putchar, 格式 putchar(c) 作用 将字符c显示在显示器上。 说明 (1) c可以是字符型或整型的常量、变量、表达式。 (2) c可以是转义字符型,如: putchar(101); 输出字符A putchar(); 输出字符单引号 putchar(015); 输出回车 putchar (n); 输出换行,putchar(a); putchar(97); putchar(66+32);,#include int main ( ) char a,b; a=66;b=O; putchar(a);putcha

温馨提示

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

最新文档

评论

0/150

提交评论