习题输入四个变量要求按大小顺序输出。.docVIP

习题输入四个变量要求按大小顺序输出。.doc

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

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

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

1亿VIP精品文档

相关文档