本草铺网上中药店被骗:PASCAL编程二题

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 09:58:24
1.已知一张纸,其厚度为0.1毫米,把它沿着长的方向对半折一次厚度增加1倍,现在反复对折纸张,直到厚度超过珠穆朗玛峰的高度为止(珠穆朗玛峰的高度为8848.13米),这时对半折纸张的次数为27次,且此时这张纸的宽度为X。现给出X,编写程序求原来纸张的长度(保留两位小数)。
输入样例1:
1.0
输出样例1:(格式:writeln(x:0:2) 0表示总长度不受限制)
134217728.00
2.五位数4D97D能被3整除,他的最末两位数组成的7D又能被6整除,这个五位数是多少?

第一题:分析可得,其实只是将最后的宽度x*2^27次方即可。
var x,ans:real;
i:integer;
begin
writeln('please input a number(like 1.0):');
readln(x);
ans:=x;
for i:=1 to 27 do
begin
ans:=ans*2;
end;
writeln('That is from ',ans:0:2);
end.
第二题:用一个循环D,从0变到9,尝试每一种可能(最多也就10种)。
考虑到4D97D超出integer的范围,将d,num定义为长整形longint;
var d,num:longint;
begin
for d:=0 to 9 do
begin
num:=40000+d*1000+970+d;
if (num mod 3=0)and((70+d)mod 6=0) then write(num:7);
end;
end.

第2题比较简单,我来回答。
你用一个FOR 语句。
FOR D = 0 to 9

if (4*10000+D*1000+9*100+7*10+D) mod 3=0
and (70+d) mod 6=0 then writeln(4*10000+D*1000+9*100+7*10+D);
第一题不想看了,太累

PASCAL有点忘了。
basic可以如下:
dim d as single
d=0.1
do
d=d*2
if d>8848.13 then exit do
loop
d=int(d*100+0.5)/100
print d