|
当前位置:电脑报电子版 > 1999 年 > 28 期 > 软件世界 > 9906请你编程 |
《 9906请你编程 》 |
大家好!现在又到“请你编程’栏目与你见面的时间了。“请你编程”一直受到广大朋友的关心和支持,我在这里表示衷心的感谢!为了对读者朋友负责,我们对来稿进行了仔细地测试,尽量选出优秀的作品奉献给大家。“请你编程”是一个读者朋友直接参与的栏目,是一个体现自我的园地,希望有编程愿望的初学者朋友也参与进来,因为这是一个大家的栏目,“重在参与”是我们的宗旨,无论是对编程高手,还是初学的朋友,我们都会认真对待每一份作品。 另外,我对大家有一个要求:无论是用电子邮件还是邮寄磁盘稿的读者,请随时检查你们的电脑是否带有病毒,因为我已经收到几个读者朋友的稿件中带有CIH病毒。现在请看本期天津读者李勇的程序。 9906请你编程思路 对于一组数据的处理: 1.max=1; 2.读取第一个数据存于number[1]中; 3.判断是否读完数据,如果是,就转到5执行打印;如果没有读完,读入下一个数据存于x中; 4.确定x在数组number中的位置: 如果x>number[max],把x的值赋给number[++max],然后转到3进行判断;否则,x依次同数组number中的元素比较(1≤i≤max),如果x≤number[i],把x的值赋给number[i],再转到3去执行判断; 5.打印结果,max即为所要求的旗子数。 源程序 #include ″stdio.h″ main () { FILE *fp; unsigned i,k,j,m,n,x,max,number[30001]; if ((fp=fopen(″skate.txt″,″r″))==NULL) /*判断文件skate.txt是否存在,如存在打开该文件*/ { printf (″Can not open the skate.txt!″); exit(); } fscanf (fp,″%u″,&n); for (i=1;i<=n;i++)/*控制读取数据组数*/ { max=1; fscanf (fp,″%u %u″,&m,&number[1]); for (j=2;j<=m;j++)/*控制数据读取个数 */ {fscanf (fp,″%u″,&x); /*读取数据*/ if (x>number[max]) /*确定数据位置*/ number[++max]=x; else for (k=1;k<=max;k++) if (x<=number[k]) {number[k]=x; break;} } printf (″%u\n″,max);} fclose (fp); } 9908请你编程题目 前一段时间各个电视台都在播放金庸先生的《天龙八部》,大家都被阿紫对萧峰的真情所感动,可惜最后的结局不如人意。但大家却不知道,在他们逃亡过程中,曾经发生这样一件事情: 萧峰为阿紫真情所感,给了她一个机会:包括萧峰在内的N个人围成一个圆圈,按顺时针方向,每个人都有一个编号,即从1到N。现在由阿紫报出一个整数C,由萧峰开始按顺时针方向从1开始进行报数,报到C的人退出,下一个人再从1开始报数。如果最后留下的是萧峰的话,阿紫就可以和他在一起。例如:共有3个人,萧峰的编号为2,阿紫只要报出的是3,就可以使3号和1号先后退出,最后剩下萧峰。现在就请你编一个程序,替阿紫算一下,如何报出这个整数C,使得最后剩下的人是萧峰。 程序要求如下: 1、输入数据从文本文件中love.txt中读取。love.txt的格式为:每行为两个由空格分开的整数N和M,表示共有N个人,其中萧峰的编号为M。N在2到1500之间,M在1到N之间。当M和N都为0时,表示输入数据结束。 2、输出到屏幕上,输出格式为每行一个整数C,C为当有N个人,萧峰编号为M时,为了保证萧峰最后留下,阿紫应该报出的整数。这个整数C应该尽量小。 输入范例: 3 2 3 3 0 0 输出范例: 3 1 本期题目由上海的oldbug提供。 来稿请寄磁盘稿或用E-mail投稿,请写明解题思路和源程序(包含详细的注解),将来稿寄到电脑报编辑部的收信地址或E-mail邮箱,同时欢迎提供“请你编程”的题目。来稿截止日期:1999年8月15日。 本期获奖者名单 李栋宾(河北) 李志超(重庆) 沈 默(江苏) 许齐平(安徽) 王洪志(新疆) 曾劲松(湖北) 张继连(广西) 卢 品(贵州) 张晓东(黑龙江) 付永安(浙江) 每一位获奖者将获得苦丁香公司提供的光盘一张。 |
下载本期推荐软件 | 页 首 |
《电脑报》版权所有,电脑报网站编辑部设计制作发布 |