《第3讲 顺序结构优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第3讲 顺序结构优秀PPT.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3讲讲 顺序结构顺序结构现在学习的是第1页,共30页教学目标教学目标l熟悉常用的运算符,能够根据要求构造相应的表达式;熟悉常用的运算符,能够根据要求构造相应的表达式;l能够调用常用数学函数;能够调用常用数学函数;l掌握顺序结构的基本特征掌握顺序结构的基本特征,熟悉流程图、熟悉流程图、N-S图的画法;图的画法;l熟悉常用的输入输出格式符及字符输入输出函数。熟悉常用的输入输出格式符及字符输入输出函数。重点:赋值运算符与表达式、顺序结构、数据的输入输出、重点:赋值运算符与表达式、顺序结构、数据的输入输出、常用数学函数的调用常用数学函数的调用难点:输入输出格式符、常用数学函数的调用难点:输入输出格
2、式符、常用数学函数的调用现在学习的是第2页,共30页1.赋值运算符和表达式赋值运算符和表达式l格式:变量格式:变量=表达式表达式l功能:功能:先计算表达式的值,再赋给左边的变量先计算表达式的值,再赋给左边的变量,即:把,即:把表达式的值表达式的值存入左边变量所标识的存储单元存入左边变量所标识的存储单元中中例如:例如:c=max(a,b);/将函数返回值存放到变量将函数返回值存放到变量c标识的存储单元标识的存储单元l说明说明:l=是是“赋值赋值”的含义,的含义,不是数学中的不是数学中的“等于号等于号”,例如:,例如:n=n+1是将是将n标识存储单元的值加标识存储单元的值加1后存回到该单元;后存回
3、到该单元;左边必须是左值,通常为变左边必须是左值,通常为变量,不能是常量量,不能是常量,a+b=c是错误的。是错误的。x=y执行后,改变的是执行后,改变的是x值,值,y值值不变不变;l=两边的数据类型要求相同两边的数据类型要求相同,若不同,则在赋值前,若不同,则在赋值前自动把右边表达式自动把右边表达式的值转换为与左边类型相同的值的值转换为与左边类型相同的值,再赋给左边变量。,再赋给左边变量。如执行如执行x=20/3.0时,若时,若x为整型,则得到的为整型,则得到的x值为值为6(舍去小数部分舍去小数部分);(1)一般赋值符一般赋值符(=)现在学习的是第3页,共30页l包括:包括:+=、-=、*=
4、、/=、%=等等l功能功能:把把右边表达式的值同左边变量的值进行相应运算后,再把这个右边表达式的值同左边变量的值进行相应运算后,再把这个运算结果赋给左边的变量运算结果赋给左边的变量,该复合赋值表达式的值也就是保存在,该复合赋值表达式的值也就是保存在左边变量中的值左边变量中的值;例如:例如:x+=y;相当于相当于 x=x+y;x-=y;相当于相当于 x=x-y;x*=y;相当于相当于 x=x*y;x/=y;相当于相当于 x=x/y;x%=y;相当于相当于 x=x%y;(3)复合赋值符复合赋值符已知:已知:a=6,计算表达式:,计算表达式:a+=a-=a+a的值的值思路:赋值运算符结合性是从右到左
5、思路:赋值运算符结合性是从右到左先计算表达式先计算表达式a+a的值,得到的值,得到12(a=6);再计算表达式再计算表达式a-=12(即即a=a-12)值,得到值,得到a=-6,表达式值也为表达式值也为-6;最后计算最后计算a+=-6(即即a=a+(-6)值,得到值,得到a=-12,表达式值为表达式值为-12。l优点优点:简洁:简洁(可读性也不差可读性也不差),编译速度快,编译速度快现在学习的是第4页,共30页已知:已知:a=10,b=15,c=20。请说出下列表达式的值:。请说出下列表达式的值:a=b=c=3;a=5+(d=7);a=(b=6)/(c=2);printf(“%d”,a=b);
6、a=(a=b)=b*c;l赋值过程中的类型转换赋值过程中的类型转换l两侧类型一致时,直接赋值;两侧类型一致时,直接赋值;l两侧类型不一致,但都是算术类型时,两侧类型不一致,但都是算术类型时,自动将右侧的类型转换为左自动将右侧的类型转换为左侧类型后赋值侧类型后赋值,请注意以下情况:,请注意以下情况:lfloat型变量型变量=double型值型值;(损失精度损失精度)lint型变量型变量=char型值型值;(赋字符的赋字符的ASCII码码(整数值整数值)l少字节整型变量少字节整型变量=多字节整型值;多字节整型值;(赋低字节数值,即截断赋低字节数值,即截断)l定义变量时要定义变量时要防止数据溢出。防
7、止数据溢出。15出错,因为出错,因为a=b不是左值不是左值现在学习的是第5页,共30页例例1:编程实现:输入华氏温度,输出对应的摄氏温度。:编程实现:输入华氏温度,输出对应的摄氏温度。#include int main()float f,c;printf(请输入华氏温度请输入华氏温度:);scanf(%f,&f);c=5.0/9*(f-32);printf(华氏温度华氏温度:%f,对应摄氏温度对应摄氏温度:%fn,f,c);return 0;l思路:思路:程序的基本结构程序的基本结构(预处理指令、预处理指令、main();华氏温度转华氏温度转换为摄氏温度的公式:换为摄氏温度的公式:c=5*(f
8、-32)/9;定义哪些变量定义哪些变量现在学习的是第6页,共30页l格式:格式:变量变量=表达式表达式l赋值表达式赋值表达式 除了给左边变量赋值外,除了给左边变量赋值外,表达式本身也有值表达式本身也有值,其值,其值为为左边变量的值左边变量的值,也就是说:式子,也就是说:式子 x=y=0 是允许的,相当于是允许的,相当于 x=(y=0),即先给即先给y赋赋0,再赋表达式再赋表达式 y=0 的值的值(也为也为0)给给x,这样这样x、y 的值都赋的值都赋0值;值;l优先级:只高于逗号运算符,优先级:只高于逗号运算符,比其它运算符级别都低比其它运算符级别都低l结合性:从右到左结合性:从右到左例如:例如
9、:a=b=c=4(2)赋值表达式赋值表达式123现在学习的是第7页,共30页例例2:计算存款利息:有:计算存款利息:有1000元,想存一年。有三种可选方案:元,想存一年。有三种可选方案:(1)活活期,年利率为期,年利率为r1;(2)一年定期,年利率为一年定期,年利率为r2;(3)存两次半年期,年利存两次半年期,年利率为率为r3。问:哪一种方案更合算?。问:哪一种方案更合算?#include int main()float p0=1000,p1,p2,p3,r1=0.005,r2=0.035,r3=0.033;p1=p0*(1+r1);p2=p0*(1+r2);p3=p0*(1+r3/2)*(1
10、+r3/2);printf(存活期本息:存活期本息:%.2fn,p1);printf(存一年定期本息:存一年定期本息:%.2fn,p2);printf(存两次半年定期本息:存两次半年定期本息:%.2fn,p3);return 0;l思路:思路:程序的基本结构程序的基本结构(预处理指令、预处理指令、main();本息计算本息计算 公式:公式:p1=p0*(1+r),p2=p1*(1+r)=p0*(1+r)2;利率如何得到?利率如何得到?需要哪些需要哪些变量?变量?保留多少位小数?保留多少位小数?复利公式:复利公式:pn=p0*(1+r)n,适用适用于计算存款本息、人口总数、于计算存款本息、人口总
11、数、GDP等等现在学习的是第8页,共30页2.逗号运算符与表达式逗号运算符与表达式l格式格式:表达式表达式1,表达式表达式2,.,表达式表达式nl运算过程运算过程:l逗号表达式逗号表达式从左到右计算各个分表达式的值从左到右计算各个分表达式的值;l逗号逗号表达式的值和类型是最右端表达式的值和类型表达式的值和类型是最右端表达式的值和类型。l优先级:最后一级优先级:最后一级例例:x=(3+4,5.62,4&1,3.2-0.6);该表达式的值是该表达式的值是2.6,数据类型为数据类型为double问题问题:(x=3+4,5.6=0)返回返回x的算的算术术平方根平方根指数函数指数函数double exp
12、(double x)ex(e=2.718282)返回返回ex的的值值幂幂函数函数double pow(double x,double y)xy返回返回xy的的值值现在学习的是第10页,共30页说明:前说明:前12个函数的头文件是个函数的头文件是math.h,后后3个头文件是为个头文件是为stdlib.h函数名称函数名称原型原型数学表示数学表示功能功能自然自然对对数数函数函数double log(double x)lnx(x0)返回以返回以e为为底底x的的对对数数对对数函数数函数double log10(double x)log10 x(x0)返回以返回以10为为底底x的的对对数数向上取整向上取
13、整函数函数double ceil(double x)x 返回不小于返回不小于x的最小整数的最小整数向下取整向下取整函数函数double floor(double x)x 返回不大于返回不大于x的最大整数的最大整数随机函数随机函数int rand(void)返回返回0 32767之之间间整数整数改改变变随机随机数序列数序列void srand(unsigned s)生成与生成与s 对应对应的随机数序的随机数序列列终终止程序止程序运行运行void exit(int status)通常参数通常参数为为0表示正常表示正常结结束,非束,非0表示不正常表示不正常结结束束现在学习的是第11页,共30页l函数
14、声明函数声明:返回值类型返回值类型 函数名函数名(形式参数表形式参数表);l函数定义函数定义:定义函数如何实现其功能的部分定义函数如何实现其功能的部分,形式为形式为:返回值类型返回值类型 函数名函数名(形式参数表形式参数表)对于系统函数对于系统函数,只要用只要用#include 声明后即可调用声明后即可调用,函数定函数定义由系统自带,义由系统自带,用户不必了解其中细节。用户不必了解其中细节。l调用格式:调用格式:变量变量=函数名函数名(实际参数表实际参数表)l实际参数实际参数:可以是一个或多个可以是一个或多个(用逗号分开用逗号分开),也可以没有也可以没有l返回值返回值:返回指定类型的值返回指定
15、类型的值,当函数声明返回值为空类型当函数声明返回值为空类型(void)时时,不返不返回值回值l函数执行函数执行:实参匹配实参匹配(包括类型转换包括类型转换)执行函数体执行函数体返回函数值返回函数值(void例外例外)(2)函数调用函数调用现在学习的是第12页,共30页例例3:输入三角形的三边长,求其面积。:输入三角形的三边长,求其面积。#include#include int main()float a,b,c,s,area;printf(请输入三角形的三边长度请输入三角形的三边长度:);scanf(%f%f%f,&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*
16、(s-b)*(s-c);printf(三角形的三边长度三角形的三边长度:a=%f,b=%f,c=%fn,a,b,c);printf(三角形的面积三角形的面积:area=%fn,area);return 0;l思路:思路:程序的基本结构程序的基本结构(预处理指令、预处理指令、main();海伦公式:海伦公式:其中:其中:;定义哪些变量定义哪些变量?定义变量定义变量a,b,c,s,area输入输入a,b,c的值的值计算计算s,area输出输出a,b,c,area问题:问题:sqrt()的功能是什么?调用时应包含哪一个头文件?的功能是什么?调用时应包含哪一个头文件?现在学习的是第13页,共30页4.
17、语句语句lC程序结构:程序结构:语句语句以分号以分号(;)结束结束,其作用是,其作用是向计算机系统发出操作指令向计算机系统发出操作指令。现在学习的是第14页,共30页l语句分类语句分类:(5类类)l控制语句:控制语句:if、switch、for、while、dowhile、continue、break、return、goto等等l 函数调用语句函数调用语句:格式为格式为 变量变量=函数名函数名(实际参数表实际参数表);l 表达式语句:格式为表达式语句:格式为 表达式;表达式;l 空语句:空语句:;l 复合语句:格式为复合语句:格式为 l在在C程序中,最常用的语句是:程序中,最常用的语句是:l赋
18、值语句赋值语句(最基本最基本)l输入输出语句输入输出语句现在学习的是第15页,共30页5.顺序结构顺序结构l著名计算机科学家沃思提出一个公式:著名计算机科学家沃思提出一个公式:算法算法+数据结构数据结构=程序程序l数据结构:数据结构:对数据的描述对数据的描述(程序需要哪些数据,它们的类型、程序需要哪些数据,它们的类型、组织形式如何等组织形式如何等)l算法:算法:对操作的描述对操作的描述,即要求计算机进行操作的步骤,解决,即要求计算机进行操作的步骤,解决“做什做什么么”、“如何做如何做”问题。算法是程序的灵魂,一个人不了解算法就谈问题。算法是程序的灵魂,一个人不了解算法就谈不上程序设计。不上程序
19、设计。l算法的特性:算法的特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性有效性l算法的表示方法:自然语言、算法的表示方法:自然语言、传统流程图、传统流程图、N-S流程图流程图、伪代码、计、伪代码、计算机语言算机语言(1)算法算法现在学习的是第16页,共30页l传统流程图:传统流程图:(2)传统流程图和传统流程图和N-S流程图流程图起止框起止框输入输出框输入输出框处理框处理框判断框判断框流程线流程线连接点连接点注释框注释框lN-S流程图:去除箭头,全部算法写在流程图:去除箭头,全部算法写在一个矩形框内,可以由从属于它的多一个矩
20、形框内,可以由从属于它的多个子框构成,又称为盒图。个子框构成,又称为盒图。现在学习的是第17页,共30页l顺序结构:从上到下顺序执行,既不重复也不跳过语句的执行顺序结构:从上到下顺序执行,既不重复也不跳过语句的执行(3)程序的三种基本结构程序的三种基本结构l选择结构:根据条件,选择某一模块的语句执行选择结构:根据条件,选择某一模块的语句执行或或或或现在学习的是第18页,共30页l循环结构:根据条件,重复执行某一模块语句,重复的次数根据条件决循环结构:根据条件,重复执行某一模块语句,重复的次数根据条件决定定(3)程序的三种基本结构程序的三种基本结构(续续)l当型循环结构当型循环结构或或或或l直到
21、型循环结构直到型循环结构现在学习的是第19页,共30页例例4:求:求ax2+bx+c=0方程的根。方程的根。a、b、c由键盘输入,设由键盘输入,设b2-4ac0.。#include#include int main()double a,b,c,disc,p,q,x1,x2;printf(请输入一元二次方程的系数请输入一元二次方程的系数a、b、c(用空格分开用空格分开):);scanf(%lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(一元二次方程的系数一元二次方程的
22、系数:a=%f,b=%f,c=%fn,a,b,c);printf(一元二次方程的根一元二次方程的根:x1=%7.2f,x2=%7.2fn,x1,x2);return 0;定义变量定义变量a,b,c,disc,p,q,x1,x2输入输入a,b,c的值的值计算计算disc,p,q,x1,x2输出输出a,b,c和和x1,x2l思路:先计算判别式思路:先计算判别式disc=b2-4ac的值,再根据一元二次方的值,再根据一元二次方程的求根公式得到两个实数根程的求根公式得到两个实数根:设:设:得:得:x1=p+q,x2=p-q(4)顺序结构举例顺序结构举例现在学习的是第20页,共30页6.数据的输入输出数
23、据的输入输出在在C语言中,语言中,输入输出是程序中最基本的操作之一,几乎每一个输入输出是程序中最基本的操作之一,几乎每一个C程序都包含输入输出语句。程序都包含输入输出语句。l语言本身不提供输入输出语句,输入和输出操作是由语言本身不提供输入输出语句,输入和输出操作是由C标准函标准函数库中的函数来实现的数库中的函数来实现的。printf和和scanf不是语言的关键字,而不是语言的关键字,而只是库函数的名字,字符型、字符串的输入输出函数有:只是库函数的名字,字符型、字符串的输入输出函数有:putchar()、getchar()、puts()、gets();(1)输入输出的概念输入输出的概念l在使用输
24、入输出函数时,要在使用输入输出函数时,要在程序文件的开头用预编译指令在程序文件的开头用预编译指令#include (标准方式标准方式,从编译系统的子目录查找头文件,从编译系统的子目录查找头文件)或或#include “stdio.h”(先从存放用户源程序的目录查找,若找不到,则先从存放用户源程序的目录查找,若找不到,则按标准方式查找按标准方式查找)现在学习的是第21页,共30页l一般格式:一般格式:printf(格式控制符,输出项表)(格式控制符,输出项表)例如:例如:printf(”i=%d,c=%c n”,i,c);(2)用用printf()输出数据输出数据简略格式:简略格式:printf
25、(参数参数1,参数,参数2,,参数参数3)格式声明格式声明普通字符普通字符可以是常量、变量或表达式可以是常量、变量或表达式l格式字符格式字符l格式符:格式符:用来输出一个用来输出一个有符号的十进制整数有符号的十进制整数l可以在格式声明中指定输出数据的域宽可以在格式声明中指定输出数据的域宽 printf(%5d%5dn,12,-345);l%d输出输出int型数据,型数据,%ld输出输出long型数据型数据现在学习的是第22页,共30页l格式符:格式符:用来输出一个用来输出一个字符字符例如:例如:char ch=a;printf(%c,ch);printf(%5cn,ch);ls 格式符格式符:
26、用来输出一个:用来输出一个字符串字符串例如:例如:printf(%sn,C语言语言);lf 格式符:格式符:用来用来输出实数,以小数形式输出输出实数,以小数形式输出l不指定数据宽度和小数位数,用不指定数据宽度和小数位数,用%f,只能得到位小数,只能得到位小数double d=14.0;printf(“%fn”,d/3.0);l指定数据宽度和小数位数,用指定数据宽度和小数位数,用%m.nf(n为小数位,为小数位,m为总长度为总长度)printf(%20.15fnn,d/3.0);现在学习的是第23页,共30页lf 格式符格式符:用来:用来输出实数,以小数形式输出输出实数,以小数形式输出l输出的数
27、据输出的数据向左对齐向左对齐,用,用%-m.nfprintf(“%-20.15fn,d/3.0);说明:说明:float型数据只能保证型数据只能保证6位位有效数字;有效数字;double型数据能保证型数据能保证15位位有效数字;有效数字;计算机输出的数字不都是绝对精确有效的计算机输出的数字不都是绝对精确有效的printf(%30.25fnn,d/3.0);le 格式符格式符:指定指定以指数形式以指数形式输出实数输出实数,l%e:VC+给出小数位数为位,指数部分占给出小数位数为位,指数部分占5列,小数点前必须列,小数点前必须有而且只有有而且只有1位非零数字位非零数字 printf(%enn,12
28、34.56789);现在学习的是第24页,共30页le 格式符格式符:指定指定以指数形式以指数形式输出实数输出实数,l%m.ne:(n为小数位,为小数位,m为总长度为总长度,指数部分占指数部分占5列列)printf(%15.5enn,1234.56789);li 格式符格式符:作用与:作用与%d相同,较少使用相同,较少使用lo 格式符格式符:以:以八进制形式八进制形式输出整数,不带符号输出整数,不带符号printf(%onn,65);lx 格式符格式符:以:以十六进制形式十六进制形式输出整数,不带符号输出整数,不带符号(x/X决定字母大小决定字母大小写写)printf(%xn,12000);p
29、rintf(%Xnn,12000);lu格式符格式符:输出无符号整数:输出无符号整数lg格式符格式符:输出浮点数时,由系统决定选用:输出浮点数时,由系统决定选用f格式或格式或g格式格式l%格式符格式符:输出一个:输出一个%号号现在学习的是第25页,共30页现在学习的是第26页,共30页l一般格式:一般格式:scantf(格式控制符,地址列表)(格式控制符,地址列表)(3)用用scanf()输入数据输入数据格式控制符格式控制符以开始以开始,以一个格式字符结束,中间可以插入附加的,以一个格式字符结束,中间可以插入附加的字符,例如:字符,例如:scanf(a=%f,b=%f,c=%f,&a,&b,&
30、c);与与printf格式符类似格式符类似可以是变量的地址,或字符串的首地址可以是变量的地址,或字符串的首地址现在学习的是第27页,共30页l使用使用scanf函数时应注意的问题函数时应注意的问题scanf(”%f%f%f”,a,b,c);错错(不是地址列表不是地址列表)scanf(”%f%f%f”,&a,&b,&c);对对(是地址列表是地址列表)对于对于scanf(a=%f,b=%f,c=%f,&a,&b,&c);1 3 2 错错(与附加字符不对应与附加字符不对应)a=1,b=3,c=2 对对 (与附加字符对应与附加字符对应)a=1 b=3 c=2 错错(与附加字符不对应与附加字符不对应)对
31、于对于scanf(”%c%c%c”,&c1,&c2,&c3);abc 对对(字符输入字符输入)a b c 错错(空格作为有效字符输入空格作为有效字符输入)对于对于scanf(”%d%c%f”,&a,&b,&c);(遇空格、回车、遇空格、回车、tab键或非法字符键或非法字符时结束时结束)若输入若输入 1234a123o.26 现在学习的是第28页,共30页lputchar():输出一个字符:输出一个字符格式格式:putchar(字符型数据或整数字符型数据或整数)(4)字符数据的输入输出字符数据的输入输出lgetchar():输入一个字符:输入一个字符格式格式:变量变量=getchar()说明:不
32、带参数,通常要保存输入的字符说明:不带参数,通常要保存输入的字符例例5:输入三个小写字符,转变成大写,并输出。:输入三个小写字符,转变成大写,并输出。#include int main()char a,b,c;a=getchar();b=getchar();c=getchar();putchar(a-32);putchar(b-32);putchar(c-32);putchar(n);return 0;问题:问题:为什么不是输入一个为什么不是输入一个字符显示一个字符?字符显示一个字符?现在学习的是第29页,共30页本讲小结本讲小结n赋值运算符与表达式:赋值运算符与表达式:一般赋值运算符,赋值表
33、达式,复合赋值一般赋值运算符,赋值表达式,复合赋值符;符;n逗号运算符与表达式逗号运算符与表达式;n常用数学函数:常用数学函数:常用数学函数的名称、参数、返回类型,数学函数的常用数学函数的名称、参数、返回类型,数学函数的调用;调用;n语句:语句:程序结构,语句的分类;程序结构,语句的分类;n顺序结构顺序结构:算法,传统流程图和:算法,传统流程图和N_S流程图,程序的三种基本结构;流程图,程序的三种基本结构;n数据的输入输出数据的输入输出:输入输出的概念,:输入输出的概念,printf(),scanf(),格式控制,格式控制符,字符数据的输入输出。符,字符数据的输入输出。现在学习的是第30页,共30页