C程序设计课件第1章.ppt

上传人:sccc 文档编号:5337218 上传时间:2023-06-27 格式:PPT 页数:66 大小:506.01KB
返回 下载 相关 举报
C程序设计课件第1章.ppt_第1页
第1页 / 共66页
C程序设计课件第1章.ppt_第2页
第2页 / 共66页
C程序设计课件第1章.ppt_第3页
第3页 / 共66页
C程序设计课件第1章.ppt_第4页
第4页 / 共66页
C程序设计课件第1章.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《C程序设计课件第1章.ppt》由会员分享,可在线阅读,更多相关《C程序设计课件第1章.ppt(66页珍藏版)》请在三一办公上搜索。

1、第三章 简单程序,常量变量表达式语句组成表达式语句赋值类型转换输入/输出,常量(constant),在程序执行期间不变的数据称为常量如圆周率的近似值3.14165926 自然对数底的近似值2.7183 等可以直接书写在程序中的常量,称为字面常量。#include void main()printf(“%f n”,2.7183);打印出 2.7183,常量标识符为什么一个常量多次用到方便修改常量如何声明枚举常量表中的标识符就是常量标识符#define 标识符 常量如何使用#define SPEED 55,#define pai 3.14#define R 10void main()float x

2、,y;x=2*pai*R;y=pai*R*R,#define pai 3.14#define R 10void main()float x,y;x=2*3.14*10;y=3.14*10*10,#define pai 3.14;#define R 10;void main()float x,y;x=2*pai*R;y=pai*R*R,#define pai 3.14;#define R 10;void main()float x,y;x=2*3.14;*10;y=3.14;*10;*10;,变量(variable),相对于常量,变量是程序执行期间值可变的数据对象两个方面变量值:程序运行某一时刻

3、,变量所具有的值变量属性:名字数据类型作用域存储空间存储地址 等,编译程序在把高级语言程序翻译成机器语言时给每个变量都分配一块适当的存储空间,以便随时保存变量的值。这块存储区就是变量的存储区变量的地址就是这块存储区的首地址变量的值就是这块存储区中现行保存的数据。变量v 被分配在内存地址为0F000开始的存储区域,当前值为5。,变量地址,变量名,变量值,变量的存储区,变量声明,声明变量的意义:引进新变量规定所引变量的属性语法变量声明 类型 变量项表;变量项表 变量项 变量项,变量项表变量项 标识符 标识符=初值,不考虑初值的一般形式 T id,id,.,id;变量类型变量名字变量的作用域例子in

4、t i,j,k;char c;int t;float amount,total;bool flag;enum red,blue,green color;,void main()int x,y;z=x*2;char z;x=x+y;z=x+y;w=z+x;,变量出现形态,声明出现赋值出现引用出现 int n,x;n=1;n=3;n=n*5+7x=n;,n:,编译程序会给该变量分配一块存储空间。但是从程序开始执行的时刻一直到给该变量赋值之前该变量是没有值的,这时称该变量为“值无定义的”,为变量赋以一个它值域之内的(即所属类型的)一个数据。一旦为变量赋值,该变量就变成了“值有定义的”,引用性出现分成

5、引用变量当前值一般在表达式中变量必须是“值有定义的”不会改变变量的值引用变量本身多出现在参数结合中可是“值无定义的”可能会改变变量的值,1,3,22,x:,22,变量地址,变量地址变量在内存中的所在位置,即内存地址。求地址将单目运算符“&”,缀在变量前,求相应变量地址。例子被分配在内存地址为0F000开始的存储区域的变量V&V 的值就是 0F000,也称为V的指针,变量初始化,形式id=初值 例子int i=0,j=1,k=100*2,m=k*i*j;char c=A;enum red,blue,green color=red;变量在声明时被赋以初值,则在程序开始运行时,它便取得了相应值,它是

6、值有定义的。,enum set a,b,c,d var_set;enum set a,b,c,d var_set=d;enum set a,b,c,d;enum set var_set=d;enum a,b,c,d var_set=d;,变量使用注意事项,程序中使用的一切变量都必须声明。在同一作用域内,任何两个变量不许重名,也不许与其它类标识符重名。从程序的静态行文顺序看,变量的声明必须出现在所有使用之前。从程序的静态行文顺序看,在变量声明中给变量赋初值处,相应表达式必须是可计算的。从程序的动态执行顺序看,为变量赋值的出现必须在所有使用值之前。,表达式,表达式(expression)是 C 程

7、序完成各类运算的主要部分,由运算符和运算分量组成。语法表达式 基本表达式 后缀表达式 一元表达式 二元表达式 条件表达式 逻辑表达式 赋值表达式 顺序表达式基本表达式 标识符 字面常量(表达式),基本表达式是C表达式的最底层,包括:标识符字面常量括号表达式标识符包括变量标识符和常量标识符,它们的类型由相应声明给出,当表达式计算时,变量应该是值有定义的。字面常量括号括表达式,3*6 u0 r=(x+y)*5=(r-s)/83、6、u、r、x、y、5、s、8 都是基本表达式经与运算符组合后的 x+y、r-s 是表达式;用括号括上的表达式(x+y)、(r-s)又变成基本表达式最终若干基本表达式与运算

8、符组合得到的r=(x+y)*5=(r-s)/8 仍是表达式。,运算符优先级,C 表达式与通常数学表达式的书写区别:所有字符必须写在一条水平线上。不允许出现上、下角标、分数线等。sqrt(x*y)x*x*x*x*x(x+y)/5 fabs(x*y),a乘b ab ab ab a*b 除了下标使用方括号以外,所有括号必须用圆括号。a*b+c*(a+b)(a*(b+c*(a+b),数学中连续的关系运算,a=+=,适当加括号是好习惯 xy|y=2&y2(xy)|(y=2)&(y2)(xy)|(y=2)&(y2),表达式计算规则,括号内的表达式先计算运算符分16个优先级,不同级运算符相邻,先计算优先级高

9、的运算同级运算符相邻,按结合律的规定从左向右或从右向左进行计算二元运算符和三元运算符的各个运算分量的计算次序是依赖于实现的。,int x=3,y=4,r=1,s=9;r=(x+y)*5=(r s)/8,7,35,-8,0,0,-1,#include stdio.h/*1*/int x,y;/*2*/int f(int z)/*3*/x=x+1;/*4*/return(z*z);/*5*/*6*/void main()/*7*/x=0;/*8*/printf(“%dn”,x+f(2);/*9*/*10*/,计算顺序从左至右 结果为4从右至左 结果为5,设u=20、v=30、w=40、x=20、y

10、=50则w=0|u+20v|xx false|true xx true&false,语句(statement),程序的一个侧面是描述对数据的操作,操作由一个个动作组成。在程序设计语言中,表示动作的是语句,语句的执行执行相关动作。,语句分类,表达式语句,语法表达式语句 表达式;例子3+5;b=a*c-3 x+y,赋值语句,一般形式v=e;v 是一个左值(现在看就是一个变量),作为赋值运算符左端的运算分量。=是赋值运算符,由一个赋值号组成。e 是一个表达式,作为赋值运算符右端的运算分量,e能计算出一个值。,days=2+5;执行结果是将值 7 赋给变量 days。若 days 原来是值无定义的现在

11、它变成值有定义的,并取值 7;若 days 原来是值有定义的,则不论 days 原来值是什么,都将被 7 所取代days 仍是值有定义的,值是 7。最后整个表达式值也为7。,在赋值表达式中,赋值运算符“=”右端是计算值的表达式,左端回答“该值交给什么对象”因此下述语句都是正确的。firstnumber=1;circumference=2*pi*radius甚至数学上显然不成立的,也是正确的。nextnumber=nextnumber+1其执行结果是将变量 nextnumber 的值加1,得到一个新值,再送入变量 nextnumber 中去。,下述形式是错误的,因为左端不是变量(左值)1=fir

12、stnumber length*width=area,例3-1 设 v1,v2,v 是同一类型的三个变 量,且 v1,v2 都是值有定义的,则下 述语句列将使 v1 与 v2 的值互相交换 v=v1;v1=v2;v2=v;,v1:,v2:,v:,例3-2 做一个长 50cm,宽 30cm,面积 500cm2 的各边等宽矩形的木框,计 算该木框多宽。,area=2(length*x+(width-2x)*x)即:4x*x-2(length+width)x+area=0 4x*x-2(length+width)x+500=0,#include stdio.h#include math.h#defi

13、ne length 50.0#define width 30.0#define area 500.0 void main()float x1,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=%.2f x2=%.2f n,x1,x2);,该程序运行后将输出:X1=36.58 X2=3.42,左值实质是内存某个存储区的地址通俗的讲,左值是允许在赋值运算符左端出现的表达式。最基本的左值,+和-,Eg:(1)int p=1,q;(2)int p=1,q;q=p

14、+;q=+p;q=1;p=2 q=2;p=2,类型转换,为什么要进行类型转换对 C 而言,各种不同类型及其数据是有区别的C对参与运算的运算分量类型在参数结合时对参数的类型都有一定的限制或进行一些必要的转换void main()bool x=true,y=true,z=true;int w=x+y+z;bool u=x+y+z;,隐式类型转换,对象各种浮点类型各种整数类型转换的原因每一类型数据存储长度,表示形式不同,隐式转换规则,单目运算(一元运算、后缀运算)转换规则所有浮点类型不转换长度大于int类型的整数类型不转换长度小于int类型的带符号整数类型转换成int类型长度小于int类型的无符号整

15、数类型值可以用int类型表示,转换成int类型值不能用int类型表示,转换成unsigned int类型,双目运算和三目运算向类型高的运算分量转换把短类型转换成长类型把整数类型转换成浮点类型把有符号类型转换成无符号类型,long doubledoublefloatunsigned long longlong longunsigned longlongunsigned int unsigned char、unsigned shortint char、short,把短类型转换成长类型把整数类型转换成浮点类型把有符号类型转换成无符号类型,各占用多少字节?,强制类型转换,形式(类型名)例子(char)

16、(A+0)结果为char类型小写的q(int)5.2/2 结果为int类型的2(float)5/2 5/(float)2 结果为float类型的2.5注意类型名必须用括号括上,该运算符就是这种形式;用括号把它的运算分量括上是一种好的习惯(char)(A+0)结果为char类型小写的q(char)A+0 结果为int类型的113。,赋值运算过程,计算赋值运算符右端表达式e的值若e与v赋值兼容,把e的值按赋值转换规则转换成赋值运算符左端v的类型把转换后的值送入v中例子float v;float v=3.0;int i=3;int i;v=i+3;i=v+3;,赋值兼容,v=e 中要求e的类型与v的

17、类型兼容,算术赋值转换规则,输入/输出(I/O),输入把数据从外部设备(磁盘、键盘、磁带、传感器、)上读入计算机内。输出指把计算机内部的数据送到外部设备(磁盘、显示器、打印机、).C语言中的处理方式一切外部设备全部定义为文件C的 I/O 全部是针对文件的通过标准函数库中若干标准函数实现I/O。,程序文件分类头文件(.h)代码文件(.cpp或.c)标准库函数#include 命令意义将源文件包含到当前源程序文件中形式#include#include“文件名”标准I/O函数头文件stdio.h,任何C 程序使用I/O函数,必须引用该标准头文件:#include,单个字符输入,输入函数 getcha

18、r()从标准输入设备(键盘)上读入一个字符,作为函数值使用char ch;ch=getchar();,读入一个字符送入变量ch中,单个字符输出,输出函数 putchar(int型表达式)int型表达式计算出的值转换成字符类型值输出到标准输出设备(显示器)上。函数值如果正确,输出的int型整数作为函数值如果错误,则EOF(-1)作为函数值使用char ch=c;putchar(ch+3);,格式输入函数,形式scanf(,)意义 其操作是从标准输入设备上读入一系列数据,按格式控制的要求进行转换并送入输入列表所列的诸变量中函数值输入的数据个数 如果输入操作正确EOF 否则,输入列表&v1,&v2,

19、&v3,&vn格式控制含有各种以百分号开始的格式控制符的常量字符串如下是一个格式控制:“%d%c%f%d”,“%.d”,设i 为int 型变量、ch 为char型变量、v为 float型变量、k 为 int型变量scanf(“%d%c%f%d”,&i,&ch,&v,&k)从键盘上输入数据 1234123e+2987 变量 i 得到整数数据1234 变量 ch 得到字符型数据空格v 得到浮点型数据12300 k 得到整数数据987,格式输出,形式printf(,)意义其操作是按照格式控制的要求,把输出列表上的数据转换成字符串,送入标准输出设备上输出。函数值输出的字符个数 如果输出操作正确;EOF

20、 否则。,输出列表 e1,e2,e3,en格式控制,“-”表示以左对齐方式输出,printf(“num1=%2d flag=%c n area=%10.3f num2=%5d n”,25,A,123.0/2,987);,num1=,25,flag=,A,area=,61.500,num2=,987,例3-3 修改例3-2使之适用于任意长、宽、面积;并产生一个较好的输出格式。#include stdio.h#include math.h void main()float x1,x2,b,d;float length,width,area;printf(please input length,width,area:n);scanf(%f%f%f,首先将在终端屏幕上显示一行提示:Please input:lenth,width,area:这时计算机处于等待输入状态。操作员应顺次从键盘键入矩形方框的长、宽和面积 设键入值为:5030500键入结束后,计算机继续向下运行,产生如下输出:x1=36.6x2=3.4 到此程序执行结束。,本章小结,常量变量表达式语句组成表达式语句赋值类型转换输入/输出,作业,3.13.23.33.63.93.133.14-1、3、5、73.27,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号