下载此文档

c语言复赛题.doc


文档分类:资格/认证考试 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
(题目名称:)(12分) [题目描述]:有N盏电灯排成一行,依次编号为1,2,3,…,N。现各有一个开关,开始灯都亮着的。现在还有N个人,第一人走过来依次把1和1的倍数电灯的开关都拉一下。第三个人走过来依次把3和3的倍数的开关都拉一下,第五个人走过来依次把5和5的倍数的开关都拉一下(按奇数的规律),…问最后都有哪些灯是关着的? [输入文件]文件名: 文件中只有一行,包含1个整数N(其中5≤N≤30) [输出文件]文件名: 文件中共有若干行,每一行一个数据,分别为那些关着的灯泡的编号。要求:每一行的输出数据都从第一列开始。[样例输入]:: 10 [样例输出]:: 1 2 4 8 9 main() { inti,n,s,x; inta[1000]; scanf("%d",&n); for(i=1;i<n;i++) a[i]=1; x=1; while(x<=n) { s=0; while(s<=n) {s=s+x; a[s]=1-a[s]; } x=x+2; } s=0; for(i=1;i<n;i++) if(a[i]==0) {printf("%d",i);s=s+1; } if(s==0)printf("0");} 3.【问题描述-明明的随机数】明明想在学校中请一些同学一起做问卷调查,为了实验的客观性,他先用计算机生成了 N个1到1000之间的随机整数,(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。【输入文件】,第1行为1个正整数,表示所生成的随机数的个数:N 第二行有N个用空格隔开的正整数,为所产生的随机数。【输出文件】,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。【输入样例】 10 2040326740208930040015 【输出样例】 8 152032406789300400 /*本题主要是考察对排序算法的掌握,只不过外加了一个去重的操作。本题的算法有很多,我们在考试时,时间紧,题目难度大。如果我们能用最简单的思维方式解决问题的话,就不一定把很多的时间放在代码执行效率的优化问题上。有时候牺牲一点空间(内存)和时间对于获取更多的考试时间是非常有必要的。本题最简单的思想方法,就是根据题目要求,先对给定的一组数据进行排序,排序的方法可以使用最简单的冒泡算法来完成。由于本题的输出结果要求我们必须先统计出不重复数据的个数,所以当数据排序之后,我们可以先对所有的数据遍历一次,这一次遍历的目的就是让我们统计出不重复数据的个数,并将其输出。最后,我们还需进行一次遍历,这次遍历用于打印出排序之后不重复的所有数据结果. */ #include intmain() { FILE*fp1,*fp2; intN,M=0; inti,j; inta; intnum[100];//根据题目所给的数据规模定义数组的大小 if((fp1=fopen("random

c语言复赛题 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息