您好,欢迎访问三七文档
1.什么是计算机硬件和软件?2.计算机能够做什么?3.怎样做?break和continue:continue和break的区别是:continue是只结束本次循环,而不是终止整个循环的执行,而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。#includeiostream.hvoidmain(){intn;for(n=100;n500;n++){if(n%2==0)continue;if(n%3==0&&n=200)coutnendl;if(n200)break;}}计算机基础主要是包括二进制、操作系统(DOS、Windows)、信息处理工具(Word、C++)等典型算法主要以算法为中心,讲解一些传统算法案例,通过案例掌握和理解以下内容:1.什么是算法2.计算机能够做什么3.算法都包含哪些类型4.怎样描述算法5.算法的特征6.写算法应该注意哪些事情7.计算机软件的本质(归结成计算)8.怎样学好计算机课程9.一些常用的算法(案例)(大约30)计算机学习的难点(术语)简单会用一门语言C++、Java1.什么是算法算法是计算机用来解决问题的步骤和方法,算法是软件的灵魂。计算机科学的定义:算法的学问,数据结构的转换2.计算机能够做什么:计算机本身处理能处理累加运算、逻辑运算;累加运算就是计算和循环、逻辑运算就是判断。从高级语言来看,目前如果能写成算法,并且算法里只包换存储操作(读写操作)、累加运算、逻辑运算,计算机就可以执行,至于计算机怎样认识这些语句,这得懂得计算机编译系统。3.算法都包含哪些类型:数学算法、计算机算法和某一专业算法(我们分别举例)4.怎样描述算法:自然语言传统流程图改进的流程图N-S图伪代码计算机语言5.算法的特征1)有穷性:有穷步骤后停止2)确定性:必须有确切地定义3)输入4)输出5)可行性:算法是可行的,是可计算的6.写程序应该注意哪些事情程序设计规范(与建筑比较):程序设计问题7.计算机软件的本质归结成计算8.怎样学好计算机课程9.一些常用的算法(案例)(大约30)程序设计=算法+数据结构+语言和环境编程的步骤如下:步骤一:理解问题所包含的意义(需要有专业知识、调研、查找)步骤二:把问题抽象为模型(建模过程、抽象成可计算的)步骤三:使用自然语言描述清晰(算法的5大特征)步骤四:画出改进的流程图或N-S图如果画成N-S图一定是结构化程序设计(程序设计方法、注意流程图的画法)步骤五:改写成伪代码(赋值、输入、输出、条件语句、当循环、直到循环等)步骤六:定义数据结构不同的数据结构其算法不同步骤七:使用高级语言描述(源程序,写程序一定要规范*)步骤八:使用计算机运行程序(注意上机的步骤、程序优化)步骤九:写程序文挡写一程序,判断某一年是否为闰年步骤一:理解问题所包含的意义(调研、查找)按一回归年365天5小时48分45.5秒首先知道什么是闰年步骤二:把问题抽象为模型①能被4整除,但不能被100整除的是闰年②能被100整除,同时被400整除的是闰年③余下的年份不是闰年步骤三:使用自然语言描述清晰E1[设定检测年份]设定变量y为检测的年份E2[去掉不被4整除的年份]若y不能被4整除,则输出y“不是闰年”。然后转到E6E3[]能被4整除,不能被100整除,则输出y“是闰年”,然后转到E6E4[]若y能被100整除,又能被400整除,则输出y“是闰年”,否则输出y“不是闰年”,然后转到E6E5[不满足上述条件不是闰年]输出y“不是闰年”E6[判断下一年是否是闰年]y赋值y+1,转向E2E7[判断到2100年结束]直到y大于2100,算法停止步骤五:写成伪代码BEGINy←2000whiley2100{ify被4整除ify不被100整除printy:“是闰年”elseify被400整除printy:“是闰年”elseprinty:“不是闰年”endifendifelseprinty:“不是闰年”endify←y+1}ENDmain()/*这是一个判断某一年份是否为闰年的程序*/{intyear;scanf(%d,&year);if(year%4==0){if(year%100==0){if(year%400==0)printf(%disaleapyear.\n,year);elseprintf(%disnotaleapyear.\n,year);}elseprintf(%disaleapyear.\n,year);}elseprintf(%disnotaleapyear.\n,year);}}步骤八:使用计算机运行程序(程序优化)上机步骤:选择一个语言系统比如:VisualC++等编辑源程序编译或解释源程序为目标程序链接成可执行程序运行该程序写一程序,:给定一系列数,按照数值(排序码)的不增或不减进行排序列称排序步骤一:理解问题所包含的意义(调研、查找)首先知道什么是排序,(排序码、升序、降序等)步骤二:把问题抽象为模型①排序有多种方法,包括插入排序、选择排序等,最简单的方法是选择排序,我们采用选择方法②选择方法如下:假定第一个数最小,记住第一个数,然后把第一个数和其余的数进行比较,如果有比这个数还小的数,就记住那个数。经过这一遍比较后就找到最小的数,把这个数和第一个数进行交换。然后从第二个数开始,重复以上步骤,直到剩下最后一个数为止。步骤三:使用自然语言描述清晰E1[每循环一次,选择一个最小的排序]循环i以1为步长,从1到n-1,执行下列语句(1)[准备]k←i(2)[选择]循环j以1为步长,从i+1到n,执行下列语句若R[j]R[k]则k←j(3)[交换]若ik则x←R[k]R[k]←R[i]R[i]←xE2[算法结束]步骤五:写成伪代码BEGINread(R[n])i←1whilei=n-1{k←ij←i+1whilejn{ifR[j]R[k]thenk←jj←j+1endif}x←R[k]R[k]←R[i]R[i]←xi←i+1}print(R[n])ENDmain()/*这是一个使用直接选择排序的排序算法*/{inti,j,k,x;intr[11];printf(input10numbers:\n);for(i=1;i11;i++)/*调式程序*/scanf(%d,&r[i]);for(i=1;i11;i++)printf(%d,r[i]);i=1;while(i10){k=i;j=i+1;while(j=10){if(r[j]r[k])k=j;j=j+1;}x=r[k];r[k]=r[i];r[i]=x;i=i+1;}printf(\n);printf(output10numbers:\n);for(i=1;i11;i++)printf(%d,r[i]);}为了方便,我们把算法分为数学算法,计算机算法和行业算法数学算法:关键怎样把数学公式变成数学表达式程序设计的三种结构:顺序结构、循环结构、分支结构顺序结构:主要用来赋值、输入输出循环结构:主要用于做重复运算分支结构:主要用于选择课后作业:1。书后P122。判断从2000年~2100年的那些年份是闰年3。写出一个排序的例子4。求和1-1/2+1/3-…-1/100上机出现的问题:一、#includemath.h二、不要把两个文件写在一个文件中三、能读懂错误提示,包括错误和警告四、文件起名五、定义数据类型,如整型、双精度、数组一、编程的步骤二、定义数据结构三、程序设计的三种结构中秋佳节,有贵客来到草原,主人要从羊群中选一只肥羊宴请宾客,当然要选最肥者,这样就要记录下每只羊的重量。有4位同学中的一位做了好事,不留名,表扬信来了之后,校长问这4位同学是谁做的好事。A说:不是我B说:是CC说:是DD说:他胡说。已知3个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做好事的人。thisman做了好事的人charthisman=‘’;状态说的话关系表达式值Athisman!=’A’‘A’!=’A’0Bthisman==’C’‘A’==’C’0Cthisman==’D’‘A’==’D’0Dthisman!=’D’‘A’!=’D’1状态说的话关系表达式值Athisman!=’A’‘B’!=’A’1Bthisman==’C’‘B’==’C’0Cthisman==’D’‘B’==’D’0Dthisman!=’D’‘B’!=’D’1状态说的话关系表达式值Athisman!=’A’‘C’!=’A’1Bthisman==’C’‘C’==’C’1Cthisman==’D’‘C’==’D’0Dthisman!=’D’‘C’!=’D’1状态说的话关系表达式值Athisman!=’A’‘D’!=’A’1Bthisman==’C’‘D’==’C’0Cthisman==’D’‘D’==’D’1Dthisman!=’D’‘D’!=’D’0条件运算符:if(ab)max=a;elsemax=b;max=(ab)?a:b;三目运算:表示式1?表示式2:表达式3输入一个字符,判断它是否大写字母,如果是,将它转换成小写字母,如果不是,不转换。然后输出最后得到的字幅。#includeiostream.hvoidmain(){charch;cinch;ch=(ch='A'&&ch='Z')?(ch+32):ch;cout结果是:chendl;}switch语句,可以用于多分支选择语句。比如学分换算,比如成绩是A,对应分数是100~85;成绩是B,对应分数是84~70,成绩是C,对应分数是69~60,成绩是D,对应分数是60.#includeiostream.hvoidmain(){chargrade;cingrade;switch(grade){case'A':cout100~85endl;break;case'B':cout84~70endl;break;case'C':cout69~60endl;break;case'D':cout60endl;break;default:couterrorendl;}}百钱百鸡问题:100元买100只鸡,其中公鸡5元1只,母鸡3元1只,小鸡1元3只,要求每种鸡至少有1只,要求编写程序统计并输出所有购买方案。#includeiostream.hvoidmain(){intx,y,z;for(x=1;x20;x++)for(y=1;y33;y++)for(z=1;z300;z++)if((x+y+z==100)&&(15*x+9*y+z==300))cout“公鸡数”x“公鸡数”y“小鸡数”zendl;}比如学分换算,比如成绩是A,对应分数是100~85;成绩是B,对应分数是84~70,成绩是C,对应分数是69~60,成绩是D,对应分数是60.#includeiostream.hvoidmain(){chargrade;cingrade;if(grade==‘A’)cout100~85endl;elseif(grade==‘B’)cout84~70endl;elseif(grade==‘C’)cout69~60endl;elseif(grade==‘D’)cout60endl;elsecout“error”endl;}二维数组:数组名[下标][下标]inta[3][4];a[0]a00a01a02a03a[1]a10a11a12a13a[2]a20a21a22a23有一个3X4的距阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号.1、输入三角形的三边长,求三角形面积(给定边长,使用秦九韶或海伦公式)2、求ax2+bx+c=0方程的解(求根公式)3、求Fibonacci数列前40个数。这个数列有如下特点:第1,2两个数为1,1,从第三个数开始,该数是其前两个数之和。4、题目:一个5位数,判断它是不是回文数
本文标题:C++经典算法
链接地址:https://www.777doc.com/doc-3376746 .html