《c简单程序设计》PPT课件.ppt_第1页
《c简单程序设计》PPT课件.ppt_第2页
《c简单程序设计》PPT课件.ppt_第3页
《c简单程序设计》PPT课件.ppt_第4页
《c简单程序设计》PPT课件.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

C程序设计第三章简单程序设计主讲:高利军,第1,第三章简单程序设计,本章介绍最简单的C程序,包括,常量变量表达式赋值输入输出,C程序设计第三章简单程序设计主讲:高利军,2,在程序执行期间不变的数据称为常量。,例如:圆周率的近似值3.142,自然对数底的近似值2.7183等。,常量可以直接书写在程序中,称为字面常量。,程序#includevoidmain()printf(“%fn”,2.7183);打印出2.7183,3.1常量及常量定义,C程序设计第三章简单程序设计主讲:高利军,3,可以引进标识符代表常量,称表示常量的标识符为常量标识符。,1.枚举常量表中的标识符就是常量标识符。,2.还可以引进宏定义来定义某标识符为常量标识符,格式如下:#define标识符常量这种格式,定义相应标识符为其后面的常量字符串。,例:#defineSPEED55定义标识符SPEED代表整数55。在该行之后的程序中凡是出现SPEED都代表55。,C程序设计第三章简单程序设计主讲:高利军,4,3.2变量及变量声明,3.2.1变量变量(variable)是在程序执行期间值可变的数据对象。,一个变量包含两个侧面。,值:在程序执行的某一时刻变量所具有的值;,属性:包括变量的名字类型作用域存储区存储区地址等,C程序设计第三章简单程序设计主讲:高利军,5,编译程序在把高级语言程序翻译成机器语言程序时,给每个变量都分配一块适当的存储空间,以便随时保存变量的值。这块存储区就是变量的存储区,变量的地址就是这块存储区的首地址,变量的值就是这块存储区中现行保存的数据。,变量地址,变量名,变量值,变量的存储区,设有变量v,分配在内存0F000开始的一块存储区中,现行值为2.7183,如图所示。,C程序设计第三章简单程序设计主讲:高利军,6,3.2.2变量声明,变量的属性由变量声明规定,在变量声明中引进变量,并且规定所引进的变量的属性。,变量声明的语法如下:变量声明类型变量项表;变量项表变量项变量项,变量项表变量项标识符标识符=初值,按上述语法规则,一个变量声明的形式如下:Tid,id=初值,.,id;,C程序设计第三章简单程序设计主讲:高利军,7,其中:1.每个id是一个标识符,是由该变量声明引进的变量。也是相应变量的名字;也可以直接给变量赋初值。,2.T是类型,可以是任何一种类型符,包括已经学过的:各种浮点类型、各种整数类型、字符类型、布尔类型、枚举类型,以及我们以后将学习的各种类型。它决定了列在它后边标识符表中的标识符所代表变量的类型属性。3.每个变量声明所处的位置决定了它所声明变量的作用域,C程序设计第三章简单程序设计主讲:高利军,8,变量声明inti,j=7,k;charc;intt=0;floatamount,total;boolflag;enumred,blue,greencolor;声明:,i、j、k、t为int型变量;c为char型变量;amount、total为float型变量;flag为bool型变量;color为一个枚举型变量。,C程序设计第三章简单程序设计主讲:高利军,9,3.2.3变量形态,一个变量作为程序语言的一个成分,在程序中有三种出现状态:.在变量声明中出现.为变量赋值时出现.引用性出现,在变量声明中出现一个标识符在某变量声明的标识符表中出现便引进了一个变量,该变量的类型由该标识符表前边的类型决定。但是从程序开始执行的时刻一直到给该变量赋值之前该变量是没有值的,这时称该变量为“值无定义的”。例如有变量声明:charc;则引进字符型变量,在程序开始执行时c是“值无定义的”,它还没有值。,为变量赋值时出现这种出现状态为变量赋以一个它值域之内的(即所属类型的)一个数据。一旦为变量赋值,该变量就变成了“值有定义的”。例如:变量c若给它赋值P后,它便是“值有定义的”,并且值为P。,P,若再给它赋值S,则c的值就变成了S,这时原来的值P便已丢失。,S,引用性出现引用性出现分成两种:一种引用变量当前值;一种引用变量本身,包括它的名字、地址、存储区、类型等一切属性。引用值的出现一般在表达式中,这时被引用的变量必须是“值有定义的”,这种引用性出现不会改变变量的值。引用变量本身多出现在参数结合中。这时被引用的变量可以是“值有定义的”;也可以是“值无定义的”。这种引用性出现可能会改变变量的值。,C程序设计第三章简单程序设计主讲:高利军,10,3.2.4变量地址,在C程序中,经常使用一个变量的存储区及其地址。因此C给出一个运算符charc=A;enumred,blue,greencolor=red;,变量在声明时被赋以初值,则在程序开始运行时,它便取得了相应值,它是值有定义的。现在看,初值是一个常量表达式,将来学过构造型类型后,初值可能是由花括号括起来的常量表达式表。,C程序设计第三章简单程序设计主讲:高利军,12,在使用变量时要注意以下几点:1.程序中使用的一切变量都必须声明。2.在同一作用域内,任何两个变量不许重名,也不许与其它类标识符重名。3.变量的声明必须出现在所有使用之前。,C程序设计第三章简单程序设计主讲:高利军,13,3.3表达式,3.3.1表达式的结构表达式(expression)是C程序完成各类运算的主要部分,由运算符和运算分量组成。表达式基本表达式后缀表达式一元表达式二元表达式条件表达式逻辑表达式赋值表达式顺序表达式基本表达式标识符字面常量(表达式),C程序设计第三章简单程序设计主讲:高利军,14,基本表达式是C表达式的最底层,包括:标识符、字面常量、括号表达式,可以说基本表达式就是C表达式的运算分量。标识符包括变量标识符和常量标识符,它们的类型由相应声明给出,当表达式计算时,变量应该是值有定义的。字面常量已经介绍过。用括号括起来一个表达式,仍是一个运算分量。,C程序设计第三章简单程序设计主讲:高利军,15,由基本表达式(运算分量)和运算符相互组合可以构成各种复杂的表达式。例如:3*6u0r=(x+y)*5=(r-s)/8,3、6、u、r、x、y、5、s、8等都是基本表达式;经过与运算符组合后的x+y、r-s是表达式;用括号括上的表达式(x+y)、(r-s)又变成基本表达式;最终若干基本表达式与运算符组合得到的r=(x+y)*5=(r-s)/8仍是表达式。,C程序设计第三章简单程序设计主讲:高利军,16,C运算符(按优先级从高到低),C程序设计第三章简单程序设计主讲:高利军,17,C程序设计第三章简单程序设计主讲:高利军,18,1.所有字符必须写在一条水平线上。不允许出现上、下角标、分数线等。2.乘不能写成ab,也不能写成ab必须写成a*b3.除了下标使用方括号以外,所有括号必须用圆括号。4.数学中连续的关系运算,ayb应该写成(ay)circumference=2*pi*radius,甚至数学上显然不成立的nextnumber=nextnumber+1也是正确的。其执行结果是将变量nextnumber的值加1,得到一个新值,再送入变量nextnumber中去。,但下述形式是错误的,因为左端不是变量(左值)。1=firstnumbertength*width=area,C程序设计第三章简单程序设计主讲:高利军,29,【例3-1】设v1,v2,v是同一类型的三个变量,且v1,v2都是值有定义的,则下述语句列将使v1与v2的值互相交换。v=v1;v1=v2;v2=v;,V1:,V2:,V:,C程序设计第三章简单程序设计主讲:高利军,30,【例3-2】做一个长50cm,宽30cm,面积500cm2的矩形木框,且各边等宽。编出计算该木框每边应做多宽的程序。,如图所示,若设木框各边宽为x,框长为length,宽为width,面积为area;由数学知识可知:area=2(length*x+(width-2x)*x)即:4x*x-2(length+width)x+area=0,这是一元二次方程,使用求根公式编程序解该方程。,C程序设计第三章简单程序设计主讲:高利军,31,该方程求解步骤如图:,#includestdio.h#includemath.h#definelength50.0#definewidth30.0#definearea500.0voidmain()floatx1,x2,b,d;b=-2.0*(length+width);d=sqrt(b*b-4.0*4.0*area);x1=(-b+d)/(2*4);x2=(-b-d)/(2*4);printf(x1=%.2fx2=%.2fn,x1,x2);,该程序运行后将输出:X1=36.58X2=3.42,C程序设计第三章简单程序设计主讲:高利军,32,+和在程序设计过程中经常有把某变量n的值取出,加1后再送回n中这类运算。例:nextnumber=nextnumber+1为了简化书写,C引进两个运算符+-分别表示把一个整数类型变量中内容取出加1(+)或减1(-)后再送回原变量中去。,“+”和“-”即可以缀在变量的前边,属于一元运算符;“+”和“-”也可以缀在变量的后边,属于后缀运算符。,以变量v为例,设v中原有值v0,这两个运算符的含义如下表,可以看出:v+和+v对v的操作都相当于v=v+1,运算后v的值都是v的原值加1,即v0+1。但是,整个表达式的结果有区别:1.表达式v+是先求表达式的值,后对v加1。结果表达式的值是对v进行加1之前的v值,即v0。2.表达式+v是先对v加1,后求表达式的值。结果表达式的值是对v进行加1之后的v值,即v0+1。,v-和-v的意义与v+和+v类似,不再赘述。,C程序设计第三章简单程序设计主讲:高利军,33,main()inti=8;printf(%dn,+i);printf(%dn,-i);printf(%dn,i+);printf(%dn,i-);printf(%dn,-i+);printf(%dn,-i-);,输出结果为:9889-8-9,C程序设计第三章简单程序设计主讲:高利军,34,3.7类型转换,对C而言,各种不同类型及其数据是有区别的。C对参与运算的运算分量类型在参数结合时对参数的类型都有一定的限制或进行一些必要的转换。,实质上,C的简单类型只有两类:各种浮点类型各种整数类型但是每一类类型中根据数据存储长度以及表示形式不同,又分成若干类型。,在C中各种类型数据进行混合运算遵循一个隐式转换规则进行自动类型转换,,除此之外,C还提供显式的强制类型转换运算。,C程序设计第三章简单程序设计主讲:高利军,35,双目运算和三目运算隐式转换规则:向类型高的运算分量转换,把短类型转换成长类型、把整数类型转换成浮点类型、把有符号类型转换成无符号类型。下图给出这种转换的规律。,longdoubledoublefloatlongunsignedintunsignedshortintchar、short,横向的箭头表示只要遇到相应类型一定按箭头方向转换成左方的类型。,纵向箭头表示按箭头方向从下向上类型一个比一个高。,C程序设计第三章简单程序设计主讲:高利军,36,强制类型转换,形式:(类型说明符)(表达式)例:(double)a;(int)(x+y);(float)(5%3)区别:(int)x+y和(int)(x+y)强制类型转化的种类系统自动进行类型转换用户强制类型转换voidmain()floatx;inti;x=3.6;i=(int)x;printf(x=%f,i=%d,x,i);运行结果如下:x=3.600000,i=3,C程序设计第三章简单程序设计主讲:高利军,37,赋值运算的动作是(要求当e与v赋值兼容):计算赋值运算符右端表达式e的值;若e与v赋值不兼容,把e的值按赋值转换规则转换成赋值运算符左端v的类型;把转换后的值送入v中;经过赋值运算后,表达式“v=e”的值为最后送入v中的值。在赋值运算过程中,要把e的类型转换成v的类型。,C程序设计第三章简单程序设计主讲:高利军,38,3.8输入输出,输入:指把数据从外部设备(磁盘、键盘、磁带、传感器、)上读入计算机内,针对高级语言也可以认为读入程序中某变量内。输出:指把计算机内部的数据送到外部设备(磁盘、显示器、打印机、)上去。,C把一切外部设备全部定义为文件,所以C的I/O(输入/输出)全部是针对文件的,并通过标准函数库中若干标准函数实现I/O。,所以:输入是从文件将数据读入到计算机内;输出是将计算机中的计算结果送到文件上。,C程序设计第三章简单程序设计主讲:高利军,39,C不提供I/O语句,而是通过标准函数库中若干标准函数实现I/O。若想使用某标准函数库中的函数必须使用编译预处理命令“#include”引用相应标准函数库的头文件。该命令的格式是:#include,任何C程序如果使用I/O函数,必须引用标准I/O函数的标准头文件“stdio.h”,也就是在程序中必须包含如下程序行:#include,C程序设计第三章简单程序设计主讲:高利军,40,3.8.1字符输入C提供的字符输入函数是一个无参函数,调用该函数的一般格式是:getchar()其操作是从标准输入设备(也就是键盘)上读入一个字符,作为函数值。读入的字符一般要保存到一个字符型变量中,若变量ch是字符类型的,经常以如下形式使用该函数。ch=getchar();,C程序设计第三章简单程序设计主讲:高利军,41,3.8.2字符输出C提供字符输出函数putchar,调用该函数的一般格式是:putchar(int型表达式)其操作是把int型表达式计算出的值转换成字符类型值输出到标准输出设备(也就是显示器)上。如果操作正确把输出的int型整数作为函数值;如果错误,则EOF(-1)作为函数值。,C程序设计第三章简单程序设计主讲:高利军,42,3.8.3格式输入标准函数scanf是C提供的格式输入函数,调用它的一般格式是:scanf(,)其操作是从标准输入设备(键盘)上读入一系列数据,按格式控制的要求进行转换并送入输入列表所列的诸变量中。返回的函数值为:输入的数据个数如果输入操作正确;EOF否则。,C程序设计第三章简单程序设计主讲:高利军,43,输入列表输入列表由逗号“,”分隔开的若干输入表项组成;每个输入表项是一个变量的指针(变量的地址)。运算符“printf(inputa,b,cn);scanf(%d%d%d,在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。,C程序设计第三章简单程序设计主讲:高利军,50,格式输入与输出scanf注意,使用scanf函数还必须注意以下几点scanf函数中没有精度控制,如:scanf(“%5.2f”,输入为def时,a=d,b=e,c=f输入为def时,a=d,b=,c=e,C程序设计第三章简单程序设计主讲:高利军,51,3.8.4格式输出,标准函数printf是C提供的格式输出函数,调用它的一般格式是:printf(,)其操作是按照格式控制的要求,把输出列表上的数据转换成字符串,并送入标准输出设备(显示器)上输出。返回的函数值为:输出的字符个数如果输出操作正确;EOF否则。,C程序设计第三章简单程序设计主讲:高利军,52,输出列表输出列表由逗号“,”分隔开的若干表达式组成。每个表达式计算出一个值,该值将被按照格式控制中相应控制项的格式符的要求进行转换,变成字符流被输出。输出列表有形式e1,e2,e3,en其中e1,e2,en是n个表达式。,C程序设计第三章简单程序设计主讲:高利军,53,格式控制printf的格式控制与scanf的格式控制一样,也是一个常量字符串。其中含有任意普通字符和各种以百分号开始的格式控制符。下表列出常用的printf函数格式控制符。,C程序设计第三章简单程序设计主讲:高利军,54,常用的printf函数格式控制符(续),C程序设计第三章简单程序设计主讲:高利军,55,在各种形式格式符中:d、u、c、s、f、e是格式符号;m和n是无符号整数常量,表示输出宽度和小数位数;负号“-”是对齐方式。它们共同确定输出格式。一般格式转换都把数据转换成m个字符的字符串,并按右对齐的方式输出。负号“-”表示该输出项以左对齐方式输出。m称字段宽度,表示相应输出项所占字符个数。若m大于数据长度,则以空格补齐。不带负号“-”在左端补空格,数据按右对齐的方式输出;带负号“-”在右端补空格,数据按左对齐的方式输出。若m小于数据长度,则突破m的限制,输出足够表示数据的字符串。显然字段宽度m值不应该小于数据长度。n表示小数部分占用的字符位数。,C程序设计第三章简单程序设计主讲:高利军,56,下述是一个格式控制:“num1=%2dflag=%cnarea=%10.3fnum2=%5dn”,执行printf函数时,格式控制中的普通字符将原封不动的输出到外部设备上去,格式控制中的格式符用于控制对输出列表上数据的转换。计算机按照格式控制中控制符的要求转换输出列表上的诸表达式,把它们变成字符流送到标准输出设备(显示器)上输出。上述格式控制应该对应的输出列表应该是,一个整数表达式、一个字符表达式、一个浮点表达式、再一个整数表达式。该格式控制将如下执行输出和转换各个表达式的值,并送到显示器上:,C程序设计第三章简单程序设计主讲:高利军,57,输出字符串“num1=”;按整数格式转换输出列表上的第一个表达式的值,转换成一个2字符长的字符串;输出字符串“flag=”;按字符格式转换输出列表上的第二个表达式的值,转换成一个字符;输出字符串“narea=”;按浮点格式转换输出列表上的第三个表达式的值,转换成一个10字符长的字符串;输出字符串“num2=”;按整数格式转换输出列表上的第四个表达式的值,转换成一个5字符长的字符串。显然格式控制符要与输出列表上的表达式匹配,事实上是根据输出列表上输出的需要,来安排相应格式符的。函数调用printf(“num1=%2dflag=%cnarea=%10.3fnum2=%5dn”,25,A,123.0/2,987);将产生如下输出结果(读者应该记得,“n”是转义字符,表示行结

温馨提示

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

评论

0/150

提交评论