跪求Pascal完善程序习题,别太难。
答案:1 悬赏:30 手机版
解决时间 2021-03-15 12:49
- 提问者网友:未信
- 2021-03-15 01:33
跪求Pascal完善程序习题,别太难。
最佳答案
- 五星知识达人网友:底特律间谍
- 2021-03-15 02:39
1.
问题描述:小明手头有一份红十字会的捐款名单,但是这份名单被外星人恶意破坏过,你的任务是帮助小明去恢复这份名单。由于外星人低估了你的智商,破坏的规则非常简单,先是将姓名和捐款金额联接到一行,再将这一行内容按顺序切成多行。
输入格式:有很多行,表示输入的字符串。
输出格式:输出共有多行,其中每一个人的信息一行,分别是姓名和金额,中间用空格隔开。
输入样例:
zhangsa
n890liu
hua111
输出样例:
zhangsan890
liuhua111
程序清单:
var
s, t: ansistring;
x, len, i: longint;
flag: boolean;
begin
s := ‘‘;
while not ⑴ do
begin
readln(t);
s := s + t;
end;
len := length(s); t := ‘‘; x := 0; flag :=false;
for i := 1 to len do
begin
if (s[i] <= ‘9’) and (s[i] >= ‘0’) then
begin
x := ⑵ + ord(s[i]) – ord(‘0’);
if flag = false then
⑶;
end
else
begin
if flag = true then
begin
⑷;
x := 0;
t := ‘‘;
⑸;
end;
t := t + s[i];
end;
end;
writeln(t, ‘ ‘, x);
end.
2.
问题描述:有一天小明来到一台神奇的取款机前,取款机可以无限提供某些特定面额的货币,小明想知道他要取出x元共存在几种不同的方案(取出顺序的不一样认为是相同的方案,具体以样例为准)。
输入格式:
第一行一个整数m,表示提供的货币种数。
第二行共m个用空格隔开的数字,表示其具体面额。
第三行一个整数x,表示需要取出的钱额。
输出格式:输出一个整数,表示方案数。
输入样例:
3
1 2 5
4
输出样例:
3
输出说明:
取出4元的3种方案分别为(2,2),(1,1,2),(1,1,1,1)。
程序清单:
var
dp: array[ ⑹..10001]of longint;
a: array[1..10] of longint;
i, j, x, m:longint;
begin
read(m);
for i := 1 to m do read(a[i]);
⑺;
fillchar(dp,sizeof(dp), 0);
dp[0] := ⑻;
for i := 1 to m do
for j := 0 to x do
begin
if ⑼ then break;
if dp[j] = 0 then ⑽;
dp[j+a[i]] := dp[j+a[i]]+ ⑾;
end;
writeln(dp[x]);
end.
程序填空 答案
【1】 eof
【2】 x*10
【3】 flag:=true
【4】 writeln(t,' ',x)
【5】 flag:=false
【6】 0
【7】 readln(x)
【8】 1
【9】 j+a[i]>x
【10】 continue
【11】 dp[j]
问题描述:小明手头有一份红十字会的捐款名单,但是这份名单被外星人恶意破坏过,你的任务是帮助小明去恢复这份名单。由于外星人低估了你的智商,破坏的规则非常简单,先是将姓名和捐款金额联接到一行,再将这一行内容按顺序切成多行。
输入格式:有很多行,表示输入的字符串。
输出格式:输出共有多行,其中每一个人的信息一行,分别是姓名和金额,中间用空格隔开。
输入样例:
zhangsa
n890liu
hua111
输出样例:
zhangsan890
liuhua111
程序清单:
var
s, t: ansistring;
x, len, i: longint;
flag: boolean;
begin
s := ‘‘;
while not ⑴ do
begin
readln(t);
s := s + t;
end;
len := length(s); t := ‘‘; x := 0; flag :=false;
for i := 1 to len do
begin
if (s[i] <= ‘9’) and (s[i] >= ‘0’) then
begin
x := ⑵ + ord(s[i]) – ord(‘0’);
if flag = false then
⑶;
end
else
begin
if flag = true then
begin
⑷;
x := 0;
t := ‘‘;
⑸;
end;
t := t + s[i];
end;
end;
writeln(t, ‘ ‘, x);
end.
2.
问题描述:有一天小明来到一台神奇的取款机前,取款机可以无限提供某些特定面额的货币,小明想知道他要取出x元共存在几种不同的方案(取出顺序的不一样认为是相同的方案,具体以样例为准)。
输入格式:
第一行一个整数m,表示提供的货币种数。
第二行共m个用空格隔开的数字,表示其具体面额。
第三行一个整数x,表示需要取出的钱额。
输出格式:输出一个整数,表示方案数。
输入样例:
3
1 2 5
4
输出样例:
3
输出说明:
取出4元的3种方案分别为(2,2),(1,1,2),(1,1,1,1)。
程序清单:
var
dp: array[ ⑹..10001]of longint;
a: array[1..10] of longint;
i, j, x, m:longint;
begin
read(m);
for i := 1 to m do read(a[i]);
⑺;
fillchar(dp,sizeof(dp), 0);
dp[0] := ⑻;
for i := 1 to m do
for j := 0 to x do
begin
if ⑼ then break;
if dp[j] = 0 then ⑽;
dp[j+a[i]] := dp[j+a[i]]+ ⑾;
end;
writeln(dp[x]);
end.
程序填空 答案
【1】 eof
【2】 x*10
【3】 flag:=true
【4】 writeln(t,' ',x)
【5】 flag:=false
【6】 0
【7】 readln(x)
【8】 1
【9】 j+a[i]>x
【10】 continue
【11】 dp[j]
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯