C语言中打印图形类问题解决方法探析.docxVIP

C语言中打印图形类问题解决方法探析.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档