第4章第5章ppt课件.ppt

上传人:豆**** 文档编号:77667702 上传时间:2023-03-16 格式:PPT 页数:104 大小:510.50KB
返回 下载 相关 举报
第4章第5章ppt课件.ppt_第1页
第1页 / 共104页
第4章第5章ppt课件.ppt_第2页
第2页 / 共104页
点击查看更多>>
资源描述

《第4章第5章ppt课件.ppt》由会员分享,可在线阅读,更多相关《第4章第5章ppt课件.ppt(104页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第4章第5章ppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望例:计算s=1+2+3+50#include main()int i=0,s=0;loop:if(i51)s=s+i;i=i+1;goto loop;couts=sendl;11/16/202224.1.2 while格式格式 while ;例例:计算计算 s=1+2+3+5011/16/20223#include main()int i=0,s=0;while (i50)i=i+1;s=s+i

2、;couts=sendl;11/16/202244.1.3 do-while格式格式 do ;while 例例:计算计算 s=1+2+3+5011/16/20225#include main()static int i,s;do s=s+i;i=i+1;while(i51);couts=sendl;11/16/20226 4.1.4 for()格式格式 for(;)说明:说明:1.决定了循环的初值决定了循环的初值,决定循环的条件决定循环的条件,决定循环的增决定循环的增量。量。2.在循环中只执行一次。在循环中只执行一次。,在循环中每次都要执行一次。在循环中每次都要执行一次。11/16/20227

3、例:求例:求S=1+2+3+100 程序程序1:#include main()int i,s=0;for(i=1;i101;i+)s+=i;cout“sum=”sendl;11/16/20228程序程序2:#include main()int i=1,s;for(s=0;i101;i+)s+=i;coutsum=sendl;11/16/20229程序程序3:#include main()int i=1,s=0;for(;i101;)s+=i+;coutsum=sendl;11/16/202210程序程序4:#include main()int i=1,s=0;for(;i101;s+=i+);

4、coutsum=sendl;11/16/202211程序程序5:#include main()int i=100,s=0;for(;i;i-)s+=i;coutsum=sendl;11/16/202212例:编程计算下列各项例:编程计算下列各项S=1+2+3+100S=1+22+32+1002S=1+3+5+99S=1+1/2+1/3+1/100S=1/1+1/22+1/32+1/1002n!=1*2*3*nS=k!=1+2!+3!+n!S=1-2+3+(-1)nnS=1-1/2+1/3+(-1)n/nS=1-22+32-+(-1)n 1002e=1+1/1!+1/2!+1/3!+1/n!直到

5、最后一项小于直到最后一项小于0.0000111/16/202213ex=1+x/1!+x2/2!+x3/3!+xn/n!直到最直到最后一项小于后一项小于0.001s=1-1/2!+1/3!+(-)(n+1)/n!直到最后一直到最后一项小于项小于0.001s=1+x+x/2!+x/3!+x/n!直到最后一项直到最后一项小于小于0.00001s=1-x+x/2!-x/3!+(-)(n+1)x/n!直到最直到最后一项小于后一项小于0.001/4=1-1/3+1/5-1/7+求求,直到最后一项直到最后一项小于小于0.00111/16/2022142.循环可以从小向大循环可以从小向大,也可以从大到小。也

6、可以从大到小。例例:计算计算s=1+2+3+100#include main()int i,s=0;for(i=100;i0;i-)s=s+i;cous=sendl;11/16/2022153循环变量的值起三个作用,一是记数,二是可循环变量的值起三个作用,一是记数,二是可以参加循环体计算,三是用做数组的下标。以参加循环体计算,三是用做数组的下标。例例:计算计算10个数的和个数的和#include main()int i,s=0;static int a10=1,3,4,5,4,3,3,3,4,2;for(i=1;i10;i+)s=s+ai;couts=sendl;11/16/2022164.三

7、个表达式可以有,也可以全无,但三个表达式可以有,也可以全无,但“;”不不能少。如果表达式能少。如果表达式2无,程序将进入无限循环。无,程序将进入无限循环。5.可以用可以用break命令中断循环命令中断循环.例例:计算计算s=1+3+5+n直到最后一项为直到最后一项为99止止.#include main()int i,s=0;for(i=1;i=i+2)if(i=101)break;s=s+i;coutsendl;11/16/2022176.可以用可以用continue命令中断当前这一次循环命令中断当前这一次循环,继续下一次继续下一次循环循环.例例:计算计算s=1+3+5+99#include

8、main()int i,s=0;for(i=1;i100;i+)if(i%2=0)continue;s=s+i;couts=sendl;11/16/2022184.2 多层循环多层循环例:开设例:开设3门课程门课程,计算每个学生平均成绩计算每个学生平均成绩#include main()int i,j,s=0;int a53=87,78,79,87,98,67,56,79,98;for(i=0;i3;i+)s=0;for(j=0;j3;j+)s=s+aij;coutaij ;couts/3endl;11/16/2022194.3 循环中断循环中断 break 4.4 exit()函数函数例例:从

9、键盘上输入字母从键盘上输入字母,然后输出比它的然后输出比它的ASCII码大码大1 的字的字母母#include#include stdio.h main()char ch=a;coutinput letter s=;11/16/202220while(ch!=#)ch=getchar();if(ch=z|ch=Z)putchar(ch-25);else putchar(ch+1);11/16/202221 题题1:输出九九乘法表:输出九九乘法表 1 2 3 4 5 6 7 8 91 1 2 3 4 5 6 7 8 92 2 4 6 8 10 12 14 16 189 9 18 27 36 45

10、 54 63 72 8111/16/202222#include#include iomanip.hmain()int k,j;cout ;for(k=1;k10;k+)coutksetw(5);/width(5)coutn;11/16/202223 for(k=1;k10;k+)coutsetw(5)k;for(j=1;j10;j+)coutsetw(5)k*j;coutendl;/cout.width(5);coutk*j;11/16/202224#include#include iomanip.hmain()int k,j;cout ;for(k=1;k10;k+)cout.width(

11、5);coutk;coutn;for(k=1;k10;k+)coutsetw(5)k;for(j=1;j10;j+)cout.width(5);coutk*j;coutendl;11/16/202225题题2:判断:判断m是否是素数。是否是素数。#include main()int k,m,h=1;cinm;for(k=2;km;k+)if(m%k=0)h=0;if(h=1)coutm“is a prime number”endl;11/16/202226 题题3;求出;求出100以内的所有素数以内的所有素数#include main()int k,m;for(m=3;m100;m=m+1)f

12、or(k=2;km;k+)if(m%k=0)break;if(k=m)coutmis a prime numberendl;11/16/202227题题4:求:求m,n 的最大公约数的最大公约数#include main()int m,n,m1,n1,r;cinmn;m1=m;n1=n;r=m%n;while(r!=0)m=n;n=r;r=m%n;coutm=m1endl;coutn1=n1endl;coutr=nendl;11/16/202228题5:求Fibonaccii(斐波那契)数列中前20项中每一项(递推法)0,1,1,2,4,7,13,#include main()long k,a

13、=0,b=1,c=1,d;for(k=1;k18;k+)d=a+b+c;coutdt;a=b;b=c;c=d;11/16/202229题题6:2000年人口年人口13亿,年增长亿,年增长0.5%和和2.1%,多少年后达到或超过,多少年后达到或超过20亿亿(87,21)?#include main()int n=0;float f=13,e=0.005;while(f20)f=f*(1+e);n=n+1;coutnendl;11/16/202230题题7:产生:产生10个学生的成绩个学生的成绩,呈正态分布呈正态分布#include#include#include math.h#include s

14、tdlib.h#include iomanip.h main()int k;float x;srand(time(NULL);for(k=1;k11;k+)x=rand()/32767.0*90;x=sin(x*3.14/180)*71+30;cout(int)xsetw(5);if(k%10=0)coutendl;11/16/202231题题13:梯形法求积分:梯形法求积分:sin(x)dx题题14:用牛顿迭代法求方程用牛顿迭代法求方程x5+2x3-x2+x+1=0在在0附近的根。附近的根。题题15:找出:找出1000以内的水仙花数。三位数的立方和等于自身以内的水仙花数。三位数的立方和等于自

15、身(13+53+33=153)题题16:根据以下算术式,求:根据以下算术式,求A、B、C、D A B C D -C D C-A B C题题17:输出图形:输出图形 A A B C A B C D E A B C D E F G11/16/202232 第第5 5章章 函数及其应用函数及其应用5.1 5.1 函数种类函数种类5.1.1 命令函数例如:getchar(),putchar()等。5.1.2标准库函数例如:fabs(),pow(),rand(),sin(x),sqrt(),fexp()5.1.35.1.3自定义函数自定义函数 11/16/2022335.2 自定义函数的概念及使用方法自

16、定义函数的概念及使用方法例1:求两个数中的最大数#include int imax(int m,int n)return(mn?m:n);void main()int a=6,b=9;coutimax(a,b);11/16/202234例2:求x的n次方#include iostream.hvoid main()float mpow(float,int);coutpow=mpow(3.,3)endl;float mpow(float a,int n)int i;float k=1;for(i=1;i=n;i+)k=k*a;return(k);11/16/2022355.3 5.3 自定义函数的

17、三种形式自定义函数的三种形式5.3.1 无参函数,例如main(),getchar()等。主函数与子函数之间不传输数据。例:输出字符四方形 *void print()int i;for(i=1;i5;i+)coutr;res(a,b,r);coutr=rsetw(10)a=asetw(10)b=bendl;11/16/202242float res(float&a,float&b,float r)a=3.14159*r*r;b=2*3.14159*r;return 0;例:编写函数(过程、子程序)程序1.求n的阶乘 f(n)2.求三个数的最大数(可以求多个数的最大数)3.求两个正整数的最大公约

18、数(可以求多个数的最大公约数)f(m,n)4.求n+(n+1)+(n+2)+(n+k)5.用子函数完成x2,x3,xn11/16/2022435.5 C+5.5 C+库函数库函数 被直接调用的函数称为库(内部)函数。函数名 函数原型 要用到的头文件abs()int abs(int n)stdlib.hfabs()double abs(double x)math.hcos()double cos(double x)math.hexp()double exp(double x)math.hlog()double log(double x)math.hpow()double pow(double x

19、,double y)math.hsqrt()double sqrt(double x)math.hsin()double sin(double x)math.htan()double tan(double x)math.hkbhit()int kbhit()conio.hexit()void exit(int n)stdlib.hrand()double rand(double x)stdlib.h11/16/2022445.6 作用域和存储类作用域和存储类5.6.1 作用域1.块作用域 块内说明的变量只能在本块有效。2.文件作用域 文件作用域就是全局作用域。11/16/202245例:读程序

20、,观察全局变量和局部变量的关系#include int i;/全局变量,文件作用域void main()i=5;/文件作用域的i赋初值 /子块1 int i;/局部变量,块作用域 i=7;couti=iendl;/输出7 couti=iendl;/输出5 11/16/2022463.函数原型作用域 函数的作用域只限定在函数原型的函数中。4.函数作用域 在函数内均有效,不受块作用域的限制,只有标号属于函数作用域(在goto语句中使用)。5.6.2 存储类 1.局部变量及其概念l形参是局部变量。l在一个复合语句中定义的变量。l在一个函数中定义的变量。11/16/2022472.全局(外部)变量及其

21、概念l函数外部定义的变量。l用extern 说明的变量。3.动态(自动)变量l程序运行期间,分配内存单元,运行结束,内存单元就释放。l形参、局部变量都是动态变量。l动态变量用auto说明或省略。11/16/2022484.静态变量l调用函数结束,变量值保留,下次调用值仍存在。l静态变量用static 说明。l数组只有定义成静态时,才能初始化。l静态变量自动赋0值。l何时需要定义静态数组:保留函数的变量值和数组初始化。11/16/202249例:读程序,理解静态变量#include#include void main()int count(int);do count(0);while(!kbhi

22、t();cout”Function COUNT()have been called”count(1)”timesn”11/16/202250int count(int i)static int c=0;if(i)return c;else return+c;return 0;说明:未从键盘上按下键时,反复循环调函数count(),C一直自加,从键盘上一旦按下键时,结束循环,输出C值。11/16/2022515.寄存器变量作用:存取速度快。特点:只允许使用三个寄存器变量,且必须是形参和局部变量才能使用。用法:用 register 说明。11/16/2022525.7 5.7 内联函数内联函数 大

23、量、多次调用函数,要占计算机很多时间,为了用空间换时间,才用内联函数。只要在定义函数,或者对函数原型说明时,在行首加上inline 即可。例:求圆面积#includeinline double calArea(double radius)return 3.14*radius*radius;11/16/202253void main()double r=3.0;/r是圆的半径double area;area=calArea(r);/调用内联函数,编译时此处被替换为calArea函数体语句coutareaendl;return 0;11/16/2022545.8 带有缺省参数的函数带有缺省参数的函

24、数 函数说明时,先对形参初始化,调用函数时,若给实参,就使用实参,否则使用说明时给出的初始值。例:求四方体体积#include#include int get_volume(int length,int width=2,int height=3);11/16/202255void main()int x=10,y=12,z=15;cout Some box data is ;cout get_volume(x,y,z)endl;cout Some box data is ;cout get_volume(x,y)endl;cout Some box data is ;cout get_volu

25、me(x)endl;11/16/202256cout Some box data is;cout get_volume(x,7)endl;cout Some box data is;cout get_volume(5,5,5)endl;return 0;int get_volume(int length,int width,int height)coutsetw(5)lengthsetw(5)widthsetw(5)height;return(length*width*height);11/16/202257说明:l默认参数的说明一定要放在函数使用之前。l对形参的初始化可以是任意表达式。l如部

26、分形参初始化,必须自右向左。l如果函数说明出现在不同程序块,允许提供和使用不同的默认值。11/16/2022585.9 5.9 参数数目可变函数参数数目可变函数 根据需要,函数的参数可多可少,函数参数多少可变的函数称参数数目可变函数。例:从n个数中找出最大数#include#include 11/16/202259int main()int a,b,c,d,e;int max(int,int.);cinabcde;coutThe bigger between a and b is max(2,a,b)endl;coutThe bigger in the five number is max(5

27、,a,b,c,d,e)endl;return 0;11/16/202260int max(int num,int integer.)va_list ap;int m=integer;va_start(ap,integer);for(int i=1;im)m=t;coutiendl;va_end(ap);return m;11/16/202261说明:l必须使用头文件stdarg.h。l定义函数和函数原型的书写要求。l要用到三个专用函数和一个类型定义关键字:va_start,va_arg,va_end和va_list。l请将此题改为求实型数最大值。5.10 5.10 函数重载(函数重载(over

28、loadoverload)一个函数可以当几个函数使用。根据形参的类型,调用不同的函数。函数定义不能少。11/16/202262例:用一个函数add()实现两个整型数相加和两个实型数相加#includevoid main(void)int m,n;double x,y;int add(int m,int n);double add(double x,double y);coutmn;11/16/202263coutinteger“m+n=add(m,n)endl;coutxy;coutreal number x+y=add(x,y)endl;int add(int m,int n)return

29、m+n;double add(double x,double y)return x+y;11/16/2022645.11 5.11 外部函数外部函数能被其他文件调用的函数称为外部函数。外部函数要用extern 说明。5.12 5.12 函数递归函数递归函数递归的两个基本条件1.边界条件2.递归表达式3.函数自身调用自身11/16/202265举例:计算 n!(c=f(n-1)*n)#include long fac(int n)long f;if(n=1)c=1;else c=fac(n-1)*n;return(f);11/16/202266void main()long fac(int n)

30、;int n;long y;coutn;y=fac(n);coutn!=yendl;11/16/2022671.计算 1+2+3+1002.计算 0,1,1,2,3,5,8,.第前20项(return(f(n-1)+f(n-2);)5.13 5.13 编译予处理编译予处理概念:在对程序编译之前就进行替换处理,称予处理(有三种:嵌入指令(文件包含)、宏定义、和条件编译)。用途:1.有利于程序的移植与兼容.2.增加程序的兼容性.3.减少程序的运行时间4.减少程序的长度11/16/2022685.13.1 嵌入指令#include 方法:建立多个*.cpp文件,按执行顺序放在#include 中。5

31、.13.2 宏定义方法与用途1.不带参数的宏定义(用一个标识符代表一个字符串或一个常量,不做语法检查。)#define PI 3.14159 (宏定义的标识符常使用大写字母,以有别于变量)11/16/202269#define N 100 (N可以用作数组的下标)#define R 3#define A PI*R*R#define C CONPUTER#define pr cin#define N“n”例:prxN11/16/2022702.带参数的宏定义(用一个标识符代表一个函数,不做语法检查。)#define PI 3.14159#define circle(A,L,R)A=PI*R*R;

32、L=2*PI*PI#define MAX(x,y)(x)(y)?(x)?(y)#define mul(x1,x2)x1*x2/注意(x1)*(x2)例:定义一个求两个数之积的宏名mul,且求:2+3,6+2和3.1,3的积#define mul(x1,x2)x1*x2main()coutmul(2+3,6+2)mul(3.1,2);11/16/202271说明:1.根据计算的结果决定其类型。2.实参是表达式时,形参要用()。3.一个#define 只能定义一个宏名。4.带参宏近似带参函数的定义及用法。5.带参宏的宏中可以有进出两种参数。6.宏名可以作为定义数组时的下标(static int a

33、N )7.如果要修改宏名的内容,只能用define。8.可以使用#undef 解除宏定义。11/16/202272例:定义一个宏,求x 的绝对值#define abs(x)(x0?x:-x)使用时:int a=-3;coutabs(a);例:定义一个宏,判断x 是否是偶数(偶数取 1)#define num(x)(x%2?0:1)11/16/2022735.13.3 条件编译指令格式1:#if#else#endif11/16/202274格式2(连续判断)#if#elif#else#endif11/16/202275 例:读程序,理解条件编译#include#define NUM 100mai

34、n()#if num=100 cout”hello”endl;#else cout”thank”endl;#endifreturn 0;11/16/202276以上程序相当于:main()#include cout”hello”endl;return 0;11/16/2022775.13.4 测试某个宏是否定义#ifdef (如果定义则)#ifndef (如果没有定义则)#endif (定义结束)5.14程序的多文件组织程序的多文件组织5.14.1 连接属性内部连接 同一程序块内。外部连接 不同程序块实现的程序块连接11/16/202278 5.14.2 分割编译 独立编译、独立保存,最后再连

35、接。11/16/202279第第6章章 数组及其应用数组及其应用6.1 数组的概念数组的概念 下标变量的集合。一维数组、二维数组、和多维数组以及字符串数组及在计算机内存中排列方法。6.2 数组的定义及初始化数组的定义及初始化(一维和多维一维和多维)static int a10,b200=1,2,3,4,5;static float d56=1,2,3,4,5,0,2,3;int k333;11/16/202280说明:1.static 定义为静态数组,地址固定;auto 定义动态数组,不用就撤消。2.static 可以初始化数组,不给数值时,元素自动置0。3.数组名的起法与变量名字起法相同。4

36、.数组名字与变量名字不能相同。5.数组元素从0 开始。(A0)11/16/2022816.数组又称做数组变量。7.数组中的一个单元又称做一个元素,一个元素可以放一个数据。8.注意定义数组时的下标和使用数组时下标的区别。9.引用数组或给数组赋值时,下标不能越界使用。否则可能引起计算机系统崩溃。10.不用static 定义数组时,自动为auto(局部)11.无论是局部变量还是局部数组变量,注意未初始化时,其中的值是任意的。11/16/2022826.3 数组的输入(赋值)、输出和应用数组的输入(赋值)、输出和应用6.3.1 一维数组的应用例:将一维数组反序放入另一个一维数组。#include vo

37、id main()int a10,b10;int i;for(i=0;i10;i+)11/16/202283ai=i*2-1;b10-i-1=ai;for(i=0;i10;i+)coutAi=ai;cout Bi=biendl;11/16/202284例:将10个数字反序输出。#include void main()int a10=1,2,3,4,5,6,7,8,9,10;int i;for(i=0;i10;i+)couta9-iendl;11/16/202285例:将某一企业12个月的月产值、年总产值和年均产值放入一个一维数组。#include void main()int a15=0,1,

38、2,3,4,5,6,7,8,9,10,11,12,0;int i;for(i=1;i13;i+)a13+=ai;a14=a13/12;for(i=1;i15;i+)coutaiendl;11/16/202286例:求数列的前20项:0,1,1,2,4,7,#include void main()static int i,a20=0,1;for(i=2;i20;i+)ai=ai-1+ai-2;a14=a13/12;for(i=0;i15;i+)coutaiendl;11/16/202287例:从n个评委的打分中找最高分。#include#define N 10void main()int aN,

39、i,max=0;for(i=0;iai;for(i=0;iN;i+)if(maxai)max=ai;for(i=1;iN;i+)coutaiendl;coutmax;11/16/202288例:将n个数字排序,并输出排序后的结果和排序前的数值。11/16/202289例:统计n个1 到 m-1 中每个数出现的个数。#include#include stdlib.h#include iomanip.h#define M 10void main()static int n,aM,i,k;cinn;srand(time(NULL);for(i=0;in;i+)k=rand()/32787.*M;ak

40、=ak+1;for(i=0;iM;i+)coutaistr2,其值为正整数 str1=str2,其值为0 str1str2,其值为负整数 strlen(str)测串 str长度 strlwr(str)将大写字母转换为小写字母 strupr(str)将小写字母转换为大写字母11/16/202294说明:1.其中str为字符串或者字符数组.2.字符串的比较规则 相同为相等 (“ok”=“ok”)部分相同,长串为大 (“work”Beijing”11/16/2022956.4.4 字符串数组的应用字符串数组的应用例:将存入字符数组的英文单词输出。例:将 n个国家名字(单词)排序#include io

41、stream.h#include string.hvoid main()int k,j;char name20=iraq,iran,india,nepal,norway,peru,poland,spain,sudan,tunis;11/16/202296char d20;for(k=0;k9;k+)for(j=k+1;j0)strcpy(d,namej);strcpy(namej,namek);strcpy(namek,d);11/16/202297for(k=0;k10;k+)coutnameka;for(k=0;ak;k+)if(ak=l|ak=L)s+=1;coutaendl;couts

42、endl;11/16/202299 6.5 数组元素作为函数参数数组元素作为函数参数例:求5以内的平方,存于一维数组#include iostream.h#include iomanip.hvoid main()int a52,k;int s(int x);11/16/2022100for(k=0;k5;k+)ak0=k+1;ak1=s(ak0);coutak0setw(8)ak1endl;int s(int x)return(x*x);11/16/20221016.6 数组作为函数的参数数组作为函数的参数例:计算四个季度产值和(结果放在每行的第5元素)。#include void RowSu

43、m(int a 5,int nrow)for(int i=0;i nrow;i+)for(int j=0;j 4;j+)ai4+=aij;11/16/2022102void main(void)static int Table35=1,2,3,4,2,3,4,5,3,4,5,6;/调用子函数,计算各行和RowSum(Table,3);/输出数组元素for(int i=0;i 3;i+)for(int j=0;j 5;j+)cout Tableij ;cout endl;11/16/2022103说明:1.整个数组作为实参时,只写数组名即可 如/A行2.函数定义中必须给出列下标,行下标可以不给出。3.函数中使用数组仍要进行类型说明。4.数组作为实参和形参,有一方改变了其元素值,双方的数组的元素值均改变。5.使用数组做实参和形参,可以函数程序中带回多个值。11/16/2022104

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁