free pascal 编程三、拾苹果(spg.pas、spg.c)有一个游戏,屏幕被划分为N列,在屏幕的底部,有一个M

skyflyfeng2022-10-04 11:39:541条回答

free pascal 编程
三、拾苹果(spg.pas、spg.c)
有一个游戏,屏幕被划分为n列,在屏幕的底部,有一个m列宽的船(n>m)。游戏者可以***船向左或右移动,但船不能移出屏幕。最初时船在最左的m列。若干苹果从屏幕顶部下落,每个苹果沿某一列的直线下落,直到屏幕的底部,当到达底部后,下一个苹果开始下落。
如果船正好在苹果下落这一列的底部,表示该苹果被拾起。游戏的目标是拾起所有的苹果,但要使船在整个过程中移动的距离和最少。
输入输出样例:
输入:
5 2 (n和m,1 ≤ m < n ≤ 10)
3 (3个苹果,最多20个)
1 (在1、5、3列下落)
5
3
输出:
4
四、幸运整数(xyzs.pas、xyzs.c)
数字“4”和“7”是幸运数字,那么仅用幸运数字组成的整数就是幸运整数,请你帮助找出第k个幸运整数。输入k,输出第k个整数。
输入输出样例:
输入: 3 (k ≤ 30)
输出: 44
五、上网(sw.pas、sw.c)
请为网吧设计一个上网计费程序。上网在7:00到19:00期间每分钟需10分钱,在19:00到7:00期间每分钟需5分钱。从开始连接internet到结束的时间以分钟计算,一次连接不超过60分钟。给出一系列的连接时间表,请计算多次上网需要的总花费是多少分?
第一行先输入连接时间次数n。以后n行的每一行为一次连接描述,格式如下:
hh:mm dd
其中hh:mm表示连接的时和分,dd表示这一次连接的时间(以分钟表示,最大60),与mm间有一空格。如果时或分为y一位数,前面添0。时间表示从00:00到23:59。
输入输出样例:
输入:
3 (n ≤ 100)
20:05 12
06:45 30
13:08 15
输出:
435

六、secsa数(secsa.pas、secsa.c)
我们把整数n1、n2(包括n1、n2)之间的所有数的约数个数之和称为n1、n2的secsa数。求n1、n2的secsa数(1 ≤ n1 < n2 ≤ 3000)。
样例输入输出:
输入:2 6
输出:13
样例说明:2的约数有1、2 (2个);3的约数有1、3 (2个);4的约数有1、2、4 (3个);5的约数有1、5 (2个);6的约数有1、2、3、6 (4个)。所以2 、6的secsa数为13。

已提交,审核后显示!提交回复

共1条回复
haha0074 共回答了19个问题 | 采纳率84.2%
program spg;
var
a:array[0..1000] of longint;
i,j,n,m,x,y,z,k:longint;
begin
readln(n,m);
readln(j);
for i:=1 to j do readln(a[i]);
k:=m;
x:=1;
if m=1 then z:=1
else z:=m;
a[0]:=0;
while a[x]a[i-1] then y:=y+a[i]-a[i-1]
else y:=y+a[i-1]-a[i]-z;
write(y);
end.
1年前

相关推荐

将下列代数式改写成Free Pascal表达式 (1)(x+y)(x-y) (2)b
shuishanghua1年前4
xiaosisheng 共回答了18个问题 | 采纳率94.4%
(x+y)(x-y)
x,y,result:real
...
result:= (x+y)*(x-y);
...
free pascal 习题把下列代数式写成Pascal表达式1/2(eu+e-u):-(a3+b3)y4:sin2(x
free pascal 习题
把下列代数式写成Pascal表达式
1/2(eu+e-u):
-(a3+b3)y4:
sin2(x+0.5)+3cos(2x+4):
cos(x=y)/sin(|x|+|y|)的平方根
bluesummerrain1年前1
没余地 共回答了12个问题 | 采纳率91.7%
1/2*(e*u+e-u);
-(a3+b3)*y4;
sin(2*(x+0.5))+3*cos(2*x+4);
cos(x+y)/sin(abs(x)+abs(y))
好了,很细致的检查了一遍,忘采纳.
摆花 free pascal 动态规划
摆花 free pascal 动态规划
题目描述
  小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号。为了在门口展出更多种花,规定第 i 种花不能超过 ai 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。
  试编程计算,一共有多少种不同的摆花方案。
输入
  第一行包含两个正整数 n 和 m,中间用一个空格隔开。
  第二行有 n 个整数,每两个整数之间用一个空格隔开,依次表示 a1、a2、……an。
输出
  输出只有一行,一个整数,表示有多少种方案。注意:因为方案数可能很多,请输出方案数对 1000007 取模的结果。
样例输入
2 4
3 2
样例输出
2
提示
【输入输出样例说明】
有 2 种摆花的方案,分别是(1,1,1,2), (1,1,2,2)。括号里的 1 和 2 表示两种花,
比如第一个方案是前三个位置摆第一种花,第四个位置摆第二种花。

program p1104;
var n,m,i,j,k,l:integer;
ans:longint;
a:array[1..100] of integer;
f:array[0..100,0..100] of longint;
begin
readln(n,m);
ans:=-maxlongint;
for i:=1 to n do
read(a[i]);
for i:=1 to n do
f[i,0]:=1;
for j:=1 to m do
f[0,j]:=0;
for i:=1 to n do
for j:=1 to m do
begin
if j l:=j
else l:=a[i];
for k:=0 to l do
f[i,j]:=(f[i,j]+f[i-1,j-k]) mod 1000007;
end;
for i:=1 to n do
for j:=1 to m do
if f[i,j]>ans then ans:=f[i,j];
writeln(ans);
end.

各位大侠,哪里错了。。。速度回答
打不着火1年前1
shuteyes 共回答了14个问题 | 采纳率92.9%
我觉得lz的方法有点麻烦。
var
f:array[0..100,0..100]of longint; //f[i,j]表示前i种花摆了j盆的方法数
a:array[0..100]of longint;
n,m,i,j,k:longint;
begin
readln(n,m);
for i:=1 to n do
begin
read(a[i]);
if a[i]>m then a[i]:=m; //如果花的个数多余m,把它当成m来算,多了也没用。
end;
for i:=0 to a[1] do
f[1,i]:=1; //初值。因为同一种花,不论放多少盆都只有一种方法。
for i:=2 to n do
begin
for j:=0 to m do
begin
for k:=a[i] downto 0 do
if(j>=k)then f[i,j]:=(f[i,j]+f[i-1,j-k])mod 1000007; //状态转移方程
end;
end;
writeln(f[n,m] mod 1000007);
end.
用free pascal做有一个自然数被3,4,5除都余1,被7除余2,此数最小是几?
用free pascal做有一个自然数被3,4,5除都余1,被7除余2,此数最小是几?
gf
雅姿女人0091年前4
偶玉米的8行 共回答了18个问题 | 采纳率72.2%
program a;
var
i:integer;
begin
for i:=1 to 10000
begin
if (i mod 3=1) and (i mod 4=1) and (i mod 5=1) and (i mod 7=2) then begin
wrtie(i);
break;
end;
end;
end.
Free Pascal IDE编程,我今天才学,根据题编了个程序,不知哪错了,帮我看看
Free Pascal IDE编程,我今天才学,根据题编了个程序,不知哪错了,帮我看看

有三个小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,丙有13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有书多少粒糖果?
分析:这个问题中我们关心的是在游戏过程中每个小朋友的糖果个数,且他们所拥有的的糖果数是在变化的。因此可用a,b,c三个变量分别存放甲乙丙三个小朋友在某一时刻所拥有的糖果数。对于每人,分糖后,他的糖果数一定为原来的糖果数 div 3(因为分糖过程糖果的数目不一定都刚好分完,用整除恰恰可以表示多余的糖自己吃掉)。而其他两人则增加与这个小朋友现在拥有的一样的糖果。


善变动物1年前1
yangxiao88688 共回答了16个问题 | 采纳率75%
var a,b,c:integer;
Free pascal:求均值(非计数型循环)
Free pascal:求均值(非计数型循环)
问题描述
输入一串正整数,以输入-1表示输入结束,计算这些数的均值,保留一位小数。
输入格式
输入数据只有一行,为各整数,最后一个数为-1。
输出格式
输出一行,包含一个数,保留1位小数。  
样例输入
80 76 64 91 51 -1

样例输出
72.4

数据范围
输入的整数范围在1~100000000之间。
柠檬小酱1年前1
梦的衣裳 共回答了18个问题 | 采纳率83.3%
program test;
var
i,j:int64;
ans:extended;
begin
while true do //直接读入
begin
read(i);
if i=-1 then break; //读到-1就退出
inc(j); //用j记录个数
ans:=ans+i;
end;
ans:=ans/j; //计算平均值
write(ans:0:1);
end.
free pascal练习题求解答 急! 求代码
free pascal练习题求解答 急! 求代码
1、将任意一个整数分解质因数。如输入36则输出36=2*2*3*3
2、编写一程序验证角谷猜想:对于任意一个大于一的自然数n,若n为奇数则将n变为3*n+1,否则将n变成n的一半,经过若干次变换n一定可以变为1
如输入5 输出n=3*5+1=16,n=16 div 2 =8,n=8 div 2=4, n=4 div 2=2,n=2 div 2=1, OK
3、有一堆200多个的零件,三个三个数剩两个,五个五个数剩三个,七个七个数剩五个。计算零件个数(不能用数学方法直接列方程)
4、求所有的水仙花数。所谓水仙花数是指一个三位数abc满足a^3+b^3+c^3=abc

多谢各位大神!
2631336701年前1
babyldm 共回答了11个问题 | 采纳率81.8%
var
a,b,c,d,e:integer;
begin
//原2
write('(...)');
writeln;
for a:=1 to 5 do
begin
for c:=1 to 3 do
begin
for b:=1 to 5-a do write(' ');
for b:=1 to a do write('*');
for b:=a-1 downto 1 do write('*');
for b:=1 to 5-a do write(' ');
end;
writeln;
end;
writeln;
//2
write('(2)');
writeln;
write('please write a number:');
readln(e);
while e>1 do
begin
if e mod 2=1
then begin
write('3*',e,'+1=',e*3+1,' ');
e:=e*3+1;
end
else begin
write(e,' div 2=',e div 2,' ');
e:=e div 2;
end;
end;
write('OK');
writeln;
writeln;
//3
write('(3)');
writeln;
a:=101;
repeat
a:=a+1;
until (a mod 3=2)and(a mod 5=3)and(a mod 7=5);
write(a);
writeln;
writeln;
//4
write('(4)');
writeln;
for d:=100 to 999 do
begin
a:=d div 100;
b:=(d-a*100) div 10;
c:=d mod 10;
if a*a*a+b*b*b+c*c*c=d then writeln(d);
end;
readln;
是我,望采纳
用free pascal 来解两条一次函数的交点坐标.如y=ax+b和y=cx+d,a,b,d,c已知,求x、y.
图盲1年前4
jem0dr 共回答了15个问题 | 采纳率93.3%
第一个空填的是:ax+b=0
(原因:求一次函数y=ax+b与x轴交点的横坐标即是求当y=0时x的值)
第二个空填的是:y=ax+b
(原因:不等式ax+b>0的解集即是求y>0时x的取值范围)
找出数字之和等于6且能被5整除的所有两位数(用free pascal语言回答)
tjhn1年前1
梵音楚歌 共回答了10个问题 | 采纳率90%
program t1;
var a,b,c,i:longint;
begin
for i:=10 to 99 do
begin
c:=i mod 10;
b:=i div 10;
if (a+b=6) and (i mod 5=0) then begin write(i:5); a:=a+1; end;
end;
writeln(a);
end.
说一下,a是计数器,用来计有多少个数,不用的话删掉就行了(倒数第二行、倒数第四行“a:=a+1”那一句、第二行去掉“a,”).b和c是这个数的十位和个位,用来计算是不是等于六,i就是那个数.复制的时候将他复制到txt上,把后缀名“.txt”改成“.pas”就行了,或者直接复制.
希望对你有帮助
楼上的,turbo pascal 和 free pascal一样啊!
Nocomachns定理.用free pascal
Nocomachns定理.用free pascal
Description
Nocomachns定理.
任何一个n的三次方一定可以表示成n个连续的奇数和.
输入:n(n
vfgvfg1年前1
三杯茶TTT 共回答了23个问题 | 采纳率95.7%
program t1;
var i,j,n,k:longint;
begin
readln(n);
j:=n*(n-1)+1;
k:=n*(n+1)-1;
write(j);
for i:=j+2 to k do
if i mod 2=1 then write('+',i);
end.
Free Pascal语言回答其平方等于某两个正整数平方之和的正整数称为弦数.例如,由于32+42=52,因此5为弦数.
Free Pascal语言回答
其平方等于某两个正整数平方之和的正整数称为弦数.例如,由于32+42=52,因此5为弦数.求[121,130]之间:(1)弦数数目;(2)最小的弦数;(3)最大的弦数.
广雪1年前1
暴雨caozhun 共回答了27个问题 | 采纳率88.9%
var
a,b,i,j,top:longint;
s:array[1..100] of longint;
begin
a:=121;b:=130;
top:=0;
for i:=a to b do
for j:=1 to i-1 do
if frac(sqrt(sqr(i)-sqr(j)))=0 then
begin
inc(top);
s[top]:=i;
break;
end;
writeln(top,' ',s[1],' ',s[top]);
end.
//(1):top (2)s[1] (3)s[top]
free pascal 给出一个正整数N 求出从1开始的这N个数的全部各个数位上的数字之和(1
岸边的熏衣草1年前1
jiesuaiqing 共回答了20个问题 | 采纳率80%
没必要紧张!
longint的数据范围是 -2147483648 到 2147483647,够用了。
是 Free Pascal 求100到999中的水仙花数.(若三位数ABC,ABC=A的三次方+B的三次方+C的三次方,
是 Free Pascal
求100到999中的水仙花数.(若三位数ABC,ABC=A的三次方+B的三次方+C的三次方,则为水仙花数.例如153,1三次+5的三次方+3的三次方=153)
lchy_xq1年前1
wjm2009 共回答了18个问题 | 采纳率83.3%
program ex1;
var
a,b,c,d:integer;
begin
for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
if a*a*a+b*b*b+c*c*c=a*100+b*10+c then
begin
d:=a*100+b*10+c;
write(d,' ');
end;
end.
怎么用free pascal做这道题?
怎么用free pascal做这道题?
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了x个1到1000之间的随机整数(x≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入
有2行,第1行为1个正整数,表示所生成的随机数的x个数:
第2行有x个用空格隔开的正整数,为所产生的随机数
输出
第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
样例输入
10
20 40 32 67 40 20 89 300 400 15
样例输出
8
15 20 32 40 67 89 300 400
提示
来源
一维数组
渔人科技1年前1
gzly001 共回答了19个问题 | 采纳率89.5%
var
AA:array[1..1000] of integer;
i,m,x:integer;

Procedure insert(var m:integer;x:integer);{忽略相同的}
Var I,j:integer;
Begin
if m=0 then begin m:=1; aa[1]:=x; end
else begin
j:=0;
If x>aa[m] then begin aa[m+1]:=x; inc(m); end
Else if x For I:=m downto 1 do aa[i+1]:=aa[i];
Aa[1]:=x;
inc(m);
End
Else begin
For I:=1 to m-1 do if (x>aa[i])and(x if j<>0 then begin For I:=m downto j+1 do aa[i+1]:=aa[i]; Aa[j+1]:=x; inc(m); end;
End;
end;
End;

begin
for i:=1 to 1000 do aa[i]:=0;
m:=0;
randomize;
repeat
x:=random(1000)+1;
insert(m,x);
until m=100;
writeln;
for i:=1 to m do writeln(aa[i]);
end.
一道Free pascal题(题目在问题补充里)
一道Free pascal题(题目在问题补充里)
输入十个正整数,把这十个数按由大到小的顺序排列。请用两种方法,分别为:选择排序和冒泡排序。命名方式:21.pas和22.pas。
八面灵龙1年前1
阿紫626 共回答了10个问题 | 采纳率100%
选择排序主件:Begin
for I := 1 To N - 1 Do //做N - 1趟选择排序
begin
K := I;
For J := I + 1 To N Do //在当前无序区R[I..N]中选最小的元素R[K]
Begin
If R[J] < R[K] Then K := J
end;
If K I Then //交换R[I]和R[K]
begin
Temp := R[I];
R[I] := R[K];
R[K] := Temp;
end;
end;
End;
冒泡排序主件:
begin
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]
请用Free Pascal解答以下3道题.
请用Free Pascal解答以下3道题.
甲、乙、丙三人共有24元钱,先由甲分钱给乙、丙二人,所分给得数与各人已有的数相同;接着由乙分给丙、甲,分发同前;再有丙分钱给甲、乙,分发亦同前.经上述三次分钱之后,每个人的钱数恰好一样多.求原先各人的钱数分别是多少?
桔子葡萄1年前1
悟空猪 共回答了19个问题 | 采纳率73.7%
var
x,y,z:integer;
begin
x:=8; y:=8; z:=8;
x:=x div 2; y:=y div 2; z:=x+y+z;
z:=z div 2; x:=x div 2; y:=x+y+z;
y:=y div2; z:=z div2; x:=x+y+z;
writeln(x:3,y:3,z:3);
End.
free pascal怎样算集合元素个数
steven071年前1
amao8106 共回答了16个问题 | 采纳率87.5%
穷举
比如
t:=0;
for i:=1 to n do
if [i] in s then inc(t);
writeln('total:',t);
Free Pascal 程序设计题 速度要
Free Pascal 程序设计题 速度要
1.在1~500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。
2.求1~100之间的奇数的和。
3.求S=1-2+3-4+5-6+7....+99-100的值。
4.试编程找出能被各位数字之和整除的一切两位数。
今天晚上要,以上题目都要用FOR语句做,满意必定加分。
水儿I1年前1
最先走的是我 共回答了22个问题 | 采纳率95.5%
program dd1;
var i,j,s:longint;
begin
for i:=1 to 500 do
if (i mod 3=2)and(i mod 5=3)and(i mod 7=2) then write(i,' ');
end.
-------------------------------------
program dd2;
var i,j,s:longint;
begin
for i:=1 to 100 do
if odd(i) then s:=s+i;
writeln(s);
end.
------------------------------
program dd3;
var i,j,s:longint;
begin
for i:=1 to 100 do
if odd(i) then s:=s+i
else s:=s-i;
writeln(s);
end.
------------------------------------
program dd4;
var i,j,s:longint;
begin
for i:=10 to 99 do
begin
j:=i mod 10+i div 10;
if i mod j=0 then write(i,' ');
end;
end.
手打的,已检验,没问题0.0...
Free Pascal解答A B C D E F 试题 A:【入门】求任意三位数各个数位上数字的和【试题描述】 对于一个
Free Pascal解答
A B C D E F
试题 A:【入门】求任意三位数各个数位上数字的和
【试题描述】
对于一个任意的三位自然数X,编程计算其各个数位上的数字之和S.
【输入描述】
输入一行,只有一个整数x(100
7楼A座scofield1年前1
小夜灯 共回答了13个问题 | 采纳率76.9%
var
a,b:integer;
begin
read(a);
b:=(a div 100)+((a div 10)mod 10)+(a mod 10);
writeln(b);
end.
Free Pascal 打鱼晒网题目,怎么用循环语句做
free pascal 打鱼晒网题目,怎么用循环语句做
***有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
xiaotuniuniu1年前1
xd3360 共回答了18个问题 | 采纳率83.3%
第一你要计算当天离1990年1月1日有多少天,然后在取余判断就可以了!仅写计算天数的部分var y,m,d,yt,mt,dt,ans:longint; day:array[1..12] of longint=(31,28,31,30,31,30,31,31,30,31,30,31);function pd(x:lo...
free pascal问题:将1,2,3…9共9个数,排列成下列三角形,其中a,b…i分别表示1,2…9中的一个数字。
free pascal问题:将1,2,3…9共9个数,排列成下列三角形,其中a,b…i分别表示1,2…9中的一个数字。
3、将1,2,3…9共9个数,排列成下列三角形,其中a,b…i分别表示1,2…9中的一个数字。并要求同时满足下列条件。
      a
b c
d e
f g h i
① a
请输入您要的1年前1
renshen 共回答了17个问题 | 采纳率82.4%
计算结果如下:
2
4 9
6 5
7 8 1 3
2
6 9
4 5
7 8 1 3
4
2 9
6 5
7 8 3 1
4
6 9
2 5
7 8 3 1
7
3 9
5 2
4 8 6 1
Total=5
大侠们帮我解决这个难题 最佳字符编码 用free pascal做,急求!
大侠们帮我解决这个难题 最佳字符编码 用free pascal做,急求!
在电文传输中,需要将电文中出现的每个字符进行二进制编码。在设计编码时需要遵守两个原则:
(1)发送方传输的二进制编码,到接收方解码后必须具有唯一性,即解码结果与发送方发送的电文完全一样;
(2)发送的二进制编码尽可能地短。
下面我们介绍两种编码的方式。
1. 等长编码
这种编码方式的特点是每个字符的编码长度相同(编码长度就是每个编码所含的二进制位数)。假设字符集只含有4个字符A,B,C,D,用二进制两位表示的编码分别为00,01,10,11。若现在有一段电文为:ABACCDA,则应发送二进制序列:00010010101100,总长度为14位。当接收方接收到这段电文后,将按两位一段进行译码。这种编码的特点是译码简单且具有唯一性,但编码长度并不是最短的。
2. 不等长编码
在传送电文时,为了使其二进制位数尽可能地少,可以将每个字符的编码设计为不等长的,使用频度较高的字符分配一个相对比较短的编码,使用频度较低的字符分配一个比较长的编码。例如,可以为A,B,C,D四个字符分别分配0,00,1,01,并可将上述电文用二进制序列:000011010发送,其长度只有9个二进制位,但随之带来了一个问题,接收方接到这段电文后无法进行译码,因为无法断定前面4个0是4个A,1个B、2个A,还是2个B,即译码不唯一,因此这种编码方法不可使用。
假设有一个电文字符集中有n个字符,每个字符的使用频率分别为a1,a2,...,an,现在要求设计一个二进制编码,使得总的编码长度最短。
输入文件格式:
第一行为一个整数n,表示有n个字符。
第二行为以空格格开的n个整数,分别表示对应字符的出现频度,数字均大于0,小于100。
输出格式:
输出只有一行,为对应的n个二进制编码,每个编码之间用空格格开。
例如输入:
8
5 29 7 8 14 23 3 11
输出应为
0001 10 1110 1111 110 01 0000 001
冰暴暴1年前1
chenfen2000 共回答了14个问题 | 采纳率92.9%
去查找哈夫曼编码相关知识,再数据结构中有一个最优二叉树(哈夫曼树),我记得这个好像是哈夫曼树的例题
如何做这题 free pascal 用repeat语句 解得别太复杂 我才7年及 要让我听得懂 我才选
如何做这题 free pascal 用repeat语句 解得别太复杂 我才7年及 要让我听得懂 我才选
求出所有小于1000并个位加百位的和能被十位整除的数的和、
黄俊杰1年前1
cw0066 共回答了18个问题 | 采纳率83.3%
这个问题主要用到取模(余数)的函数MOD 和 整除函数 DIV个位=这个数除10的余数 (比如6的个位=6 ÷ 10=0....6,104的个位=104 ÷ 10=10.....4)小于四位数的百位=这个数整除100 (比如10的百位=10 ÷ 100=0,502的百位...
free pascal 奖学金题目
free pascal 奖学金题目
某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:
7 279
5 279
这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是:
5 279
7 279
则按输出错误处理,不能得分。
【输入】
输入文件scholar.in包含n+1行:
第1行为一个正整数n,表示该校参加评选的学生人数。
第2到n+1行,每行有3个用空格隔开的数字,每个数字都在0到100之间。第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为1~n(恰好是输入数据的行号减1)。
所给的数据都是正确的,不必检验。
【输出】
输出文件scholar.out共有5行,每行是两个用空格隔开的正整数, 依次表示前5名学生的学号和总分。
求代码和解析
遭遇健忘1年前1
无落789 共回答了22个问题 | 采纳率100%
{
我用了快排,用选择排序、冒泡排序也是可以的。
你写完了可以在http://www.***.cn/Problem_Show.asp?id=1130提交
}
var
n:longint; //学生数量
a,b,c:array [1..300] of longint; //用于保存数据
procedure init; //初始化
var i:longint;
begin
readln(n); //读入学生数量
for i:=1 to n do
begin
readln(a[i],b[i],c[i]); //读入语文、数学、英语成绩
b[i]:=a[i]+b[i]+c[i]; //数学成绩没多大用,替换为总成绩
c[i]:=i; //英语成绩没多大用,替换为学号
end;
end;
procedure swap(var a,b:longint); //交换a、b两个数的过程
var t:longint;
begin
t:=a;
a:=b;
b:=t;
end;
function check(a,b,c,d,e,f:longint):boolean; //用于快速排序过程中的判断
begin
if be then exit(true);
if ad then exit(true);
if c
free pascal编程选人.一个小组共五人,分别为A,B,C,D,E.现有一项任务,要他们中的3个人去完成。
free pascal编程选人.一个小组共五人,分别为A,B,C,D,E.现有一项任务,要他们中的3个人去完成。
已知:(1)A、C不能都去;(2)B、C不能都不去;(3)如果C去了,D、E就只能去一个,且必须去一个;(4)B、C、D不能都去;(5)如果B去了,D、E就不能都去。编程找出此项任务该由哪三人去完成的所有组合。
请给程序,不要用数组,只用for循环
NICEICEty1年前0
共回答了个问题 | 采纳率
[free pascal]矩阵问题描述  输入一个矩阵的行数,输出对应的图形(对角线数据为0,其余为1)。输入格式  输
[free pascal]矩阵
问题描述
  输入一个矩阵的行数,输出对应的图形(对角线数据为0,其余为1)。
输入格式
  输入数据只有一个整数n,表示矩阵有n行n列。
输出格式
  输出n行,每行n个数据,每个数之间有一个空格。
样例输入
5
样例输出
0 1 1 1 0
1 0 1 0 1
1 1 0 1 1
1 0 1 0 1
0 1 1 1 0

dzwlm1年前1
ccedmsn 共回答了20个问题 | 采纳率95%
program Matrix;
var
n, head, tail, i, j: Integer;
begin
Readln(n);
head := 1;
tail := n;
for i := 1 to n do
begin
for j := 1 to n do
if (j head) and (j tail) then
Write('1 ')
else Write('0 ');
Writeln;
Inc(head);
Dec(tail);
end;
Readln;
end.