大学计算机C语言第二章概要课件

PPT
  • 阅读 27 次
  • 下载 0 次
  • 页数 94 页
  • 大小 1.740 MB
  • 2022-12-01 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
大学计算机C语言第二章概要课件
可在后台配置第一页与第二页中间广告代码
大学计算机C语言第二章概要课件
可在后台配置第二页与第三页中间广告代码
大学计算机C语言第二章概要课件
可在后台配置第三页与第四页中间广告代码
大学计算机C语言第二章概要课件
大学计算机C语言第二章概要课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 94
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】大学计算机C语言第二章概要课件.ppt,共(94)页,1.740 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-77185.html

以下为本文档部分文字说明:

编写一个C程序,输入a,b,c,输出其中最大值#include<stdio.h>intmain()//定义主函数{//主函数体开始intmax(intx,inty);//对被调用函数max的声明inta,b,c,d;

//定义变量a,b,cscanf(“%d,%d,%d”,&a,&b,&c);//输入变量a、b、c的值d=max(max(a,b),c);//2次调用max函数,将得到的值赋给dprintf("max=%d\n",d)

;//输出d的值return0;//返回函数值为0}25(5)22.5(510)20(10)xxyxxxx22221111147101003*i-2例5.2(2007年山东卷(文))阅读如下程序框,若输入的是100,则输出的变量和的

值依次是()A.2550,2500B.2550,2550C.2500,2500D.2500,2550辗转相除法例:225和135的最大公约数225=135*1+90135=90*1+4590=45*2+0辗转相除法所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的

数。若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数。辗转相除法第一步:输入两个正整数m,n(m>n).第二步:计算m除以n所得的余数r.第三步:m=n,n=r.第四步:若r=0,则m,n的最大

公约数等于m;否则转到第二步.第五步:输出最大公约数m.最大公约数求98和63的最大公约数解:98=63*1+3563=35*1+2835=28*1+728=7*4+0例:求98与63的最大公约数.解:由于63不是偶数,把98和63以大数减小数,并辗转相减98-63=

3563-35=2835-28=728-7=2121-7=1414-7=7所以,98和63的最大公约数等于7更相减损术所谓更相减损术,对于给定的两个数,先判断是否是偶数,若是,用2约简,直到有一个数变成奇数,然后用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去

较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公约数。更相减损术算法步骤第一步:输入两个正整数a,b(a>b);第二步:若a不等于b,则执行第三步;否则转到第五步

;第三步:把a-b的差赋予r;第四步:如果b>r,那么把b赋给a,把r赋给b;否则把r赋给a,执行第二步;第五步:输出最大公约数b.习题1、分别用辗转相除法和更相减损术求324,243,135的最大公约数;求多项式1110()n

nnnfxaxaxaxa()fx1210(())).nnnaxaxaxaxa0101,nnvavvxa21232310nnnnvvxavvxavvxaV0=anVk=vk-1x+an-k(k=1,2,….n)例:用秦九韶算法求多

项式当x=2时的值5432()23456fxxxxxx5432:()23456((((2)3)4)5)6fxxxxxxxxxxx解010213243541,243114265576120vvvxvvxvvxvvxvvx1、

求f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值26772、求f(x)=2x6-5x5-4x3+3x2-6x当x=5时的值.15170秦九韶算法特点:把求一个n次多项式的值转化为求

n个一次多项式的值,通过这种转化,把运算的次数由至多n(n+1)/2次乘法运算和n次加法运算,减少为n次乘法运算和n次加法运算,大大提高了运算效率。否开始输入a0,a1,a2,a3,a4,a5输入x0n≤5?n=1v=a5v=vx0+a5-nn

=n+1输出v结束是第2章算法---程序的灵魂一个程序主要包括以下两方面的信息:(1)对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式这就是数据结构(datastructure)(2)对操作的描述。即要求计算机进行操作的步骤也就是

算法(algorithm)数据是操作的对象操作的目的是对数据进行加工处理,以得到期望的结果著名计算机科学家沃思(NikiklausWirth)提出一个公式:算法+数据结构=程序一个程序除了算法和数据结构这主要要素外,还应当采用结构化程

序设计方法进行程序设计,并且用某一种计算机语言表示算法、数据结构、程序设计方法和语言工具是一个程序设计人员应具备的知识算法是解决“做什么”和“怎么做”的问题程序中的操作语句,是算法的体现不了解算法就谈不上程序设计2.1什么是算

法2.2简单的算法举例2.3算法的特性2.4怎样表示一个算法2.5结构化程序设计方法2.1什么是算法广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”对同一个问题,可以有不同的解题方法和步骤

为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法1001nn2.1什么是算法计算机算法可分为两大类别:数值运算算法非数值运算算法数值运算的目的是求数值解非数值运算包括的面十分广泛,最常见的是用于事务管理领域2.2简单的算法举例例2.1求1×2×

3×4×5可以用最原始的方法进行:步骤1:先求1*2,得到结果2。步骤2:将步骤1得到的乘积2再乘以3,得到结果6。步骤3:将6再乘以4,得24。步骤4:将24再乘以5,得120。这就是最后的结果。例2.1求1×2×3×4×5×…×1000

太繁琐2.2简单的算法举例改进的算法:设变量p为被乘数变量i为乘数用循环算法求结果2.2简单的算法举例S1:使p=1,或写成1pS2:使i=2,或写成2iS3:使p与i相乘,乘积仍放在变量p中,可表示为:p*ipS4:使i的值加1,

即i+1iS5:如果i不大于5,返回重新执行S3;否则,算法结束最后得到p的值就是5!的值若是1000,求什么?2.2简单的算法举例S1:使p=1,或写成1pS2:使i=2,或写成2iS3:使p与i相乘,乘积仍放在变量p中,可表示为:p*ipS4:使i的值加1

,即i+1iS5:如果i不大于5,返回重新执行S3;否则,算法结束若求1×3×5×7×9×11332211相当于i≦11例2.2有50个学生,要求将成绩在80分以上的学生的学号和成绩输出。用ni代表第i个学生学号,gi表示第i个学生成绩S1:1iS2:如果gi≥80,则输出n

i和gi,否则不输出S3:i+1iS4:如果i≤50,返回到步骤S2,继续执行,否则,算法结束例2.3判定2000—2500年中的每一年是否闰年,并将结果输出。闰年的条件:(1)能被4整除,但不能被100整除的年份都是闰年,如2008、2012、

2048年(2)能被400整除的年份是闰年,如2000年不符合这两个条件的年份不是闰年例如2009、2100年四年一闰,百年不闰;四百年再闰设year为被检测的年份。算法表示如下:S1:2000yearS2:若year不能被4整除,则输出

year的值和“不是闰年”。然后转到S6S3:若year能被4整除,不能被100整除,则输出year的值和“是闰年”。然后转到S6S4:若year能被400整除,则输出year的值和“是闰年”,然后转到S6S5:其他情况输出year的值和“不是闰年”S6:year+1yearS7:

当year≤2500时,转S2,否则停止year不能被4整除非闰年year被4整除,但不能被100整除闰年year被100整除,又能被400整除闰年其他非闰年逐渐缩小判断的范围例2.4求规律:①第1项的分子分母都是1②第2项的分母是2,以后每一项的分母子都是前一项的分母

加1③笫2项前的运算符为“-”,后一项前面的运算符都与前一项前的运算符相反10019914131211111111(1)*1*(1)*...1*(1)*23499100例2.4求

S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)*signS5:term=sign*(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno≤100返回S4;否则算法结束10019914131211

sign—当前项符号term—当前项的值sum—当前各项的和deno—当前项分母-1-1/21-1/23满足,返回S4例2.4求S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)*signS5:term=s

ign*(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno≤100返回S4;否则算法结束10019914131211sign—当前项符号term—当前项的值sum—当前各项的和den

o—当前项分母11/31-1/2+1/34满足,返回S4例2.4求S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)*signS5:term=sign*(1/deno)S6:sum=sum+termS7:den

o=deno+1S8:若deno≤100返回S4;否则算法结束1111112349910099次循环后sum的值就是所要求的结果例2.5给出一个大于或等于3的正整数,判断它是不是一个素数。所谓素数(prime),是指除了1和该数本身之外,不能被其他

任何整数整除的数例如,13是素数,因为它不能被2,3,4,…,12整除。判断一个数n(n≥3)是否素数:将n作为被除数,将2到(n-1)各个整数先后作为除数,如果都不能被整除,则n为素数S1:输入n的值S2:i=2(i作为除数)S3:n被i除,得余数rS4:如果r=0,表示

n能被i整除,则输出n“不是素数”,算法结束;否则执行S5S5:i+1iS6:如果i≤n-1,返回S3;否则输出n“是素数”,然后结束。可改为n/2n求m和n的最大公约数方法:从m和n当中的最小值开始判断一直到1,第一个能同时整除m和n

的数就是最大公约数;S1:如果m<n,t=m;否则t=n;S2:如果m%t=0并且n%t=0,则t为最大公约数,结束;否则转向S3;S3:t-1->t;S4:如果t>0,转向S2,否则,结束;2.3算法的特性一个有效算法应该具有以

下特点:(1)有穷性。一个算法应包含有限的操作步骤,而不能是无限的。(2)确定性。算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。2.3算法的特性一个有效算法应该具有以下特点:(3)有零个或多个输入。所谓输入是指在执行算法时需要从外界取

得必要的信息。(4)有一个或多个输出。算法的目的是为了求解,“解”就是输出。没有输出的算法是没有意义的。(5)有效性。算法中的每一个步骤都应当能有效地执行,并得到确定的结果。2.3算法的特性对于一般最终用户来说:他们并不需要在处理每一个问题

时都要自己设计算法和编写程序可以使用别人已设计好的现成算法和程序只需根据已知算法的要求给予必要的输入,就能得到输出的结果输入3个数黑箱子3个数中最大数求3个数的最大数2.4怎样表示一个算法常用的方法有:自然语言传统流程图结构化流程图伪代码……2.4怎样表示一个算法2.4.1用自

然语言表示算法2.4.2用流程图表示算法2.4.3三种基本结构和改进的流程图2.4.4用N-S流程图表示算法2.4.5用伪代码表示算法2.4.6用计算机语言表示算法2.4.1用自然语言表示算法2.2节介绍的

算法是用自然语言表示的用自然语言表示通俗易懂,但文字冗长,容易出现歧义性用自然语言描述包含分支和循环的算法,不很方便除了很简单的问题外,一般不用自然语言2.4.2用流程图表示算法流程图是用一些图框来表示各

种操作用图形表示算法,直观形象,易于理解起止框输入输出框处理框判断框流程线连接点注释框x≧0Y……N……一个入口两个出口2.4.2用流程图表示算法流程图是用一些图框来表示各种操作用图形表示算法,直观形象,易于理解起止框输入输出框处理框判

断框流程线连接点注释框③①②①③②③位置不够防止交叉例2.6将例2.1的算法用流程图表示。求1×2×3×4×5如果需要将最后结果输出:1ti>5开始2it*iti+1i结束NY例2.6将例2

.1的算法用流程图表示。求1×2×3×4×5如果需要将最后结果输出:1t输出ti>5开始2it*iti+1i结束NY例2.7例2.2的算法用流程图表示。有50个学生,要求将成绩在80分以上的学生的学号和成绩输出。1ii>5

0开始i+1i结束NY输入ni、gi1i开始gi≧80输出ni、gii+1ii>50NYYN如果包括输入数据部分①1ii>50开始i+1i结束NY输入ni、gi1igi≧80输出ni、gii+1ii>50NYYN如果包括输入数据部分①①例2.8例2.3判定闰年的算法用流程图表示。判

定2000—2500年中的每一年是否闰年,将结果输出。NYN开始2000yearyear不能被4整除year是闰年year不能被100整除year+1yearyear>2500结束Yyear不能被400整除y

ear不是闰年year是闰年year不是闰年YNYN例2.9将例2.4的算法用流程图表示。求100199141312111sum2deno1sign(-1)*signsignsign

*(1/deno)termsum+termsumdeno+1denoNdeno>100Y输出sum结束开始例2.10例2.5判断素数的算法用流程图表示。对一个大于或等于3的正整数,判断它是不是一个素数。NY输出n是素数结

束开始输入n2in%irr=0i+1ii>n输出n是素数YN通过以上几个例子可以看出流程图是表示算法的较好的工具一个流程图包括以下几部分:(1)表示相应操作的框(2)带箭头的流程线(3)框内外必要的文字说明流程线不要忘记画箭头,否则难以判定各框的执行次序2.4.3三种基本结构

和改进的流程图1.传统流程图的弊端传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制使用者可以毫不受限制地使流程随意地转来转去,使人难以理解算法的逻辑2.4.3三种基本结构和改进的流程图2.三种基本结构(1)顺序结

构AB2.4.3三种基本结构和改进的流程图2.三种基本结构(2)选择结构ABYpNAYpN2.4.3三种基本结构和改进的流程图2.三种基本结构(3)循环结构①当型循环结构AYp1NYx<5N0x输出x的值x

+1x输出1,2,3,4,52.4.3三种基本结构和改进的流程图2.三种基本结构(3)循环结构②直到型循环结构AYp2NYx≧5N0x输出x的值x+1x输出1,2,3,4,5以上三种基本结构,有以下共同特点:(1)只有一个入口(2)只有一个出口

一个判断框有两个出口一个选择结构只有一个出口(3)结构内的每一部分都有机会被执行到。也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它(4)结构内不存在“死循环”由三种基本结构派生出来的结构:ANp2YB根据表达式p的值进行选择AB…MN2.4.

4用N-S流程图表示算法N-S流程图用以下的流程图符号:ABABYNpA当p1成立A直到p2成立顺序结构选择结构循环结构(当型)循环结构(直到型)例2.11将例2.1的求5!算法用N-S图表示。直到i>51t输出t2it*iti+1i例2.12

将例2.2的算法用N-S图表示。将50名学生中成绩高于80分者的学号和成绩输出。直到i>501t1ii+1i输入ni、gii+1i直到i>50gi≧80否是输出ni,gi例2.13将例2.3判定闰年的算法用N-S图表

示直到year>25002000yearyear+1year否是year%4为0否是输出year非闰年year%100不为0year%400为0是否输出year非闰年输出year闰年输出year闰年例2.1

4将例2.4的算法用N-S图表示。求10019914131211直到deno>100deno+1deno输出sum1sum1sign2deno(-1)*signsignsign*(1/deno)t

ermsum+termsum例2.15将例2.5判别素数的算法用N-S流程图表示。例2.10的流程图不是由三种基本结构组成的循环有两个出口,不符合基本结构的特点无法直接用N-S流程图的三种基本结构的符号来表示先作必要的变换NY开始输入n0

w2in%irr=0i+1ii≦和w=0nYN1w①输出n是素数结束w=0①输出n不是素数输入nr=0是否0w2in%ir1wi+1i直到i>或w≠0nw=0是否输出n是素数输出n不是素数一个结构化的算法是由一些基本结构顺序组成的在基本结构之间不存

在向前或向后的跳转,流程的转移只存在于一个基本结构范围之内一个非结构化的算法可以用一个等价的结构化算法代替,其功能不变如果一个算法不能分解为若干个基本结构,则它必然不是一个结构化的算法2.4.5用伪代码表示算法伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法

用伪代码写算法并无固定的、严格的语法规则,可以用英文,也可以中英文混用例2.16求5!。begin(算法开始)1t2iwhilei≤5{t*iti+1i}printtend(算法结束)例2.17求begin1su

m2deno1signwhiledeno≤100{(-1)*signsignsign*1/denotermsum+termsumdeno+1deno}printsumend100199141312112.4.6用计算机语言表示算法要完成一项工作

,包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。例2.18将例2.16表示的算法(求5!)用C语言表示。#include<stdio.h>intmain(

){inti,t;t=1;i=2;while(i<=5){t=t*i;i=i+1;}printf("%d\n",t);return0;}例2.19将例2.17表示的算法(求多项式的值)用C语言表示。10019914131211#include<stdio.h>intma

in(){intsign=1;doubledeno=2.0,sum=1.0,term;while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;}printf("%f

\n",sum);return0;}2.5结构化程序设计方法结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人

们容易理解和处理的范围内。目的:解决人脑思维局限性和被处理问题的复杂性之间的矛盾;2.5结构化程序设计方法采取以下方法保证得到结构化的程序:(1)自顶向下;(2)逐步细化;(3)模块化【函数】设计;(原则:低耦合高内聚)(4)结构化编码;(

编写程序)数据结构与算法算法时间复杂度:计算工作量空间复杂度:内存空间数据结构逻辑结构:线性结构、非线性结构存储结构:顺序存储、链式存储线性结构栈特征:先进后出/后进先出存储结构:顺序、链式存储运算:栈顶插入与删除元素,栈低不变队列特征:先进先出/后进后出存储结构:顺序、

链式存储运算:队头删除、队尾插入元素非线性结构树二叉树基本性质:第k层上,最多有2k-1个结点深度为m的二叉树最多有2m-1个结点任意一棵二叉树,度为0的结点总是比度为2的多一个AEBGCFD

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?