- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C 语言中打印图形类问题解决方法探析
a rel=nofollow onclick=doyoo.util.openChat();return false;
href=#
摘要:介绍了C 语言程序设计中一种常见的题目――图形打印问题的解决方案,并详细介绍了如何使用待定系数法解决双 重循环的边界问题。
关键词:C 语言 图形打印 待定系数法
在 C 语言程序设计中有一类让学生感到头疼的问题,就是图形打印问题。如何让学生掌握好这类问题的解决方案呢? 笔者根据多年的教学经验,对这类问题研究出一种有效的解决方法,下面就对这种方法进行阐述。
1 C 语言中的图形打印问题
在C 语言程序设计中的图形打印问题通常要求学生用某种字符(如“*”)打印出一种有变化规律的图形。常见的图
形如图 1 中的各图所示:??
图 1 常见图形问题示例 2 整体解决思路
对于这类问题,有一个整体的解决思路。通过观察可以 发现,每个图形都是由若干行、若干列的符号组成的,因此 可以考虑使用双重循环来解决。双重循环是指在一个循环体 内完整地包含另一个或多个循环结构,当外层循环控制变量 为某一值时,内层循环要全部执行一遍。外层循环变量才能 再次改变一次。对于这类题目,可以由外层循环控制行数, 每行打印的内容由内层循环控制。
首先,确定图形的行数,通常用一个变量来表示当前行 号,例如 i 。i 的变化范围可以由 1 至总行数,总行数可以直观地看到,例如图(a),外层循环的控制可以表示为for(i=1;i=5;i++)。
其次,内层循环来表示每一行需要打印的内容,可以分 为两种情况:
每行直接打印若干个符号,前面不含空格。这种情况较简单,双重循环,外层循环控制行数,内层循环控制每 一行的符号数。
每行先打印若干个空格,再打印符号。这种情况可以使用两个内层循环,一个用来打印空格,一个用来打印符 号。
需要注意的是,每一行的内容打印完成之后,也就是在
最后一个内层循环的下边,外层循环的循环体内,一定别忘 了加上打印换行符的语句,否则是打印不出需要的图形的。
具体的解决方案
上面介绍了这类问题的整体解决方案,但是,对于具体 的题目,各有特点,应用时是有区别的,关键点就在于如何 控制内层循环的执行次数,下面针对具体的问题给出解决方 案:
图形(a)的解决方法
图形(a)是一种最简单的情况,通过观察可以看到,共打印 5 行符号,每一行直接打印 4 个符号,且前面没有空格, 只要让外层循环从 1 到 5,内从 1 到 4 变化即可,双重循环表示如下:
for(i=1;i=5;i++)
{
for(j=1;j=4;j++) printf(*);
printf(\\n);//用于打印换行符
}
图形(b)的解决方法
图形(b)也属于较简单的情况,因为每一行直接打印若干 个符号,前面没有空格,只要观察好每行的符号数与行号的 关系即可。通过观察可以发现第 1,2,3,4 行打印的符号
数分别是 1,2,3,4,恰好和行数是一致的,因此,内层循环的次数控制可以是 1 到行号 i,本题目对应的双重循环表示如下:
for(i=1;i=5;i++)
{
for(j=1;j=i;j++) printf(*);
printf(\\n);//用于打印换行符
}
图形(c)的解决方法
图形(c)的情况比图形(b)复杂了一点,虽然也是每行直接 打印符号,但是打印的符号数和行号没有非常直观的关系, 第 1,2,3,4 行打印的符号数分别是 5,4,3,2。对于这样的情况,可以采用待定系数发来解决。
通过观察可以看到每行的符号数和行号之间存在一种线性的关系,根据数学常识,可以列出如下的式子:ai+b=j 来表示行号和列号之间的关系。将一致的两组关系 i=1,j=5 和i=2,j=4 代入以上式子,形成了一个二元一次方程组:??
a+b=5??2a+b=4
求解方程组,得到 a=-1,b=6,代入 ai+b=j,最后得到列号j 与行号 i 之间的关系为:j=6-i,于是得到该问题对应的双重循环如下:
for(i=1;i=5;i++)
{
for(j=1;j=6-i;j++) printf(*);
printf(\\n);//用于打印换行符
}
图形(d)的解决方法
图形(d)的情况又比图形(c)复杂了一点,通过观察可以看 到,共打印 5 行符号,每一行先打印若干个空格,再打印若干个符号,对于空格部分和符号部分,可分别用两个内从循 环来表示,分别使用循环变量 j 和k。循环的次数可以使用以上介绍的待定系数法,得到每行的空格数与行号之间的关系 为:j=5-i,每行的符号数与行号的关系为:k=2i-1 ,从而本题对应的双重循环表示如下:
for(i=1;i=5;i++)
{
for(j=1;j=5-i;j++) prin
您可能关注的文档
- CAD自学网分析和总结.docx
- CAD作业分析和总结.docx
- CAD坐标导入全站仪方法.docx
- can练习题分析和总结.docx
- Caris 多波束后处理.docx
- CASS常用快捷键大全.docx
- CATIAV5安装详细说明.docx
- CCAA风险管理练习题.docx
- CCAA合格评定基础试题及参考答案.docx
- ccbn傅峰春以媒体内容库和大数据建设推动广电融合发展.docx
- C组中国高校学术交流会策划书.docx
- DALSA相机调试采集步骤.docx
- DataGridView添加右键菜单等技巧.docx
- DCDC双向变换主电路原理图.docx
- DCS自动控制系统在冶金制氧中的应用.docx
- DDS307A型电导率仪使用、维护保养SOP.docx
- dds背部看诊一看就懂一学就会.docx
- Design and Realization of Management and Control System in Tobacco Factory Warehouse based on VC6分析和总结分析和总结.docx
- DHGA型电热恒温鼓风干燥箱验证方案及报告.docx
- DIN6796分析和总结分析和总结.docx
原创力文档


文档评论(0)