欢迎来到天天文库
浏览记录
ID:69474575
大小:45.50 KB
页数:10页
时间:2021-11-05
《c语言复赛题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.-信息学奥赛复赛练习题1.模拟开关〔题目名称:moni.bas〕〔12分〕 [题目描述]:有N盏电灯排成一行,依次编号为1,2,3,…,N。现各有一个开关,开场灯都亮着的。现在还有N个人,第一人走过来依次把1和1的倍数电灯的开关都拉一下。第三个人走过来依次把3和3的倍数的开关都拉一下,第五个人走过来依次把5和5的倍数的开关都拉一下〔按奇数的规律〕,…问最后都有哪些灯是关着的? [输入文件]文件名:moni.in 文件中只有一行,包含1个整数N(其中5≤N≤30) [输出文件]文件名:moni
2、.out 文件中共有假设干行,每一行一个数据,分别为那些关着的灯泡的编号。 要求:每一行的输出数据都从第一列开场。 [样例输入]:moni.in的容为: 10 [样例输出]:moni.out的容为: 1 2 4 8 9 main() { inti,n,s,x; inta[1000]; scanf("%d",&n); for(i=1;i3、[s]=1-a[s]; } x=x+2; } s=0; for(i=1;i4、把这些数从小到大排序,按照排好 的顺序去找同学做调查。请你协助明明完成“去重〞与“排序〞的工作。 【输入文件】 输入文件random.in有2行,第1行为1个正整数,表示所生成的随机数的个数:N 第二行有N个用空格隔开的正整数,为所产生的随机数。 【输出文件】 输出文件random.out也是2行,第1行为1个正整数M,表示不一样的随机数的个数。 第2行为M个用空格隔开的正整数,为从小到大排好序的不一样的随机数。 【输入样例】 10 2040326740208930040015 5、【输出样例】 8 152032406789300400 /*此题主要是考察对排序算法的掌握,只不过外加了一个去重的操作。此题的算法有很多,我们在考试时,时间紧,题目难度大。如果我们能用最简单的思维方式解决问题的话,就不一定把很多的时间放在代码执行效率的优化问题上。有时候牺牲一点空间〔存〕和时间对于获取更多的考试时间是非常有必要的。此题最简单的思想方法,就是根据题目要求,先对给定的一组数据进展排序,排序的方法可以使用最简单的冒泡算法来完成。由于此题的输出结果要求我们必须先统计出不重复数据的个数,所6、以当数据排序之后,我们可以先对所有的数据遍历一次,这一次遍历的目的就是让我们统计出不重复数据的个数,并将其输出。最后,我们还需进展一次遍历,这次遍历用于打印出排序之后不重复的所有数据结果. */ #include intmain() { FILE*fp1,*fp2; intN,M=0; inti,j; inta; intnum[100];//根据题目所给的数据规模定义数组的大小 if((fp1=fopen("random.in","r"))==NULL) { printf("c7、annotopenfile"); return0; } fscanf(fp1,"%d",&N);//输入随机数的个数 for(i=0;inum[j]) { a=num[i]; -.word.zl.-num[i]=num[j]; num[j]=a; } } fp2=fopen("8、random.out","w");//翻开写文件的指针 for(i=0;i { if(i>0&&num[i]==num[i-1])//思考一下这个去重的操作中为什么有i>0这个条件 continue; M++; } fprintf(fp2,"%d",M);//在结果文件中打印出不重复数据的个数并键入一个回车符 for(i=0;i { if(i>0&&num[i]==num[i-1])//思考一下这个去重的操作中为什么有
3、[s]=1-a[s]; } x=x+2; } s=0; for(i=1;i4、把这些数从小到大排序,按照排好 的顺序去找同学做调查。请你协助明明完成“去重〞与“排序〞的工作。 【输入文件】 输入文件random.in有2行,第1行为1个正整数,表示所生成的随机数的个数:N 第二行有N个用空格隔开的正整数,为所产生的随机数。 【输出文件】 输出文件random.out也是2行,第1行为1个正整数M,表示不一样的随机数的个数。 第2行为M个用空格隔开的正整数,为从小到大排好序的不一样的随机数。 【输入样例】 10 2040326740208930040015 5、【输出样例】 8 152032406789300400 /*此题主要是考察对排序算法的掌握,只不过外加了一个去重的操作。此题的算法有很多,我们在考试时,时间紧,题目难度大。如果我们能用最简单的思维方式解决问题的话,就不一定把很多的时间放在代码执行效率的优化问题上。有时候牺牲一点空间〔存〕和时间对于获取更多的考试时间是非常有必要的。此题最简单的思想方法,就是根据题目要求,先对给定的一组数据进展排序,排序的方法可以使用最简单的冒泡算法来完成。由于此题的输出结果要求我们必须先统计出不重复数据的个数,所6、以当数据排序之后,我们可以先对所有的数据遍历一次,这一次遍历的目的就是让我们统计出不重复数据的个数,并将其输出。最后,我们还需进展一次遍历,这次遍历用于打印出排序之后不重复的所有数据结果. */ #include intmain() { FILE*fp1,*fp2; intN,M=0; inti,j; inta; intnum[100];//根据题目所给的数据规模定义数组的大小 if((fp1=fopen("random.in","r"))==NULL) { printf("c7、annotopenfile"); return0; } fscanf(fp1,"%d",&N);//输入随机数的个数 for(i=0;inum[j]) { a=num[i]; -.word.zl.-num[i]=num[j]; num[j]=a; } } fp2=fopen("8、random.out","w");//翻开写文件的指针 for(i=0;i { if(i>0&&num[i]==num[i-1])//思考一下这个去重的操作中为什么有i>0这个条件 continue; M++; } fprintf(fp2,"%d",M);//在结果文件中打印出不重复数据的个数并键入一个回车符 for(i=0;i { if(i>0&&num[i]==num[i-1])//思考一下这个去重的操作中为什么有
4、把这些数从小到大排序,按照排好 的顺序去找同学做调查。请你协助明明完成“去重〞与“排序〞的工作。 【输入文件】 输入文件random.in有2行,第1行为1个正整数,表示所生成的随机数的个数:N 第二行有N个用空格隔开的正整数,为所产生的随机数。 【输出文件】 输出文件random.out也是2行,第1行为1个正整数M,表示不一样的随机数的个数。 第2行为M个用空格隔开的正整数,为从小到大排好序的不一样的随机数。 【输入样例】 10 2040326740208930040015
5、【输出样例】 8 152032406789300400 /*此题主要是考察对排序算法的掌握,只不过外加了一个去重的操作。此题的算法有很多,我们在考试时,时间紧,题目难度大。如果我们能用最简单的思维方式解决问题的话,就不一定把很多的时间放在代码执行效率的优化问题上。有时候牺牲一点空间〔存〕和时间对于获取更多的考试时间是非常有必要的。此题最简单的思想方法,就是根据题目要求,先对给定的一组数据进展排序,排序的方法可以使用最简单的冒泡算法来完成。由于此题的输出结果要求我们必须先统计出不重复数据的个数,所
6、以当数据排序之后,我们可以先对所有的数据遍历一次,这一次遍历的目的就是让我们统计出不重复数据的个数,并将其输出。最后,我们还需进展一次遍历,这次遍历用于打印出排序之后不重复的所有数据结果. */ #include intmain() { FILE*fp1,*fp2; intN,M=0; inti,j; inta; intnum[100];//根据题目所给的数据规模定义数组的大小 if((fp1=fopen("random.in","r"))==NULL) { printf("c
7、annotopenfile"); return0; } fscanf(fp1,"%d",&N);//输入随机数的个数 for(i=0;inum[j]) { a=num[i]; -.word.zl.-num[i]=num[j]; num[j]=a; } } fp2=fopen("
8、random.out","w");//翻开写文件的指针 for(i=0;i { if(i>0&&num[i]==num[i-1])//思考一下这个去重的操作中为什么有i>0这个条件 continue; M++; } fprintf(fp2,"%d",M);//在结果文件中打印出不重复数据的个数并键入一个回车符 for(i=0;i { if(i>0&&num[i]==num[i-1])//思考一下这个去重的操作中为什么有
此文档下载收益归作者所有