- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序常见模式小结
PAGE
PAGE 4
刚刚接触程序的同学,可能经常面临着拿到题目不知道从何写起的问题。其实基本的程序设计,很大程度上不是一种创造性的工作,而是一种模仿性的工作。如果你只是学了语法,然后直接面对着问题,想凭空想出一种解决方法,这可能是很难的。但是如果你弄懂了一个基本的程序,总结出了一个基本模式,然后模仿着再解决类似的问题,这就会容易很多。这与我们学英语要背例句是一个道理。你知道了May I borrow your pen?,你就可以类似的写出借书借钱的句子来。或者说你要背几个议论文的常见模式:Some people say AAAAAA. While others think BBBBBBB. From my point of view, CCCCCCCCC. 然后凡是遇到类似的作文题就可以套进去。
对于初学者而言,程序能力强不强,可能很大程度上取决于他见过的模式多不多,以及见到一个新的问题,是不是能够套到模式里面去。在这里,我总结出我们目前所学的常用基本模式,大家应该将这些模式掌握得非常熟练。至于其余的,就有待自己积累了。
选择模式:
如果A条件成立,做B操作,否则做C操作。
if ( A )
B;
else
C;
这就是一个最基本的模式。
这个说起来似乎很简单,具体做起来可能还是会有一些困难,例如是否能够认出这个框架,或者A这个条件是否能够写对,B、C操作能否处理好,都有可能存在问题。
先看一个简单的例子,oj1041:
从三鹿奶粉事件开始,众多三氯氰胺超标的食品出来勒。10月8日发布公告:“液态奶(包括原料乳)、奶粉、其他配方乳粉中三聚氰胺的限量值为2.5mg/kg,高于2.5mg/kg的产品一律不得销售。”现在我们就来对多家企业产品进行检测。
结合后面的输入输出要求,实际上我们就可以将题目简化成:如果含量/质量大于2.5,输出被污染,否则输出没有被污染。这样很容易就可以得到代码了。
我们在上课的时候,说过可以通过流程图,帮助理清思路。实际上除了流程图之外,也可以用伪代码。伪代码简单的说,就是将你的思路用自然语言+程序控制语法写出来。例如上面就可以写成:
if 含量/质量大于2.5
输出被污染
else
输出没被污染
事实上,这时候程序的思路都已经清楚了,剩下就只需要翻译成C语言就好了。比流程图更加简单一点,自己可以试着用一用。
拆数模式:
要拆出一个数的右边第i位,首先使其整除10的i-1次方,将要拆的位变到右边的第1位,然后%10即可。
例如,求123的右边第2位,则先整除10的2-1次方,得到12,然后12%10=2。
1+2+……+n=n(n+1)/2。
if-else链模式:
当前问题需要分成互不相交的若干种情况来解决
if ( 情况一 )
处理情况一;
else if ( 情况二 )
处理情况二;
。。。
else
处理剩余情况;
这类模型的要点是各种情况互不重叠,只会属于一种情况。
这个问题很容易解决,但是当情况比较复杂,判断有可能出现重叠包含关系时,如何安排各种情况的顺序就比较有讲究,一般应该把特殊的情况放在前面先进行判断。例如oj1033,判断三角形:
输入三角形的三条边,判断它们能否构成三角形。若能构成三角形,指出是何种三角形(等腰三角形isosceles triangle、等边三角形equilateral triangle,直角三角形right-angled triangle、一般三角形scalene triangle)。
这里等边三角形也能同时满足等腰三角形以及一般三角形的条件,如果先判断一般三角形,则等边三角形的情况就不会进入,因此需要把等边三角形的判断放到前面,以此类推。这个题目要写的话,建议先把伪代码写清楚。
循环指定次数模式:
int count, times;
scanf( “%d”, times );
for ( count = 0; count times; count++ )
做要做的事情
循环到特定条件退出模式:
读入第一组数据
while(当前数据不满足结束条件)
{
处理当前数据
读入下一组数据
}
在这个模式中,注意while括号里面是结束条件的否定
循环到特定条件退出模式二:
while(1)
{
读入一组数据
if 当前数据满足结束条件
break;
处理当前数据
}
循环到特定条件退出模式中,第二种模式相对容易写对,因为结束条件通常比较好判断。而第一种模式while括号里要写结束条件的否定,否定用逻辑运算符连接的表达式时,需要注意变运算符问题
来看一个综合实例判断三角形,题目是这样的:
判断输入的三个整数能否构成三角形三角形:任意两边之和大于第三边多组测试数据,每组
您可能关注的文档
最近下载
- 领导班子2025年民主生活会对照检查材料例文(四个带头).docx VIP
- WD西部数据My Passport Ultra and My Passport Ultra for Mac Quick Install Guide移动硬盘安装指南English (US).pdf
- 工业园区污水BOT项目运营维护方案.doc
- 牛血清去蛋白注射液的美容作用研究.pptx
- 广数DAP03说明书.pdf VIP
- 《中国古代书法》课件——隶书.pptx VIP
- 《行书书法教程》课件.ppt VIP
- 小学数学二年级上册数学《东南西北》教学设计优秀教案.docx
- 笔奇意纵 气逸神飞--草书书写指导.ppt VIP
- 人力 -北极星总裁特助行动计划实施方案.pptx
文档评论(0)