- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
习题输入四个变量要求按大小顺序输出。
习题5.9输入四个变量,要求按大小顺序输出。分析:设四个变量为a,b,c,d,输入时大小顺序不定,输出时按大小顺序排列有两种情况:一种是a,b,c,d顺序固定,可改变变量的值,另一种是要求不改变它们原来的值,?a,b,c,d顺序可变。先看第一种情况:若输出时按a,b,c,d顺序排列,则应保证a的值最大,b的值第二,c的值第三,d的值最小。要实现这一点,就要将a,b,c,d进行排列。排列可这样进行:先将a分别与b、c、d比较,遇大者则与a交换值,这一轮比较结束后,a中就是最大值了,然后再将b与d、c比较,遇大者则与b交换值,这一轮使b比c、d都大,剩下c、d再做一次比较,大者存在c中,d中就是最小值。main(){int?a,b,c,d,t;scanf(%d%d%d%d,a,b,c,d);?if(ab){t=a;a=b;b=t;}?if(ac){t=a;a=c;c=t;}?if(ad){t=a;a=d;d=t;}?if(bc){t=b;b=c;c=t;}?if(bd){t=b;b=d;d=t;}?if(cd){t=c;c=d;d=t;}?printf(%d??%d??%d??%d\n,a,b,c,d);?}再看第二种情况:a,b,c,d的全排列P4=4!,即共有24种排列顺序,那么就可形成24个分支,分别按不同的顺序输出。这种做法程序很长,这里不写了,下面给出三个变量的输出程序,供参考。a,b,c的大小关系有六种,输出顺序就有六种:大小关系:????????输出顺序:abc????????????a,b,cacb????????????a,c,bbac????????????b,a,cbca????????????b,c,acab????????????c,a,bcba????????????c,b,a按照题目要求,应形成六个分支。由于产生分支的条件不是单一的比较相等关系,因此应采用if语句,而不能用switch语句。可以采用并列的if语句,也可以采用嵌套的if语句。并列的if语句如下:if(abbc)printf(“%d??%d??%d”,a,b,c);if(accb)printf(“%d??%d??%d”,a,c,b);if(baac)printf(“%d??%d??%d”,b,a,c);if(bccb)printf(“%d??%d??%d”,b,c,a);if(caab)printf(“%d??%d??%d”,c,a,b);if(cbba)printf(“%d??%d??%d”,c,b,a);这种写法其实没有必要。因为如果第一个条件成立(符合第一种顺序),则不会再满足其它条件,本可不再作其它判断,但是,写成并列的if语句,就要逐个判完。若改成嵌套的if语句,就可避免重复判断。main(){int?a,b,c;scanf(%d%d%d,a,b,c);if(ab)??if(ac)????{printf(\t%d,a);????????????????/*??确定a最大??*/????if(bc)printf(??%d??%d\n,b,c);????/*??abc??*/????else?printf(??d??%d\n,c,b);}?????/*??acb??*/??else???????????????????????/*???ab成立,ac不成立??*/????printf(\t%d??%d??%d\n,c,a,b);?????/*???cab??*/else????????????????????????/*????否定ab,即ba???*/???if(bc)????{printf(\t%d,b);?????????????????/*??确定b最大??*/????if(ac)printf(??%d??%d\n,a,c);????/*??bac???*/????else?printf(??%d??%d\n?,c,a);}????/*??bca???*/??else???????????????????/*??ab不成立,bc也不成立??*/????printf(\t%d???%d???%d\n,c,b,a);??/*???cba???*/}习题6.3求Sn=a+aa+aaa+﹍﹍﹍+aa﹍aa?(n个a)其中a是一个数字,n由键盘输入。分析:这是累加求和,当然采用循环。每次计算一项,累加一项,共循环n次。这里要注意的是它通项之间的变化规律,看是否要再用一重内循环来计算通项。可以看出,从第二项起,每一项都比前一项
文档评论(0)