收藏 分销(赏)

算法选择与自我调试.pptx

上传人:天**** 文档编号:4163426 上传时间:2024-08-08 格式:PPTX 页数:23 大小:259.07KB
下载 相关 举报
算法选择与自我调试.pptx_第1页
第1页 / 共23页
算法选择与自我调试.pptx_第2页
第2页 / 共23页
算法选择与自我调试.pptx_第3页
第3页 / 共23页
算法选择与自我调试.pptx_第4页
第4页 / 共23页
算法选择与自我调试.pptx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、算法选择与自我调试算法选择与自我调试自主编译时的重要过程相关知识回顾计算机解题步骤 1.定义问题、分析问题输入、输出是什么?有什么限制条件,关键点 2.设计算法 3.实现程序(coding)4.运行、调试通过 5.完成文档、维护程序相关知识回顾算法设计基本原则抽象抽象出数学模型 枚举对输入数据,列出不同情况从而采取不同处理方式,一般用条件条件结构结构实现 归纳总结出规律从而简化算法,一般用循环结构循环结构实现一、算法选择阅读题目后,算法随着产生,需要捕捉用数学模型概括算法比较不同算法的优劣确定算法(过程),开始编程一、算法选择阅读题目后,算法随着产生,需要捕捉以第一题为例问题描述给定一个整数,

2、请将该数各个位上数字反转得到一个新数。样例输入 123 样例输出 321样例输入 -380 样例输出 -83比较不同算法优劣第一种算法:第一想法:倒叙打印(字符数组)第二种算法:可以考虑用整形变量储存数据进行比较(着重考虑可行性以及是否已出错):用整形变量可以节省空间,但处理过程繁琐,并且运用循环,运行时间长用字符数组虽占用空间较多,但倒叙输出时简单易行,同时解决正负问题确定算法,开始编程对于本题,选择第一种算法,并考虑特例特例scanf(%s,str);l=strlen(str);flag=0;if(str0=-)printf(-);/判断正负for(i=l-1;i=1;i-)if(stri

3、!=0)flag=1;/判断末尾0,借助变量flagif(flag=1)printf(%c,stri);if(str0!=-)printf(%cn,str0);二、自我调试编程时所遇到的错误编译错误链接错误运行错误运行错误1.编译错误比较容易发现与解决学会运用编译工具给出的提示,双击对话框中的错误,会出现提示,指向错误所在行,立即修改2.链接错误编译器仍会提示产生链接错误时,编译一般已经通过。问题一般为两大类:1.数据库调用错误2.变量未定义3.运行错误自主编译程序时的重中之重遇到运行错误,一般分为两种:1.无结果。如:死循环 2.结果出错。结果出错样例错误,易修改。特例错误,不易发现,看到我

4、们最不希望看到的Wrong Answer。特殊数据的寻找“零”简单而又复杂的数字越界常见易忽略问题输出格式思维定式,查不出来的错误将理论应用于实践牛顿迭代法求方程的根抽象出数学模型及步骤:迭代、比较、计数设计算法:确定使用循环结构开始编程:1。whlie循环2。计数器的清零与使用t=1;while(fabs(a*z*z*z+b*z*z+c*z+d)1e-7)t+;z=z-(a*z*z*z+b*z*z+c*z+d)/(3*a*z*z+2*b*z+c);将理论应用于实践教室排课抽象数学模型及步骤:比较、计数、判断是否有解设计算法:确定循环结构开始编程:1。for循环2。计数器的清零与使用(如何判断

5、是否有解)if(a!=b)&(b!=c)&(c!=d)&(d!=a)&(a!=c)&(a!=d)&(b!=d)if(numa=i)&(numb=j)&(numc=k)&(numd=l)s+;/程序起始初始化为0printf(%d%d%d%dn,a,b,c,d);四重循环确定房间号,省去字典序排序的步骤。循环体语句如下:本题仍需判断是否有解if(s=0)printf(-1n);PS:1、变量s为计数器,初始化为0。2、用数据储存房间可容纳人数,并对该数组进行初始化,从而,可用下标代表房间。将理论应用于实践求子串抽象数学模型及步骤:储存、排序设计算法:二维字符数组开始编程:1。定义二维数组,便于以

6、后使用2。字符数组的使用(如何交换字符数组)本题我们分步解决,这个过程就会帮助我们找到特例1.取出每一个字符串t=0;for(i=0;i=l-k;i+)t+;for(j=0;j=k-1;j+)atj=stri+j;/跳出循环后,t既为子串个数2.比较并交换for(i=1;i=t-1;i+)for(j=1;j0)for(p=0;p=k-1;p+)swap=ajp;ajp=aj+1p;aj+1p=swap;/注意交换问题3.输出(注意避免越界)for(i=1;i=t;i+)if(i!=t)/注意输出格式for(j=0;j=k-1;j+)printf(%c,aij);printf();elsefor(j=0;j=k-1;j+)printf(%c,aij);温馨提示遇到错误,不要心急,在编译程序的过程中,这种情况在所难免,我们只需掌握自我调试的技巧,就会逐步减少各种错误。注意的匹配程序缩进十分重要,如果没有缩进,模块不清晰,重点不处处。读题要慢要稳,一旦产生思维定式,即便DEBUG,都不易发觉错误谢谢大家!

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服