《顺序程序设计》PPT课件.ppt

上传人:za****8 文档编号:14546886 上传时间:2020-07-23 格式:PPT 页数:49 大小:942.06KB
收藏 版权申诉 举报 下载
《顺序程序设计》PPT课件.ppt_第1页
第1页 / 共49页
《顺序程序设计》PPT课件.ppt_第2页
第2页 / 共49页
《顺序程序设计》PPT课件.ppt_第3页
第3页 / 共49页
资源描述:

《《顺序程序设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《顺序程序设计》PPT课件.ppt(49页珍藏版)》请在装配图网上搜索。

1、第3章 顺序程序设计,数学科学学院:汪小平 ,一、C语言的数据类型(1),C 数 据 类 型,基本类型,构造类型,指针类型,空类型 void,字符型 char,枚举类型 enum,整型,实型,数组,结构体 struct,共用体 union,一、C语言的数据类型 -为什么需要多种数据类型?(2),CPU运行的程序和处理的数据均在内存。程序要能执行,必须读入内存。CPU处理数据的基本单位是内存字节。内存可以想像为由字节构成的非常长的一排房间。 数据存储在计算机中,总是以二进制形式存在的。当处理这些二进制时,必须知道它代表着什么,而要知道它代表什么,通常需要知道数据在存储在内容中的起始地址、连续字节

2、数和格式(编码)。 在C语言中,体现占用的连续字节数和格式的就是数据类型。因此,对数据类型的深入理解是编写程序的基础。,二、常量与变量-C语言中的常量(1),在程序运算中,值不能改变的量称为常量,反之称为变量。,123、a、#、3.1416 都是常量 可以按以下方式用标识符定义常量(推荐): #define 标识名 常量值,#include /第1行 #include /第2行 #define PI 3.1416/第3行 int main( )/第4行 double s;/第6行 s=sin(PI/3);/第7行 printf(sin(pi/3)=%lf,s);/第8行 return 0;/第

3、9行 ,二、常量与变量- C语言中的变量(2),C语言常量不占用内存,标识符在编译器预处理时就替换成所代表的值。而变量对应着内存存储单元,因此可以在程序运行时写入或修改。,右边定义了一个整型变量:int price; price = 12345;,“price”代表四个字节整体,标识符构成规则:只能由52个英文字母、10个数字和1个下划线构成,而且标识符的第一个字符不能是数字。(注意:区分大小写),二、常量与变量- C语言中的变量(3),关于标识符的几点注意: 标识符中不能出现除字母、数字和下划线以外的字符,下面都是不合法的标识符 M.R.John、123、#33、ab 、3D34 C语言要区

4、分大小写,下面是几个不同的标识符 student和Student、int和Int、Sin和sin 标识符不能与系统预定义标识符相同 比如不能用float作为变量名,但Float可以(但不建议) 标识符尽量做到“见名知意”,增强程序的可读性 i、j、k、student_name、StudentName、MsgBox,三、整型数据-整型常量的表示方法(1),C语言中,整型数据有十进制、十六进制、八进制三种表示方法。 r进制的数转化为十进制的公式如下:,十进制数转化为r进制的方法举例如下:,123,8,3,15,8,1,7,1,模r取余法,小数的转换,r进制的小数转化为十进制小数的公式如下:,十进制

5、小数转化为r进制小数的方法举例如下:,乘r取整法,0.6 0.8 0.4 0.2 0.6,4 6 3 1,思考:把3.1存入内存,然后再读出来,为什么变为:3.0999999?,三、整型数据-整型变量的存储(2),数据在内存中是以二进制表示。10的二进制是1010,实际上,有符号整数在内存中是以补码表示。正整数的补码就是它的原码,而负整数的补码是其相反数的原码求反再加1(即反码加1)。,例如求-1的补码如下: -1的相反数为:1 1的原码为:00000000000000000000000000000001 取反可得: 11111111111111111111111111111110 再加1可得

6、:11111111111111111111111111111111,三、整型数据-整型变量的分类(3),C语言的整型变量类型分为以下几种: 基本整型:int (4字节) signed int 与 unsigned int 短整型:short int,可以简写为short (2字节) signed short int 与 unsigned short int 长整型:long int,可以简写为long (4字节) signed long int 与 unsigned long int 双长型:long long int, 一般写作long long (8字节) signed long long

7、 int 和unsigned long long int,三、整型数据-整型变量的分类(4),容易得出各类数据的表示范围:,int: -231231-1 -2147483648 2147483647 unsigned int:0232-1 04294967295 short: -215215-1 -3276832767 unsigned short:0216-1 065535 long:-231231-1 -2147483648 2147483647 unsigned long:0232-1 04294967295 long long :-263263-1 -92233720368547758

8、08 9223372036854775807 unsigned long long: 0264-1 018446744073709551615,三、整型数据-整型变量的定义、运算与溢出(5),#include int main( ) int a,b; a=2147483647; b=a+1; printf(na=%d,b=%d,a,b); return 0; ,输出结果为:a=2147483647,b=-2147483648,三、整型数据-整型常量的类型(6),一般整型常量主要以数的范围来区分,例如123可认为int、short、long、unsigned long等 如果要把一个整型常量强制

9、看作unsigned int型,可以在其后加u或U 如:123u 或 123U 如果要把一个整型常量强制看作long,可以在其后加l或L 如:123l 或 123L,四、浮点型数据-浮点型常量的表示方法(1),十进制小数表示:0.123、.123、-.234、123.23 指数形式:123E3、1.23e+5和123e3均代表123103,1.23e+5 是规范化的指数形式,C语言的输出是规范化的指数形式。,浮点型数据在内存分为两部分存放:小数部分和指数部分,小数部分位数越多,数据越精确;而指数部分位数越多,表示数的范围越大。 在float类型中,一般24位表示小数(包括符号)。,四、浮点型数

10、据-浮点型变量分类及常量类型(2),float:4字节,有效数字67位,范围(阶数)-38+38 double:8字节,有效数字1516,范围(阶数)-308+308 long double:16字节,有效数字1819位,范围(阶数) -4932+4932,浮点数存储与运算时有舍入误差。通常不用浮点数比较相等。 C编译系统一般把浮点常量看作双精度作运算,这样运算结果更精确,但速度慢。若在常量后加上f或F,可强制要求看作单精度常量。 123.12 与 123.12f的区别?,fabs(a b) eps,五、字符型数据-字符型常量(1),字符型常量中用单引号括起来的一个字符。如a、A、等。 另外一

11、种类型的常量称为转义字符,以开始。 n:换行,ASCII代码为10 t:水平制表符(跳到一下tab位置),ASCII代码为9 b:退格,ASCII代码为:8 r:回车,回到本行开头,ASCII代码为:13 f:换页,移到下页开头,ASCII代码为:12 :代表反斜杠,ASCII代码为:92 :代表单引号,ASCII代码为:39 ”:代表双引号,ASCII代码为:34 ddd:1到3位八进制代表的字符,012代表回车 xhh:1到2位十六进制代表的字符,xa代表回车,五、字符型数据-字符型常量(2),#include int main() printf(“ ab ct detgn”); prin

12、tf(“htibbj kn”); return 0; ,例:分析下面程序的输出。,五、字符型数据-字符变量及存储(3),一个字符变量用一个字节的内存存放,它在内存中是以其ASCII码表示的。下面两句等效:,char a; a=a; printf(a=%cn,a); a=97; printf(a=%cn,a);,C语言中的字符数据可以与数值进行混合运算 123+a-67,五、字符型数据-字符变量及存储(4),#include int main(void) char a; printf(Input a char:); scanf(%c, ,例:把从外界读入的一个字符进行大小写转换,P377 附录B

13、 0 9: 4857 A Z: 6590 a z: 97122,五、字符型数据-字符串常量(5),字符作为数值类型使用时(比如图像处理中的颜色),也分有符号或无符号,即signed和unsigned,它们的值域范围分别为:,-128127和0255,字符串常量是用双引号括起来的字符序列。,”how are you?”、”a”、”123”、”1.123E+123”,C语言没有专门的字符串类型,字符串的表示是用字符数组来实现。注意C语言字符串的末尾是字符0。,六、变量赋初值,变量在定义时,可以预先赋初值:,int a=12,b=0123,c=0 xff; float f=3.56; char ch

14、=t; int i1,i2,i3=2;,定义变量时,不能这样写:int a=b=c=3; 变量赋初值是在程序运行时进行的,如 int a=3; 等价于 int a; a=3;,七、各类数值型数据间的混合运算(1),当数据进行运算时,若两个数据之间的类型不一样,则按以下规则进行转换再进行运算(注意运算是从左向右依次进行,不是整体转换):,七、各类数值型数据间的混合运算(2),例:假设有以下定义: char ch; int i; long e; float f; double d; 试分析下列表达式的计算过程。 1、ch/i + f*d - (f+i) 2、 10+a+i*f-d/e,注意上述转换

15、在系统自动进行的,称为隐式转换。,八、运算符与表达式-C语言运算符简介(1),C语言的运算符可以分为13类: 算术运算符:+ - * / % + - 关系运算符: = != 逻辑运算符:! k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,八、算术运算符和算术表达式(4),+、- 不能用于常量和表达式,如5+,(a+b)+ +、 -结合方向: 自右向左 优先级:-、+、- *、 / 、% +、 -,-i+ i=3; printf(“%d”,-i+);

16、j+k;,等价于 -(i+),输出-3,等价于 (j+)+k;,+、-多数用于循环语句,或简单的自增、自减运算,一般避免运用+、-构造复杂的语句,如: (i+)+(i+)+(i+) 这样容易产生一些不必要的副作用。(可能同样的表达式在不同的编译器会得到不同的结果。),八、算术运算符和算术表达式(5),3、强制类型转换运算符 一般形式:(类型名)(表达式),(int)(x+y) (int)x+y (double)(3/2) (double)3/2 (int)3.6 14.5%3 int(14.5)%3,说明:强制转换得到所需类型的中间数据,原变量类型不受影响。较高类型向较低类型转换时可能发生精度

17、损失问题。,九、赋值运算符(1),赋值运算的作用是将一个数据(常量或表达式)赋给一个变量,格式为:变量标识符=表达式; 结合方向是自右向左,先运算表达式,再把结果赋给变量 赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,基本规则为(整型之间): 高类型向低类型数据之间赋值,按存储单元中的存储形式直接传送(低字节对齐); 低类型数据向高类型数据之间赋值,低字节对齐直接传送,并进行符号扩展; 类型之间转换的详细内容,大家可参看教材6264页,九、复合赋值运算符(2),种类:+=、-= 、*=、 /= 、%=、=、,说明赋值表达式可以作为左值,下面是几个例子:,十、逗号运算符和逗号表达

18、式,形式:表达式1,表达式2,表达式n 结合性:自左向右 优先级比赋值运算符低,逗号表达式的值是最后一个表达式的值,常用于for循环中,a=3*5,a*4 a=3*5,a*4,a+5 x=(a=3,6*3) x=a=3,6*a a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,C语句概述,先来看看C程序的构成:,十一、C语句概述,C语言的语句用来产生操

19、作指令,所以变量的声明和函数的声明都不是语句。C语言中的语句分为5类: 控制语句:用于控制程序的走向 if()else for() while() dowhile() continue break switch goto return 函数调用语句:调用其它函数模块的功能 例如:y=sin(x);ch=getchar(); 表达式语句:出现最多,由表达式加一个分号。而且任何表达式加一个分号都能构成一个语句 空语句:不做什么,单独一个分号构成一个语句 复合语句:用一对把一些语句括起来成为一个整体,又称分程序。,十二、关于赋值语句与C语言中的输入输出,C语言中的“=”是一个运算符,而其它语言一般不

20、是 赋值表达式可以存在其它表达式中 例如:if(a=b)0) t=a; 赋值语句与赋值表达式是有区别的 例如下面这一句错误的: if(a=b;)0) t=a; C语言本身没有输入输出语句,避免编译阶段处理与硬件有关的问题,可移值性好。C语言的输入输出通常由具体的C编译系统提供的,可能有些差异,但有些是标准的函数。 使用别的函数,一般要包含声明该文件的头文件,比如要使用标准输入输出函数,要在文件头添加: #include 或 #include “stdio.h”,语句不能嵌套,十三、字符数据的输入输出,首先介绍标准IO中的单字符输入输出函数。 1、putchar(char ch):向终端输出一个

21、字符。注意字符可以是转义字符。 例如:putchar(n); 2、ch=getchar():从终端输入一个字符 例如:putchar(getchar();,十四、格式输入与输出(一),C语言的格式输入输出比较烦琐,重点掌握最常用的规则。,一、printf函数 一般格式:printf(格式字串,输出表列); 格式字串可以包含格式说明和普通字符,格式说明要求数据按指定的格式输出,普通字符即需要按原样输出的字符。 例如:printf(“a=%d b=%d”,a,b); 格式说明=%+附加格式说明字符+格式字符,如%ld,十四、格式输入与输出(二),printf格式字符: % d,i:以带符号的十进制

22、形式输出整数(正数不输出符号) o:以八进制无符号形式输出整数(不输出前导符0) x,X:以十六进制无符号形式输出整数(不输出前导0 x),有x输出af用小写形式出现,而用X则以大写形式出现 u:以无符号十进制形式输出整数 c:以字符形式输出,只输出一个字符 s:输出字符串 f:以小数形式输出单、双精度数,隐含输出6位小数 e,E:以指数形式输出实数,用e则输出指数用e表示,用E则用E表示 g,G:选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0,用G时,输出若为指数形式,e大写,十四、格式输入与输出(三),printf的附加格式说明字符: % l:用于长整型整数,可加在格式符d、

23、o、x、u前面。 m(代表一个整数):数据最小宽度。 n(代表一个正整数):对实数,表示输出n位小数;对字符串,表示截取的字符个数(%m.nf,%m.ne)。 -:输出的数字或字符在域内向左靠。,注意:要用printf输出%,可以用%输出。实际上,若%后无格式符,%会作为一个字符输出。,例1 printf格式使用举例(1),#include int main(void) int i=-520; unsigned k=54000; printf(ni=%10o,k=%-8x,n,i,k); printf(n%10u,%dn,i,k); return 0; ,例2 printf格式使用举例(2),

24、#include int main(void) printf(n%3s,%7.2s,%.4s,%-5.3s.n, China,China,China,China); return 0; ,例3 printf格式使用举例(3),#include int main(void) float f=10/3.0; double d=10/3.; printf(n%f,%lf,%e,%g,f,d,f,f); printf(n%12.10f,%12.10lf,f,d); return 0; ,十四、格式输入与输出(四),二、scanf函数 一般格式:scanf(格式控制,地址表列); 格式控制的含义与printf相同,地址表列是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。 例如:scanf(“%d%d%d”, “ printf(请输入日期和时间(如1999.2.13 12:32:30):); scanf(%d.%d.%d %d:%d:%d, ,习题 P82:1、2、3、4、5、6、7、8,

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!