C语言程序设计课件模块2_第1页
C语言程序设计课件模块2_第2页
C语言程序设计课件模块2_第3页
C语言程序设计课件模块2_第4页
C语言程序设计课件模块2_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

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

文档简介

程序=数据结构+算法提示

2.1数据类型学习目标1、了解数据类型的划分标准2、掌握数据类型的分类C语言的数据类型分析案例2-1

C语言的数据类型分析分析日常生活中的一些数据适合用什么数据类型表达:学生姓名、学生性别、学生人数、学生成绩随堂练习C语言的数据类型:1、基本类型2、构造类型3、指针类型4、空类型知识链接C语言数据有常量和变量之分,它们分别属于以上这些类型。即常量有整型、实型、字符型等类型,变量也是一样。问题:什么是常量?什么是变量?提示学习目标1、掌握常量的类型和表示方法;2、掌握变量的三个要素和命名规则;3、掌握变量的定义和初始化方法。C语言中的数据,根据在程序运行过程中是否可以改变,分为常量和变量。2.2常量和变量在程序运行过程中,其值不能改变的量称为常量。常量一般用于给变量赋初始值,或作为运算式中的操作数等。2.2.1常量区分下列常量的类型:127,3.14159,‘¥’,“Sound”案例

2-2根据C语言的常量类型划分,127是整型常量,3.14159是实型常量,‘¥’是字符型常量,“Sound”是字符串常量。案例

分析说出下列常量的类型:“picture”,‘1’,2.0,123。随堂练习常量的分类通过书写形式来区分,常量可以分为以下几种:(1)整型常量,如127,-32768等。(2)实型常量,如3.14159,123.0等。(3)字符常量,如‘A’、‘¥’等。(4)字符串常量,如“Moonriver”、“Sunlight”等。(5)符号常量,即用符号(标识符)来代表一个常量,一般用大写字母表示。#definePI3.14159知识链接在程序运行过程中,其值可以被改变的量称为变量。变量用于保存运算所需的初始数据、变化的中间结果和最终结果。2.2.2

变量下面是两个变量的定义和初始化,请说出两个变量的三个要素,定义格式以及初始化方法的区别。1、inta=456;2、charc;c=‘#’;案例

2-31、语句inta=456;定义变量a,该变量三个要素是:变量名a,类型为整型,变量值是整数456。定义格式是:关键字int表示变量a的数据类型是整型,类型关键字int后跟着就是定义变量名为a。在定义变量a的同时进行初始化,a的初始化值为456。2、语句charc;定义变量c,该变量三个要素是:?案例分析1、变量的三个要素(1)变量名:每个变量都有一个名字,即为变量名,变量名由标识符组成,并遵循标识符命名规则。(2)变量类型:表明变量的数据类型,比如整型变量(int)、实型变量(float)、字符型变量(char)。(3)变量值:在程序运行过程中,通过变量名来引用变量的值,变量值存储在内存中。知识链接变量名实际上是一个符号地址,在对程序编译连接时由系统给每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。变量在内存中占据一定的存储单元,变量的类型表明所占用的存储单元的数量,如整型(int)占两个字节,字符型(char)占一个字节。提示2、标识符的命名规则标识符用于给变量、函数和其他用户自定义类型命名。标识符要求必须按以下规则构成:(1)必须以英文字母或下划线开始,并由字母、数字和下划线组成。例如:abc,_chred,uY123等都是合法的标识符,而555Won,-hihi,$efg等则是非法的标识符。(2)大写字符和小写字符代表不同的标识符(3)不能使用C语言的关键字作为标识符。(4)一般采用表示变量含义的英文单词或单词缩写作变量名,如:“name”表示姓名变量,“sum”表示“求和”变量,“average”或“ave”表示“平均值”变量。3、变量的定义与初始化在C语言中,要求所有的变量必须先定义后使用。(1)变量定义的一般格式:数据类型<变量名表>;inti; /*数据类型为int,变量名为i,定义i为整型变量*/charch; /*定义ch为字符型变量*/floatsum,difference,product,quotient;/*定义四个实型变量,表示和差积商*/(2)变量初始化:定义变量时,系统便为变量分配了存储空间。若不为该空间指定一个值,则该空间的值可能是0,也可能是一个随机值。所以使用变量前,一定要将其初始化为一个确定的值,给变量赋初值有两种方法:①先定义再赋值,例如:int

val;……val=10;②定义的同时初始化,例如:floatn1=4.5,n2=8.9;编写一段C程序,已知某种商品的单价和销售数量,求该种商品的总销售额。案例

2-4#include<stdio.h>#definePRICE20/*定义符号常量PRICE,代表整数20,表示单价*/main(){ intnum,total; /*定义整型变量num和total,分别表示数量和销售总额*/ num=10; /*给变量num赋初值为10*/ total=num*PRICE; /*将10*30的结果赋值给变量total,计算出销售总额*/ printf("total=%d",total); /*将计算出的销售总额输出在用户屏幕上*/}运行这个程序,结果是:total=200案例程序1、本案例程序的目的是熟悉常量和变量的用法。2、代码开始处定义符号常量PRICE,将程序中用到单价(这里为20)的地方都用PRICE来代替。案例分析编程计算圆的周长和面积随堂练习学习目标1、掌握整型常量的分类;2、掌握整型变量的定义、分类和存储形式。整型数据又分为整型常量和变量。2.3整型数据整型常量就是整数(integer)2.3.1整型常量编程练习三种进制表示方法的转换,把十进制数123分别按照十进制、八进制和十六进制格式输出。案例

2-5main(){intx=123;/*定义整型变量x并赋初值为123*/printf("\t%d,%o,%x\n",x,x,x);/*按三种格式输出*/}运行程序,结果是:

123,173,7b提问:十进制数转换成其他进制的方法是什么?案例程序(1)%d、%o、%x分别表示按照十进制格式、八进制格式和十六进制格式输出。(2)格式控制符“\t”表示输出一个水平制表位,就是将当前屏幕的位置水平移动8列,即要输出的内容在第9列开始显示。案例分析编程将十进制数8和11分别按照三种格式输出随堂练习整型常量按不同进制有三种表示形式:1、十进制整数。例如:12,234,-456等。2、八进制整数。以0开头作为标识的数据就是八进制数。其数码取值范围为:0~7,例如:012(十进制为10)。3、十六进制整数。以0x或0X开头的数据就是十六进制数。其数码取值范围为:0~9,A~F或a~f。例如:0XA5(十进制为165)。知识链接提问:如果需要定义一个用来存放班级人数的变量count,该如何定义呢?2.3.2整型变量整型变量的定义和存储形式案例

2-6main(){ intcount; /*定义一个整型变量用来存储班级人数*/ count=39; printf("%x\n",count); /*以十六进制形式输出班级人数*/}运行程序,结果是:

27案例程序1、定义为整型intcount;/*int为类型标识符,表示整型,count为变量名*/2、系统为被定义的变量count分配存储空间,由于是整型,所以分配2个字节(16位二进制)的存储空间。在计算机中最终都是以二进制的形式存储在内存空间中读者必须掌握内存空间的概念,知道各种数据类型在内存中是如何分配存储空间的。3、本案例结果输出整数39的十六进制形式为:27,在内存中存储的就是整数0x27的二进制形式:00100111B,B表示二进制。案例分析十进制数39对应的二进制为100111知识链接-39的原码:1000000000100111-39的反码:1111111111011000(符号位不变,其余位取反)-39的补码:1111111111011001(反码加1)整型变量的分类和表示范围案例

2-7main(){inta,b; /*定义a、b为有符号基本整型*/unsignedc,d; /*定义c、d为无符号基本整型*/ longe,f; /*定义e、f为有符号长整型*/ a=32767;b=1; c=65535;d=1; e=2147483647;f=1; printf("int:%d,%d\n",a,a+b); /*%d:以十进制整型的格式输出*/ printf("unsigned:%u,%u\n",c,c+d); /*%u:以无符号整型的格式输出*/ printf("long:%ld,%ld\n",e,e+f); /*%ld:以长整型的格式输出*/}运行程序,结果是:

int:32767,-32768 unsigned:65535,0 long:2147483647,-2147483648案例分析定义各种整型变量,并分析各种整型变量的表示范围随堂练习1、整型变量的分类(1)有符号基本整型:[signed]int“[]”表示括号中的内容为可选项,可以不写。(2)无符号基本整型:unsignedint(3)有符号短整型:[signed]short[int](4)无符号短整型:unsignedshort[int](5)有符号长整型:[signed]long[int](6)无符号长整型:unsignedlong[int]知识链接基本整型用int表示,所需的内存一般为2字节,短整型用shortint或short表示,所需的内存一般也为2字节长整型用longint或long表示,所需的内存一般为4字节2、整型数据的取值范围整型数据的字长和取值范围3、整型变量的定义和使用inta; /*定义一个整型变量*/ unsigned[int]a; /*定义一个无符号整型变量*/ long[int]a; /*定义一个长整型变量*/ unsignedlong[int]a;/*定义一个无符号长整型变量*/学习目标1、掌握实型常量的两种表示形式;2、掌握实型变量的定义、分类和使用。有些数据,比如学生成绩、圆面积等用整数表示不够精确,需要用实数表示才够精确。2.4实型数据实型常量即实数(realnumber),又称浮点数。2.4.1实型常量判断下列数据是什么类型0.01,2,2.,2.0,-58,1.23e5。案例2-8实型常量有两种表示形式。1、十进制形式。9.17、0.147、.123、-89.02、指数形式。指数形式是:<小数部分>e或E<整型指数>123e3或123E3都代表123×1031.23E5、12.3e4、0.123e61.23E5称为规范的指数形式,即在字母e或E之前的小数部分中,小数点左边应有且只能有一位非零的数字。知识链接1、实型常量都是有符号浮点数,没有无符号浮点数。2、按默认格式输出实型常量是,最多只保留小数点后六位。提示2.4.2实型变量实型数据赋值给整型变量时的类型转换问题

案例2-9main(){inti; floatj=1.8; /*定义一个实型变量j并同时赋初值*/ clrscr(); printf("%f\n",j); /*输出j的值*/ i=j; /*把实型变量j的值赋值给整型变量i*/ printf("%d\n",i); /*输出i的值*/ i=(int)j; /*把j的值强制转换成整型再赋值给整型变量i*/ printf("%d\n",i); /*再次输出i的值*/}案例程序运行程序,结果是:

1.800000 1 11、语句printf("%f\n",j);表示把变量j的值按照%f格式(即浮点型格式)输出,小数点后保留六位(见运行结果)。2、在实际编程过程中经常会遇到不同数据类型赋值,这就涉及到类型转换的问题。3、还有一种转换方法叫作显示转换,语句i=(int)j;就是先把j的值通过显示类型转换符(int)显示转换成整型,再赋值给变量i的。4、语句clrscr();表示调用清屏幕操作函数clrscr()。案例分析1、实型变量的分类在C语言中,实型变量分为单精度型和双精度型两类,其类型说明符为float和double知识链接2、实型变量的定义根据字长、精度和取值范围可以把实型变量定义成单精度型或双精度型。(1)定义成单精度型:floatscore; /*把学习成绩变量score定义成单精度型*/(2)定义成双精度型:doublea; /*把变量a定义成双精度型*/学习目标掌握字符常量与其ASCII码的对应关系;掌握字符常量和字符串常量的区别;掌握字符变量的定义和使用。2.5字符型数据定义学生成绩等级为‘A’、‘B’、‘C’、‘D’、‘E’五个等级,用什么样的数据类型来存放这样的字符常量呢?提问在C语言中用一对单引号括起来的单个字符,称为字符常量。如成绩等级‘A’、‘B’、‘C’等。2.5.1字符常量输入一个字符,输出该字符及其对应的ASCII码案例2-10main(){ charch; scanf("%c",&ch); /*从键盘输入一个字符*/ printf("Thecharacteris:%c\n",ch); /*按字符格式输出*/ printf("ThedecimalASCIIis:%d\n",ch); /*输出对应的十进制ASCII码*/ printf("ThehexASCIIis:%x\n",ch); /*输出对应的十六进制ASCII码*/}案例程序运行程序,输入字符‘$’,输出结果是:

Thecharacteris:$ ThedecimalASCIIis:36 ThehexadecimalASCIIis:241、字符‘$’的十进制形式ASCII码是:36,十六进制形式ASCII码是24。2、字符和它的ASCII码是一一对应的关系,以%c格式输出字符本身,以%d格式输出对应的十进制ASCII码,以%x格式输出对应的十六进制ASCII码。案例分析求ASCII码是33的对应字符随堂练习1、字符常量的ASCII码形式2、字符常量的运算printf("%c\n",35+36);printf("%c\n",‘#’+‘$’);3、字符串常量例:“China” 知识链接1、‘\0’和‘\n’等一样,是C语言的转义字符,表示与原来的字符‘0’不同的含义,‘\0’是“空操作字符”,常用来作为字符串的结束标志。2、字符常量和字符串常量是不同的,字符常量是用单引号括起来的单个字符,字符串常量是用双引号括起来的字符序列。例如‘a’为字符常量,而“a”为字符串常量。3、‘\0’字符是系统自动加上的,不需要在写字符串时加字符‘\0’。提示整型变量用来存储整型数据,实型变量用来存储实型数据,同理,字符变量是用来存储字符常量的。2.5.2字符变量字符数据和整型数据互相赋值问题案例2-11main(){charch; /*定义一个字符变量ch*/ch=97; /*给字符变量赋值*/printf("%c\n",ch); /*按字符格式输出变量ch的值*/printf("%d\n",ch); /*按十进制整数格式输出ch的值*/}案例程序运行程序,结果是:

a 97本例中实际上可以求出ASCII值(97)的对应字符‘a’,现在编程求出一个字符的对应ASCII码,应该怎么做呢?随堂练习字符变量和整型变量之间的赋值以及它们之间的运算案例2-12main(){inti; /*声明一个整型变量*/charj; /*声明一个字符变量*/i='A'; /*将字符数据赋值给整型变量*/j=66; /*将整型数据赋值给字符型变量*/i=i+32;j=j+32; /*字符数据和整型数据之间的运算*/printf("%c,%c\n",i,j); /*以字符型格式输出*/printf("%d,%d\n",i,j); /*以整型格式输出*/}案例程序运行程序,结果是:

a,b 97,98编程将大写字符‘C’和‘D’转换成小写字符输出随堂练习1、字符变量的定义格式2、字符变量的初始化及存储形式ch=66;或ch=‘B’;则在内存中实际上存储字符‘B’的ASCII值66,十进制数66转换成二进制是:1000010知识链接01000010学习目标掌握c语言的运算符的优先级和结合方向;掌握运算符和表达式的应用;掌握表达式中数据类型的转换。2.6运算符和表达式运算符就是对一个或多个操作数(运算对象)执行某种运算的符号,表达式是由运算符、常量及变量构成的式子。例如:a+5就是一个表达式。定义C语言的运算符有不同的优先级和结合方向规则算术运算符、赋值运算符、位运算符、条件运算符、逻辑运算符、关系运算符优先级和结合方向???优先级和结合方向案例2-13算术表达式的求值问题:求表达式(float)(a+b)/2+(int)c%(int)d的结果,其中a=1,b=2,c=3.5,d=2.5。2.6.1算术运算符和算术表达式main(){inta=1,b=2;floatc=3.5,d=2.5,s; /*定义a,b,c,d,s四个变量,其中s用来保存结果*/s=(float)(a+b)/2+(int)c%(int)d;printf("Theresultis:%f\n",s); /*按照浮点型格式输出结果*/}运行程序,结果是:

Theresultis:2.500000案例程序提示:算术表达式和运算符的结合性指的是在同级运算的情况下,运算顺序为至左向右。提示计算表达式(int)a/2+3*-2/(int)(a+b)-12的结果并编程验证,已知a=1.7,b=2.7。 随堂练习算术运算符算术运算要注意的问题 知识链接运算符说明范例+加法运算符4+3-减法运算符4-3*乘法运算符4*3/除法运算符4/3%取余运算符或称模运算符4%3提示:单目运算符就是操作数是一个的运算符,依此类推,双目运算符就是操作数是两个的运算符。在C语言中,单目运算符包括:!(逻辑非运算符)、~(按位取反运算符)、++(自增运算符)、--(自减运算符)、-(负号运算符)、(类型)(类型转换运算符)、*(指针运算符)、&(取地址运算符)、sizeof(求长度运算符)提示3、算术表达式算术表达式就是用算术运算符将运算对象(又称操作数,如常量、变量、函数等)连接起来的式子。例如:(a+b)/2+c-‘e’。求模运算:求一个正整数的个、十、百、千位的数字并输出案例2-14main(){unsignedintn,bt,bh,bd,bu; /*定义无符号整型变量分别保存要输入的数及千、百、十、个位上的数*/printf("Pleaseinputanumber(0<n<10000):"); /*提示输入一个数*/scanf("%d",&n); /*从键盘输入整数,保存在变量n中*/bt=n/1000; /*求n的千位数字*/bh=n%1000/100; /*求n的百位数字*/bd=n%1000%100/10; /*求n的十位数字*/bu=n%1000%100%10; /*求n的个位数字*/printf("%3d,%3d,%3d,%3d\n",bt,bh,bd,bu); /*输出各位上的数字*/}案例程序运行程序,由键盘输入:9876↙输出结果是:

Pleaseinputanumber(0<n<10000):9876 9,8,7,6自增运算符++如m++,++m,都等价于m=m+1。自减运算符--如m--,--m,都等价于m=m-1。2.6.2自增和自减运算符单目运算符的使用:分别使用自增和自减运算的前置和后置两种方式,查看结果有什么不同?案例2-15main(){intm=5,n;n=m++; /*m++表示自增后置方式,m的值先赋值给n,再自加1*/printf("n=%d,m=%d\n",n,m); /*输出n和m的值*/m=5; /*重新给m赋值,把m还原成原来的值*/n=++m; /*改用前置方式,++m表示前置方式*/printf("n=%d,m=%d\n",n,m); /*再次输出n和m的值*/案例程序m=5;n=m--; /*m自减,后置方式*/printf("n=%d,m=%d\n",n,m); m=5;n=--m; /*m自减,前置方式*/printf("n=%d,m=%d\n",n,m); }运行程序,结果是:

n=5,m=6 n=6,m=6 n=5,m=4 n=4,m=4m++; /*表示在使用m之后,再使变量m的值加1。*/--m; /*先使变量m的值减1之后,再使用变量m*/案例分析在tuboc中编辑下列代码并分析程序的输出结果。main(){ inti=5,j=5; printf(“%3d,%3d\n”,++i,j++); printf(“%3d,%3d\n”,i,j);}随堂练习提示:在printf()语句中,后置方式是变量先输出后变化,前置方式是变量先变化后输出。提示符号“=”就是赋值运算符,赋值表达式就是由赋值运算符将一个变量和一个表达式连接起来的式子。2.6.3赋值运算符和赋值表达式案例程序main(){inta,b,c; /*声明三个整型变量*/clrscr(); /*清屏幕*/a=b=c=5; /*为三个变量赋初值*/a+=b; /*修改变量a的值,相当于a=a+b*/b*=c; /*修改变量b的值,相当于b=b*c*/printf("a=%d,b=%d,c=%d\n",a,b,c); /*输出三个变量值*/printf("Theresultofexpressionis:%d\n",a+=b*=b-c);/*输出赋值表达式的值*/printf("Theresultofexpressionis:%d\n",a=(b=4)*(c=6));}案例2-16运行程序,结果是:

a=10,b=25,c=5 Theresultofexpressionis:510 Theresultofexpressionis:24表达式a+=b*=b-c的运算顺序是:①由于“-”运算优先级高于赋值运算符(包括复合赋值运算符),故先进行b-c的运算。②根据赋值运算符(包括复合赋值运算符)的右结合性,即从右至左,所以下一步进行b*=b-c的运算,相当于b=b*(b-c)。③最后计算a+=b(上一步表达式的值),相当于a=a+b。案例分析计算当a=10时,表达式a+=a-=a*a的值。记得编程验证随堂练习1.复合赋值运算符复合赋值运算符就是在赋值符“=”之前加上其它的运算符构成的运算符,其它的运算符包括“+”、“-”、“*”、“/”、“%”等。(1)+=:如m+=n,相当于m=m+n。(2)-=:如m-=n,相当于m=m-n。(3)*=:如m*=n,相当于m=m*n。(4)/=:如m/=n,相当于m=m/n。(5)%=:如m%=n,相当于m=m%n。2.赋值表达式的值赋值表达式的值就是被赋值变量的值例如i=10这个赋值表达式的值就是10,也就是说变量i的值是10,同时,该赋值表达式的值也是10。用printf(“%d”,i=10);输出结果就是10,注意“%d”的位置输出对应的i=10这个表达式的值。知识链接条件运算符是C语言的惟一的三目运算符。2.6.4条件运算符和条件表达式main(){inta,b,max; /*定义三个整型变量,max用来保存较大的数*/scanf("%d,%d",&a,&b); /*键盘输入值给变量a和b*/max=(a>b?a:b); /*用条件表达式求出较大数,再赋值给变量max保存*/printf("Themaxnumberis:%d\n",max); /*输出较大数的值*/}案例2-17运行程序,输入5,9↙结果是:

5,9 Themaxnumberis:91、条件表达式的一般形式是: 表达式1?表达式2:表达式32、条件表达式a>b?a:b的运算顺序先计算第一个表达式a>b,也就是a>b要么成立,要么不成立,如果成立认为表达式结果为真(true),否则为假(false)。案例分析C语言规定,不同类型的数据在参加运算前要先转化成同一种类型,再进行运算2.6.5表达式中数据类型的转换假设m为float,n为int型,分析下面表达式在运算时数据类型的转换。19+‘a’-2.5+m/n案例2-181、“/”的优先级高2、“+”、“-”为同级运算,按照从左至右的结合性3、19+‘a’-2.5相当于116-2.5,2.5为float型,应自动转换成double类型案例分析1、自动类型转换知识链接垂直方向由低到高longunsignedintfloatchar,short水平方向,自动转换double2

温馨提示

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

评论

0/150

提交评论