pascal高手看,我哪错了?

来源:百度知道 编辑:UC知道 时间:2024/06/05 15:01:56
⒈题目是:输入10个数,计算它们的和,积、平方的和 及 和的平方。
我遍的:
program dsa;
var
x,y,z,he,ji,phe,hep:integer;
begin
he:=0;
ji:=1;
phe:=0;
hep:=0;
for y:=1 to 10 do
begin
readln(x);
he:=he+x;
ji:=ji*x;
phe:=phe+x*x;
hep:=he*he;
end;
writeln('he=',he,' ','ji=',ji,' ','phe=',phe,' ','hep=',hep);
end.

结果是积不多。请大家说说。

⒉ 计算1!,2!,3!,……35!(利用递推,一次循环解决)
我遍的:
program das;
var
i,x:integer;
begin
x:=1;
for i:=1 to 35 do
begin
x:=x*i;
writeln(i,'!=',x);
end;
end.

输出不对。看看……

⒋计算2的N次方,2的-N次方。(N=0,1,2,3,4,……15)
我遍的:
program ds;
var
n,x,y:integer;
a:real;
begin
y:=2;
for n:=1 to 15 do
for x:=n downto 1 do
begin
y:=x*y;

1.integer---->longint; 因为范围不同,longint大些
2.integer范围太小,建议用高精度;
4.integer范围太小,建议用高精度
总结:integer范围太小(-6万~6万),建议用高精度或longint(至少12位)
具体可以百度一下

1、可能是积太大了,你把x,y,z,he,ji,phe,hep:integer;
改成x,y,z,he,ji,phe,hep:longint;
2、改成这样:
program das;
var
i:integer;
function jiecheng(xx:integer):longint;
var a,j:integer;
begin
a:=1;
for j:=2 to xx do
a:=a*j;
jiecheng:=a;
end;
begin
for i:=1 to 35 do
writeln(i,'!=',jiecheng(i));
end.
4.
var n,a,b,j:integer;
begin
readln(n);
a:=1;
b:=1;
for j:=1 to n do
begin
a:=a*2;
b:=b/2;
end;
writeln('2n=',a,' 2-n=',b);
end.