pascal 程序

信息学(计算机)试题(Pascal语言)考试时间:2013年5月17日——————————————————————————————————说明:1.试卷1~3题每题100... 信息学(计算机)试题
(Pascal语言)
考试时间:2013年5月17日
——————————————————————————————————
说明:1.试卷1~3题每题100分,总共300分;
2.评分标准:运行程序,输入测试数据,答案正确,才能得分;
2.请在E:\盘建立好个人文件夹(用你的姓名作为文件夹名称),每做完一题,应及时用“T+题号”(例如“T1.pas”、“T2.pas”分别表示第一、二题)作文件名存入个人文件夹中。

第一题
(100分存盘程序名:T1)
【问题描述】
1,3,3,3,5,5,5,5,5,7,7,7,7,7,7,7,9,9,9…...求数列第n项是多少?
【样例输入1】
3
【样例输出1】
3
【样例输入2】
15
【样例输出2】
7

第二题
(100分存盘程序名:T2)
【问题描述】
2.10、有N个人围坐在圆桌周围,座号依次为1……N,从1号开始报数,数到M的人便退出,从下一个人起重新报数,数到M的人也退出,不断进行下去直到最后一个人退出,编程打印出依次退出的人的座号。(N、M由键盘输入)
【样例输入1】
10 5
【样例输出1】
5 10 6 2 9 8 1 4 7 3

第三题
(100分存盘程序名:T3)
【问题描述】
从键盘输入大于1位的自然数,打印出将其各位数字重新排列成的比原数小的最大数。
【样例输入1】
652362245679
【样例输出1】
652359766422
【样例输入2】
32
【样例输出2】
23
展开
 我来答
商法典111
2013-05-19
知道答主
回答量:78
采纳率:0%
帮助的人:22.2万
展开全部
t1
var a,n,b,c,d,e,i,j:integer;
begin
readln(n);
if n=0 then begin writeln(1);halt;end;
for i:=1 to n do
if i*i>n then break;
writeln(i*2+1);
end;
t2
var a,h,t,b,c,d,e,n,m:integer;
f:array[0..1000]of integr;
begin
readln(n,m);
for i:=0 to n-1 do
f[i]:=i+1;
f[n]:=1;
h:=0;t:=n;
while(t>2) do
begin
for i:=1 to m-1 do
h:=f[h];
a:=f[h];
dec(t);
f[h]:=f[a];
end;
writeln(a);
end.
追问
你给的题全是错的,无聊……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adsa93
2013-05-22 · 超过22用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:42.6万
展开全部
program t1;
var
s:qword;
num,n,ans:longint;
begin
assign(input,'t1.in');
reset(input);
assign(output,'t1.out');
rewrite(output);
readln(n);
num:=1;s:=0;
while s<n do
begin
inc(s,num);
ans:=num;
inc(num,2);
end;
write(ans);
close(input);
close(output);
end.

program t2;
var
a:array [-1..1000] of longint;
i,j,n,m:longint;
begin
assign(input,'t2.in');
reset(input);
assign(output,'t2.out');
rewrite(output);
read(n,m);
for i:=1 to n do a[i]:=i;i:=0;a[0]:=n;
while n<>0 do
begin
write(a[(i+m) mod n],' ');
i:=(i+m) mod n-1;dec(n);
for j:=i+1 to n do a[j]:=a[j+1];
end;
close(input);
close(output);
end.

program t3;
var
a,b:array [1..226] of integer;
st:string;
i,code,k,n:longint;
procedure sort(left,right:longint);
var
l,r,mid,x:longint;
begin
l:=left;r:=right;mid:=b[(l+r) div 2];
repeat
while b[l]<mid do inc(l);
while b[r]>mid do dec(r);
if l<=r then
begin
x:=b[l];b[l]:=b[r];b[r]:=x;
inc(l);dec(r);
end;
until l>r;
if l<right then sort(l,right);
if r>left then sort(left,r);
end;
function max(x:longint):integer;
var
i,k:longint;
begin
max:=0;
for i:=1 to x do
if (a[x+1]>a[i])and(a[i]>max) then begin max:=a[i];k:=i; end;
if max=0 then max:=a[x+1]
else b[k]:=a[x+1];
end;
begin
assign(input,'t3.in');
reset(input);
assign(output,'t3.out');
rewrite(output);
readln(st);
n:=length(st);
for i:=1 to n do val(st[n-i+1],a[i],code);
for i:=1 to n do
begin
k:=i-1;
b[i]:=max(k);
if b[i]<>a[i] then break;
end;
if (k+1<>n)and(a[n]<>b[n]) then sort(1,k);
inc(k);
for i:=n downto 1 do
if i>k then write(a[i]) else write(b[i]);
close(input);
close(output);
end.
题目输出的样例是对的
如有错误或者不懂的地方,请指教
望采纳
很费脑子的········
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式