请帮忙做一下几个题目

worddelphi 2011-02-16 12:22:14
1,把一张一元钞票换一分、二分、五分的硬币(每种至少一枚),把这些换法列入stringgrid。

2,输入三位字符,倒序输出。 比如输入ACE,输出为ECA。

3,对于所有的数字不完全相同的四位数(不够四位数的前面补零也当成是四位数)。我们定出如下计算规则:用这个四位数的四个数字可组成的最大数减去可组成的最小数,则得到一个新的四位数;对新的四位数还按照上面的规则继续算下去,最后会发现,我们陷入一个死循环里,或者说是跌入了一个数的黑洞里。用具体例子说明。比如从四位数1234开始,计算如下4321-1234=3087;8730-378=8352;8532-2358=6174;7641-1467=6174;…. 从其他的任何四位数开始,最终也都会停止在6174,我们把6174叫做四位数的黑洞。类似地也存在着一个由一个数组成的三位数的黑洞。请编程序把它找出来。
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yothan 2011-02-16
  • 打赏
  • 举报
回复
做了下第三题,使用冒泡排序+递归, 得出的数字是495:

procedure TForm1.btn2Click(Sender: TObject);
var
iSelf: string;
i,iInt1, iMin, iMax, iResult: Integer;
procedure GetMinMax(vInt: string; out iMin, iMax: Integer);
var
temp: Char;
sMin, sMax: string;
i, j: Integer;
begin
sMin := vInt;
sMax := sMin;
for i := Length(vInt) - 1 downto 1 do
for j := 1 to i do
begin
if sMin[j] > sMin[j + 1] then
begin
temp := sMin[j];
sMin[j] := sMin[j + 1];
sMin[J + 1] := temp;
end;
if sMax[j] < sMax[j + 1] then
begin
temp := sMax[j];
sMax[j] := smax[j + 1];
sMax[j + 1] := temp;
end;
end;
iMin := StrToInt(sMin);
iMax := StrToInt(sMax);
end;
begin
Randomize;
i := 0;
while i < 3 do
begin
iSelf := iSelf + IntToStr(Random(9));
Inc(i);
end;
iSelf := IntToStr(StrToInt(iSelf)); //随机产生的三位数
GetMinMax(iSelf, iMin, iMax);
iResult := 0;
while StrToInt(iSelf) <> iResult do
begin
if StrToInt(iSelf) <> iResult then
iResult := StrToInt(iSelf);
GetMinMax(iSelf, iMin, imax);
iSelf := IntToStr(iMax - iMin);
end;
ShowMessage(iSelf);
end;

bdmh 2011-02-16
  • 打赏
  • 举报
回复
1.每个至少一个,所以你要分配的是97分吗,自己for循环组合也该会了吧
2.倒叙,delphi本3身就提供了字符串反转函数ReverseString
3.就四个数,你放的数组中,做个排序(算法到处都是),降序,和升序就会分别得到两个数字,自己类推吧
worddelphi 2011-02-16
  • 打赏
  • 举报
回复
怎么都没有人说话啊,

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧