作业帮 > 综合 > 作业

谁能帮我用Pascal解几道题目?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/04 19:01:53
谁能帮我用Pascal解几道题目?
1、窗框设计:

用总长为600厘米的木条,作成如下图所示的矩形窗框(包括中间两根档条),问窗框的长宽尺寸如何设计,才能使窗户的采光面积最大.编程打印输出采光面积最大的长和宽.长和宽都为整数厘米,第一行打印输出长,第二行打印输出宽以及面积.
 
2、部落人乘法
据说原始部落人以小石子作为计算工具,用减半和倍加运算就能求得任何两个整数的乘积(注意当然不能用乘号*运算).例如求13与15乘积的过程是: 
             13   15
             6    30
             3    60
             1    120
    规则是:左边不断除2,写下商,舍去余数,右边不断加倍,直到左边变1为止.取结果的方法是,如果某行左边是偶数,就划去整个这一行,右边剩下的数组相加即可,如上式中舍去与6对应的30,其结果就是:
       13*15=15+60+120=195
请编制一个程序模拟他们的方法求输入两数的乘积,并以上式输出结果.例如:
输入:a,b=13 15
输出:13*15=15+60+120=195
测试数据:  29*68
 
3、While循环应用
有一箱苹果,个数为m个,每次只能拿出里面的二分之一,现想要使箱中苹果等于或最接近h个的苹果,问要拿多少次?期中m,h运行程序时从键盘输入.(提示:如果有拿出半个苹果的情况要求四舍五入)
输入样例:
m,h=5  1
输出样例:
m=5 h= 1 a= 1 n=2
 
4、Repeat循环应用
假设纸的长度足够长,厚度为0.1毫米,对折一次厚度增加1倍,现在对折纸张,直到厚度超过珠穆朗玛峰的高度为止(珠穆朗玛峰的高度为8848.13米),求对折纸张的次数.编写程序解决这个问题.
 
5、For循环应用 
把100元大钞票换成等值的10 元、5元、2元、1元小钞票.要求交换40张小钞票,每种至少一张.编程输出所有可能的换法.程序应适当考虑减少重复次数.

最好是分开发程序和内容,每问一个程序.
2、2、7、0、2、9、8、4、5、7、@、q、q、.、c、o、m
一下子写5个程序,不易呀!
(1.pas)
var a,b,s,a1,max:longint;
begin
for a:=1 to 149 do
begin
b:=300-2*a;
if 2*a+b=300 then
begin
s:=a*b;
if s>max then begin a1:=a; max:=s end;
end;
end;
writeln(300-2*a1);
writeln(a1,' ',a1*(300-2*a1));
end.

(2.pas)
var a,b,s:longint; bg:boolean;
begin
readln(a,b);
write(a,'*',b,'=');
while a>0 do
begin
if odd(a) then
begin
inc(s,b);
if not bg then bg:=true else write('+');
write(b);
end;
a:=a div 2;
b:=b+b;
end;
writeln('=',s);
end.

(3.pas)
var m,h,m1,h1,a,n:longint;
begin
readln(m,h);
write('m=',m,' h=',h,' a=');
while m>h do
begin
m1:=m;
dec(m,(m+1)div 2);
inc(n);
end;
if abs(m-h)88481300;
writeln('n=',n);
end.

(5.pas)
var a,b,c,d,n:integer;
begin
for a:=1 to 6 do
for b:=1 to (100-10*a)div 5 do
for c:=1 to (100-10*a-5*b) div 2 do
begin
d:=100-10*a-5*b-2*c;
if a+b+c+d=40 then
begin
inc(n); writeln(a:3,b:3,c:3,d:3);
if n mod 20=0 then readln
end;
end;
writeln('n=',n);
end.