为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C语言n个人围成一圈程序设计

2017-09-29 4页 doc 31KB 120阅读

用户头像

is_594905

暂无简介

举报
C语言n个人围成一圈程序设计C语言n个人围成一圈程序设计 高级语言程序设计(C) 课 程 设 计 报 告 系 (部): 专 业 : 班 级 学生姓名 : 指导教师: 成 绩 : 日 期 : 一、 C语言程序题目: 有n个人围成一圈,(假设他们的编号沿顺时针方向依次为1到n),编程序,使用数组来存放数据(人员编号),而后从1号人员开始数起(沿顺时针方向),当数到k时(k〉1由用户输入),该号人员被“淘汰出局”;接着仍沿着顺时针方向从淘汰者的下一人员重新从1开始数起,数到k后,淘汰第二个人;如此继续,直到最后剩下一人为止。请输出现后被“淘...
C语言n个人围成一圈程序设计
C语言n个人围成一圈程序 高级语言程序设计(C) 课 程 设 计 报 告 系 (部): 专 业 : 班 级 学生姓名 : 指导教师: 成 绩 : 日 期 : 一、 C语言程序题目: 有n个人围成一圈,(假设他们的编号沿顺时针方向依次为1到n),编程序,使用数组来存放数据(人员编号),而后从1号人员开始数起(沿顺时针方向),当数到k时(k〉1由用户输入),该号人员被“淘汰出局”;接着仍沿着顺时针方向从淘汰者的下一人员重新从1开始数起,数到k后,淘汰第二个人;如此继续,直到最后剩下一人为止。请输出现后被“淘汰”的人的编号。 二、 题目分析: 把1到n个人的编号存到数组a[]中,用count代表当前数到的人在数组中的位置,用size代表剩余的人数,从1数到k,且每次把count(count初值设置为-1)加上1,(如果没数到k之前count等于size,为了满足题目要求,顺时针继续淘汰,则令count等于0,继续往下淘汰),因为每次循环都淘汰了一个人,所以每次都size减去1,输出第n-size个淘汰者及号码a[count],淘汰者出局后,就不可能再有被数的机会,所以要在数组a[]中把淘汰者删除,删除后,原来后面的编号相应的前移一位,因为删除了淘汰者,而下次是从淘汰这的下一个开始数,也就是说从删除后的淘汰者的前一个的下一个开始,所以,count减一,如此循环直到size等于1为止,并输出幸存者a[0]。 这个程序的关键是实现一圈循环之后怎样继续向下一圈循环,为此想到了count等于size,即:当前数到的人在数组中的位置=剩余的人数。这是程序设计的关键。 三、 流程图(见下页): 开始 输入count,size,i,k,n 数组a[count] Count=-1 Size=n Size>1? Count=0 i=0 Count=size i=i+1 Count=count+1 i void main() {void fun(int n, int k); int total, num; printf("请输入总人数:\n"); scanf("%d",&total); printf("请输入淘汰号k:\n"); scanf("%d",&num); fun(total,num); } void fun(int n, int k) { int *a, size=n, count=-1; //*数组a存储的是n个参与者的编号, 而 size表示的是剩余参与者的数目,按k循环往后数,数到第size个人之后从头开始,count记录的是当前数到的人在数组中的位置,因为初始没有数, 所以初值为-1(数组下标从0开始)*/ a=new int[n]; for(int i=0; i1) { //进行淘汰直到剩余参与者只有一人 for(int i=0;i
/
本文档为【C语言n个人围成一圈程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索