《程序设计初步(ZHP).ppt》由会员分享,可在线阅读,更多相关《程序设计初步(ZHP).ppt(50页珍藏版)》请在三一办公上搜索。
1、1,复习:,算法 解题的方法和步骤。理解算法在程序设计中的重要性。集成环境的使用(C语言源程序的调试步骤)编辑、编译、连接、运行。,2,第2章 程序设计初步,3,1.程序的基本结构 2.数据类型 3.算术运算符和算术表达式 4.赋值运算符和赋值表达式 5.数据类型的转换 6.数据的输出和输入 7.数学函数 8.简单程序设计,内容:,重点:1.了解C语言源程序基本结构;2.熟悉基本的数据类型,能进行算术表达式和赋值表达式的计算;3.能进行顺序结构的编程(变量的正确用法、输入输出函数的使用等),4,简单程序:将任意两个整数中,大的数输出。,/*功能:两个整数比较大小,将大的数输出*/#includ
2、e/*文件包含处理*/int max(int x,int y)/*比较大小*/int z;/*定义变量类型*/if(xy)z=x;/*比较大小*/else z=y;return(z);/*将大的值返回*/,int main(void)/*主函数首部*/int a,b,c;scanf(“%d%d”,5,C/C+结构化程序的基本结构,2.1 程序的基本结构,注意:1:程序的运行规则和书写程序的风格;2:预编译命令的正确使用。,6,1,1,带符号的机器数,-77,原码,反码,补码,数据在计算机中的表示方式,7,数值的表示方法原码 反码 补码,正数的原码、反码和补码相同1 的补码 0 000 0000
3、 0000 000132767 的补码 0 111 1111 1111 1111(215-1,2个字节的存储单元能表示的最大正数)负数的原码、反码和补码不同-1原码 1 000 0000 0000 0001 反码 1 111 1111 1111 1110 原码取反补码 1 111 1111 1111 1111 反码1,8,原码 反码 补码,32767补码 0 111 1111 1111 1111-32767原码 1 111 1111 1111 1111反码 1 000 0000 0000 0000 原码取反补码 1 000 0000 0000 0001 反码1-32768=-32767-1补码
4、 1 000 0000 0000 0000(2个字节的存储单元能表示的最小负数),9,-32768-1 0 1 32767,32767 0111 1111 1111 1111 1 0000 0000 0000 0001 0 0000 0000 0000 0000-1 1111 1111 1111 1111-2 1111 1111 1111 1110-32767 1000 0000 0000 0001-32768 1000 0000 0000 0000,32767+1=32768?1000 0000 0000 000=-32768-32768-1=-32769?0111 1111 1111 11
5、11=32767,10,31 30 24 23 22 0,浮点数,如:将十进制数“55”以浮点数格式存放(55)10=(110111)2=0.110111*26,数据在计算机中的表示方式,11,数据类型,2.2 数据类型,数据是程序操作的对象,数据的类型决定了这个数据在内存的存储形式、取值范围和能够对它进行的操作。,示例1:编程输出5和6的和与平均值(保留两位小数)。#include int main(void)int a,b,sum;/*定义变量a,b,sum为整型*/float av;/*定义变量av为实型*/a=5;b=6;sum=a+b;av=sum/2;/*计算和与平均值*/prin
6、tf(“sum=%d,av=%.2fn”,sum,av);/*输出*/return 0;,结果:sum=11,av=5.00,选用合适的数据类型及正确的输出格式。,12,1.基本数据类型,int 整型 float 单精度浮点型char 字符型 double 双精度浮点型,short int(或short)短整型long int(或long)长整型unsigned int 无符号整型unsigned short 无符号短整型unsigned long 无符号长整型unsigned char 无符号字符型,2.2 数据类型,13,(1)整型,2.2 数据类型,数据类型最小取值范围,14,(2)浮点
7、类型,float型数据在内存中占用4个字节(32位),提供7位有效数字,可能的取值范围在10-381038;double型数据占8个字节,提供1516位有效数据,可能的取值约10-30810308。,2.2 数据类型,15,(3)字符型,字符型数据存储时占用8位,它实际存储的是字符对应的ASCII码(美国标准信息交换码)。如:一个char型数据A,其ASCII码为65,故实际存储的内容是65。char型数据取值范围为-128127,unsigued char型数据取值范围为0255。字符型数据与整型数据可以通用,字符型数据所有的性质与一字节整型量相同。,2.2 数据类型,16,表 ASCII码
8、字符表,17,/*程序名:2_5.cpp*/*功能:认识常量和变量、符号常量的使用,计算圆的周长和面积*/#include#define PI 3.1415926/*定义PI为符号常量*/int main(void)float r,s,ar;/*定义变量的类型*/scanf(“%f”,2.2 数据类型,2.常量,18,2.常量(续),在程序运行过程中其值不能被改变的量常量包括直接常量和符号常量。用一个标识符代表一个常量符号常量。符号常量的定义:#define 标识符 常量,2.2 数据类型,19,2.常量(续),1)整型常量即整数。整型常量可以使用三种形式表示:十进制数、八进制数、十六进制数。
9、十进制数:如123、-60、0。八进制数:以0(零)开始的数据是八进制数。如0123代表八进制数123。十六进制数:以0 x开始的数是十六进制数。如-0 x60代表十六进制数-60,0 x123代表十六进制数123。,2.2 数据类型,20,2)实型常量 实数有两种表示形式。即:十进制形式:包括整数部分、小数点、小数部分,当整数或小数部分为0时可以省略,但小数点不能省略。如128.0、.128、128.5、128.、0.0等都是十进制数形式。指数形式:包括尾数、字符e(或E)、指数。它适用于表示较大或较小的数。e之前必须有数字,且e后面的指数必须为整数。如1.28e4或1.28E4都代表128
10、00。,2.2 数据类型,注意:如果实型常量后缀是“f”或“F”,则被当成float型,否则,C语言编译系统总是将实型常量处理成双精度的。,21,示例:(调试时将出现警告错),#include int main(void)float a,b,c,ave;a=39.5;b=37.6;c=40.2;ave=(a+b+c)/3;printf(“三个数的平均数是:%f“,ave);return 0;,22,3)字符常量 字符常量是用单引号括起来的一个字符,如A、a、?、0等。字符常量的值的是机器字符集中字符的数字值,如字符常量0,其ASCII为48,所以存储的实际内容为48。字符常量可以象数值一样参与
11、运算。如:a-32转义字符:一组以“”开头的特殊字符序列。如:n,2.2 数据类型,23,常用转义字符表,24,4)字符串常量 一对双引号括起来的字符序列。如:“How do you do.”,“ABCD!”等等字符串在存储时末尾被自动加上字符0作为串结束的标志。注意区分字符常量与只包含一个字符的字符串常量,2.2 数据类型,25,3.变量和内存的概念,变量:程序运行过程中其值可以改变的量。系统为程序中的每一个变量开辟存储单元。变量名:字母开头,后跟字母、数字和下划线组成。C语言中的关键字不能作为变量名。,2.2 数据类型,#include#define PI 3.1415926 int ma
12、in(void)float r,s,ar;scanf(“%f”,说明:变量必须先定义后使用;变量中存储的只能是一个数据,往变量中存放数据的操作称为赋值。变量改变的是其值,而不是变量名。,26,4.变量定义和赋初值,变量定义int a,b,c;/*指定a,b,c为整型变量*/float w;/*指定w为单精度实型变量*/double z;/*指定z为双精度实型变量*/char c1,c2;/*指定c1,c2为字符型变量*/,2.2 数据类型,变量赋初值int i=0;/*指定i为整型变量,初值为0*/int a=5,b=5,c=5;/*指定a,b,c的初值为5*/float ep=0.001;/
13、*指定ep的初值为0.001*/char c=a;/*指定c的初值为a*/,类型标识符 变量名1=常量1,变量名2=常量2,;,27,2.2 数据类型,注意:变量的“名”和变量的“值”不同,变量的“名”是该变量所代表的存储单元的标志,而变量的“值”是指存储单元中的内容。如:int a;执行a=5;执行a=10;定义a 第一次赋值 第二次赋值,a的值不定,5,10,28,算术运算符,2.3 算术运算符和算术表达式,C/C+语言提供了如下算术运算符:(加法运算符)(减法运算符)*(乘法运算符)(除法运算符):两个整数相除结果还是整数%(求余运算符):求余要求%两侧都是整型数据优先级和结合性:算术运
14、算符的优先级与代数中相同,即先乘除和求余,后加减。结合性是从左到右。,29,2.3 算术运算符和算术表达式,(1)求三个数的算术平均值代数表达式:ave=算术表达式:ave=(a+b+c)/3(2)根据三角形三边计算三角形面积代数表达式:算术表达式:sqrt(s*(s-a)*(s-b)*(s-c)(3)根据半径计算圆的周长代数表达式:s=2r算术表达式:s=2*3.14159*r,算术表达式,30,赋值运算符及表达式,2.4 赋值运算符和赋值表达式,简单的赋值运算符:把一个表达式的值赋给一个变量,表达式格式为:变量名=表达式 如:i=1 n=n+1 sum=i1+i2,31,2.4 赋值运算符
15、和赋值表达式,复合的赋值运算符:算术运算符与“=”结合在一起而形成。例如:,赋值运算符(续),i+=2 等价于 i=i+2 a*=b+5 等价于 a=a*(b+5)x%=3 等价于 x=x%3,赋值运算符按照“自右向左”的结合顺序 例如:a=b=8,a=(b=8),32,下面程序段的输出结果是:int a=5,b=5;a%=b+=a+=(a+b);printf(“a=%d,b=%d”,a,b);,练习1:,结果:a=15,b=20,33,下面程序段的输出结果是:int a=10,b=10;a+=b-=a*=b/=3;printf(“a=%d,b=%d”,a,b);,练习2:,a=3,b=-27
16、,34,2.5数据类型的转换,运算符两侧的数据类型不同时,它们会按照提升规则自动进行类型转换。进行赋值运算时也发生类型转换,右侧的值转换为左侧的值。任何表达式中都可以强制类型进行转换。其形式为:(类型名)表达式,doublefloat long unsigned intchar,short,数据类型的转换,如:计算a+3.2-15/2*12.7X=11.3,例如:下列程序段执行后i,x的值分别是多少?int i;double x=2.6;i=(int)x;,35,1.格式输出函数printf,2.6 数据的输出和输入,printf函数的一般调用格式:printf(格式控制,输出表列);功能:p
17、rintf函数可以将任意类型的多个数据输出到标准输出设备上(一般为显示器)。,36,普通字符,格式说明,转义字符,格式控制,由双引号括起来的字符串,由“%”和格式字符组成,它的作用是将输出的数据按照指定的格式输出。,需要原样输出的字符。,用于控制输出。,格式符:见P100表6-5,37,2.常用格式符,2.6 数据的输出和输入,示例1:#include int main(void)int a=-1,b=25,c=125;long x=356142;printf(%d,%5dn,a,b);printf(%5d,%2dn,c,c);printf(%ld,%dn,x,x);return 0;,输出结
18、果为:,38,#include int main(void)int a,b;float x;char c;a=123;b=-1;x=3.14;c=A;printf(%d,%4dn,a,a);printf(%d,%x,%o,%un,b,b,b,b);printf(%c,%dn,c,c);printf(%f,%6.1fn,x,x);return 0;,写出程序运行结果,示例2:,39,-1在内存中的存放,运行结果,有一个空格,int a,b;float x;char c;a=123;b=-1;x=3.14;c=A;printf(%d,%4dn,a,a);printf(%d,%x,%o,%un,b,
19、b,b,b);printf(%c,%dn,c,c);printf(%f,%6.1fn,x,x);,有3个空格,40,3.格式输入函数scanf,2.6 数据的输出和输入,scanf函数的一般调用格式:scanf(格式控制,地址表列);scanf函数的功能是按照指定的格式输入数据,可以输入任意类型的多个数据。格式控制与printf函数含义相同,它由若干个格式说明构成,其作用是控制转换输入数据的类型。地址表列由若干个地址构成,它们可以是变量的地址,也可以是字符串的首地址(以后讲)。格式符:见P102表6-6,41,普通字符,格式说明,转义字符,格式控制,由双引号括起来的字符串,由“%”和格式字符组
20、成,它的作用是将输入的数据按照指定的格式送入指定变量所占的存储单元。,需要原样输入的字符。,用于控制输入。,42,4.如何分隔数据,2.6 数据的输出和输入,用隐含的分隔符。在输入数据中用空格或换行符分隔数据。scanf(%d%d%d,输入数据 3 4 5 或输入 3 4 5 则a=3,b=4,c=5,使用显示分隔符。在格式说明符中还可以有其它字符,在输入字符时应输入与这些字符相同的字符。scanf(%d,%d,%d,输入数据 3,4,5 则 a=3,b=4,c=5,43,示例:C语言的表达式:sqrt(s*(s-a)*(s-b)*(s-c)头文件:math.h,2.7 数学函数,数学函数:,
21、44,常用数学函数,2.7 数学函数,45,分析:程序需要三个整型变量分别存放三个整数,考虑到三个整数的平均数不一定为整数,所以存放平均值的变量定义为实型。,2.8 简单程序设计,/*程序名:2_6.cpp*/*功能:求三个整数的平均数*/#includeint main(void)int a,b,c;/*定义三个整型变量分别存放三个整数*/float ave;/*定义一个实型变量分别平均值*/scanf(%d,%d,%d,【例2-1】求三个整数的平均数。,46,2.8 简单程序设计,【例2-2】输入三角形的三边长,求三角形的面积。,分析:数学模型为,其中s=(a+b+c)/2,a,b,c分别
22、为三角形的三条边,且假设通过键盘输入的数值合法。,47,/*功能:输入三角形三边,计算面积*/#include#include int main(void)float a,b,c,s,area;printf(“请输入三角形的三条边的数值:n);scanf(%f,%f,%f,48,补充 程序解析,补例1:分段计算水费要解决的问题:输入计算分段函数输出,并保留2位小数,49,求分段函数,#include int main(void)double x,y;printf(Enter x(x=0):n);/*输入提示*/scanf(%lf,Enter x(x=0):9.5f(9.500000)=12.67,Enter x(x=0):15f(15.000000)=20.00,数据必须输入吗?,Enter x(x=0):21.3f(21.300000)=42.75,50,本章小结,2.9 本章小结,C/C+语言结构化程序的基本结构、运行规则及书写规则。基本数据类型掌握算术运算符和赋值运算符的运算规则(包括不同数据类型的相互转换)、优先级和结合性。掌握printf()和scanf()函数的应用,能进行简单的程序设计。,整型实型字符型,常量、变量的概念、正确的应用等。,