考试网 >> IT认证 >> 等级 >> 三级考试 >> 全国计算机等级三级C语言上机试题逐题解析

全国计算机等级三级C语言上机试题逐题解析

发布时间:2006-07-25 12:12     点击:
分页:上一页  1 2 3 4 [5] 6  下一页

  请勿改动主函数main()和输出数据函数WriteDat()的内容。

  题目解析:

  void Josegh(void)

  {

  int t[100], /*t用来存放100个人的编号 */

  i, /*用来遍历t数组中的编号,真正遍历的时候是用 i%n 做下标的*/

  j, /*j用来计数,它从0开始,数到m后,又重新从0开始*/

  k=0; /*用来负责向存放出圈顺序的数组p中放数,它用 k++ 做p的下标*/

[Page: ]



  for(i=0;i

  for(i=s-1,j=0;k

  所以从0开始,k

  的人已经全部出圈,所以程序结束。*/

  { if(t[i%n]!=-1) j++; /*如果数组t中的第(i%n)个元素不为-1,说明这里有人,应让j计数*/

  if(j==m) /*如果j数到了m,说明有一个人应该出圈*/

  {

  p[k++]=t[i%n];/*把出圈人的顺序号写入p数组*/

  t[i%n]=-1;/*出圈一个人,就把它的位置上放上-1,以标志该处没人,不能数数,应该跳过去*/

  j=0;/*j已经数到m了,应该从0重新计数*/

  }

  }

  }

  注:(1)t数组的下标之所以用 (i%n)是为了让 i 循环指向数组的下标,因为i在一直增大,而(i%n)的变化范围是0->1->2.....->98->99->0->1....->98->99.......... i总是在这样变化,所以能一遍一遍的循环引用t数组的元素。

  一般C语言中的结构,如for、if、while、do...while等都只能控制一条语句,如果逆向让他们控制多条语句,就必须把这多条语句用{}扩起来。至于什么时候控制多条语句,那得看题目而定了,没有规则。

  例如:if(a>b) t=a;a=b;b=t;

  这看起来好像是说:如果a大于b为真,则交换a和b得值,但不是,这时if结构只能控制t=a;这条语句。可以对比下一个结构:if(a>b) {t=a;a=b;b=t;} 这里就不一样了,这里得if结构控制得是复合语句{t=a;a=b;b=t;} ,相当于控制了三条语句。

  再如:int i=0,sum=0;
分页:上一页  1 2 3 4 [5] 6  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有