欢迎来到天天文库
浏览记录
ID:11926385
大小:41.50 KB
页数:5页
时间:2018-07-14
《pascal练习题(附答)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1.测定素数(check.pas/c/cpp)*【描述】输入n个数,测定他们是不是素数【输入格式】两行,第一行为n,第二行有n个数(Xi),数与数之间用空格分开。(1≤N≤1000);(1≤Xi≤5000000)【输出格式】一行n个true或false,输出对应的数字是否是素数(TRUE和FALSE之间用空格隔开)【输入样例】59988123【输出样例】FALSEFALSEFALSETRUETRUE2.校门外的树(tree.pas/c/cpp)【描述】某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。【输入格式】输入文件tree.in的第一行有两个整数L(1<=L<=10000)和M(1<=M<=100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。【输出格式】输出文件tree.out包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。【样例输入】5003150300100200470471【样例输出】298【数据限制】对于20%的数据,区域之间没有重合的部分;对于其它的数据,区域之间有重合的情况。 1.排队接水(water.pas/c/cpp)【描述】有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。【输入格式】输入文件共两行,第一行为n;第二行分别表示第1个人到第n个人每人的接水时间T1,T2,…,Tn,每个数据之间有1个空格。【输出格式】一行为最小平均等待时间(输出结果精确到小数点后两位)。【样例输入】1056121991000234335599812【样例输出】532.00提示:每人等待时间包括排队等待时间、自己打水时等待的时间。2.统计人数(count.pas/c/cpp)*【描述】数学竞赛结束后,各个班主任老师都很迫切地想知道自己班级在全年段前N名的人数。于是,教务主任就请来信息学兴趣小组的同学来帮忙,要求编写一程序,只要告诉计算机要查的班级K班和名次前N名,然后再输入M个学生的成绩,计算机就统计出K班在年段前N名中的人数。(假设每个学生的总分各不相同)【输入格式】输入文件count.in共M+1行第一行三个整数依次为M,K,N,分别表示全年段共有M个学生,要统计的是K班在全年段前N名的人数。(M≤1000,K≤20,N≤M)接下来M行是M个学生的班级和成绩,中间用一个空格隔开。【输出格式】输出文件count.out共一行,表示K班在年段前N名中的人数。【样例输入】7252653909100864266280484【样例输出】2 //check.pasconstmaxN=5000000;vara:Array[1..maxN]ofboolean;//设定一个筛,根据题目要求设1~500wn,i,j,x:longint;beginfillchar(a,sizeof(a),true);//全设为truea[1]:=false;//1不是素数,直接标记为falsefori:=2totrunc(sqrt(maxN))do//因为每个数据大小不定,所以2~500w的素数都必须筛出来ifa[i]thenforj:=2tomaxNdividoa[i*j]:=false;assign(input,'check.in');reset(input);assign(output,'check.out');rewrite(output);readln(n);fori:=1tondo//有了判定的素数的表(数组),下面操作直接读入-》查表-》输出即可beginread(x);write(a[x],'');end;close(input);close(output);end.//tree.pasvari,j,L,m,s,e,t:integer;a:array[0..10000]ofboolean;//注意起点是0,所以数组下标从0开始beginassign(input,'tree.in');reset(input);assign(output,'tree.out');rewrite(output);readln(L,m);fori:=0toLdoa[i]:=true;//首先定义这些树都在(0~L)fori:=1tomdobeginreadln(s,e);forj:=stoedoa[j]:=false;//从s开始到e结束的都标记为false,即树被移走了end;t:=0;fori:=0toLdoifa[i]theninc(t);//统计0~L之间有多少个true即可writeln(t); close(input);close(output);end.//water.pasvara:array[1..10000]oflongint;n,m,i,j,t,s:longint;beginassign(input,'water.in');reset(input);assign(output,'water.out');rewrite(output);readln(n);fori:=1tondoread(a[i]);fori:=1ton-1do//把数据按从小到大排列,即接水时间少的先接水。beginm:=i;forj:=i+1tondoifa[m]>a[j]thenm:=j;t:=a[m];a[m]:=a[i];a[i]:=t;end;s:=0;fori:=1tondos:=s+a[i]*(n-i+1);//注:第1个人接水,N个人都等了a[1]的时间,第2人接水有n-1人共等待了a[2]时间,那么第i个人接水时剩下的人(包括自己)一共等待了a[i]*(n-i+1)的时间。writeln(s/n:0:2);close(input);close(output);end.//count.pasvara,b:array[1..1000]ofinteger;m,k,n,i,j,t,x,s:integer;beginassign(input,'count.in');reset(input);assign(output,'count.out');rewrite(output);readln(m,k,n);fori:=1tomdoreadln(a[i],b[i]);//设a[i]为班号,b[i]为成绩fori:=1tondo//因为只在前n人中统计,所以排序只要排n个即可(n≤m)beginx:=i;forj:=i+1tomdo ifb[x]
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处