第四章程序编写..docVIP

  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文档。上传文档
查看更多
第四章程序编写.

第四章 程序编写 在掌握了程序设计语言基本概念和基本技能的基础上,我们讨论程序的编写。本章运用结构化程序设计的思想,通过具体实例介绍了一般的编程方法。我们同时还提供一些专项练习题,并作了较详细的解答。 4.1要点分析 结构化程序设计的思想是由顶到底逐步细化。下面我们通过具体的编程例子来体现结构化程序设计的思想。 例:写完整的程序,用公式 计算e的近似值,直到某项小于10-7为止。 此题目属于累加问题,也就是我们要重复执行ss+1/t的操作,到1/t的值小于10-7为止。重复操作用循环实现,这样程序的初步框架为: main int t1;float s1; while 1.0/t1e-7ss+1.0/t;printf“e%.5f”,s; 下面的工作是细化t,t为阶层,而求阶层运算是用累乘的方法即tt*i,变量i的值在循环中的变化,步长为1。这样程序为: main int t1, i1; float s1, while 1.0/t1e-7 tt*i; ss+1.0/t; ii+1;printf“e%.5f”,s; 例:请输入n值,编写程序输出下列图形(例如n5). 1 2 3 4 5 1 1 2 3 4 1 1 1 2 3 1 1 1 1 2 1 1 1 1 1 对于图形打印题目,我们应该这样来考虑。图形由若干行组成,也就是我们要重复打印行的操作若干次,用循环实现。这样程序的基本结构为: scanf“%d”,n; fori1;in;i++打印第i行循环体为“打印第i行”的操作。而第i行是由若干列,i个1和2,3,……n-i组成。所以打印“第i行”的操作为输出n个数:forj1;ji;i++ printf“%d”,1;forj2;jn-i;j++ printf“%d”,j;。所以此题目的程序为: scanf“%d”,n; fori1;in;i++forj1;ji;i++ printf“%d”,1; forj2;jn-i;j++ printf“%d”,j;通常打印图形用两重循环组成,外层循环控制行,内重循环控制列;若图形为上下对称图形,则分上下两部分分别打印。 例:编写一函数,其功能是将形参 int x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回。 完成这个题目主要解决两个问题,函数定义问题和十进制转换为二进制问题。函数定义首先需要解决的问题是参数定义和函数返回值的问题,其次是函数体。根据题意,函数参数为需要转换的十进制数,返回值是一维数组。返回数组通常的处理方法是数组名作参数。函数体是将形式参数转换为二进制。这样函数的基本框架为: void dtobint x,int b[ ] x转换为二进制; 这里的函数体是我们需要解决的第二个问题——十进制转换为二进制问题。十进制转换为二进制用除二取余法,即求x除以2的余数,将其存入数组;再求商除以2的余数,存入数组,用得到的再商求除以2的余数,存入数组,……值到商为0。根据题意, “十进制转换为二进制”用C语言描述为:int k0; dob[k]x%2;x/2;k++; whilex; 这样,完整的函数为: void dtobint x,int b[ ] int k0; dob[k]x%2;x/2;k++; whilex; 例:将10个整数按小到大排列。 数据排序有多种方法,我们这里介绍选择排序法。 我们先将10个数依次放入数组元素a[1],a[2],a[3],……,a[9],a[10]中。 选择排序的思想是:在a[1],a[2],a[3],……,a[9],a[10]中选择最小的值放入a[1],在a[2],a[3],……,a[9],a[10]中选择最小的值放入a[2]中,……,在a[i],a[i+1],……a[9],a[10]中选择最小值放入a[i]中(i1,2,…9),如此,数组就成为有序数组。这样,选择排序的基本框架为: fori1;i9;i++选择a[i],a[i+1],……a[9],a[10]中的最小值放入a[i]中。 下一步的工作是细化循环体:求a[i],a[i+1],……a[9],a[10]中的最小值即最小元素,然后将其与a[i]交换值。求a[i],a[i+1],……a[9],a[10]中的最小元素,是求最小值问题。我们用下面程序段实现。 maxaa[i]; /* maxa 为最小元素。*/ forji+1;j10;j++ifa[j]maxata[j];a[j]maxa;maxat; maxj; /* max 为最小元素下标。*/ta[i];a[i]a[max];a[max]t; 在数组中我们用下标区分数组元素。如,若max 为最小元素下标,则a[

文档评论(0)

xznh + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档