Pascal 函数刚学一天 作业出现问题
输入a,b,c输出mm=max(a,b,c)/(max(a+b,b,c)*max(a,b,b+c))下面是我做的好拙好拙不好意思呃……programhanshu;vara...
输入a,b,c
输出m m=max(a,b,c)/(max(a+b,b,c)*max(a,b,b+c))
下面是我做的 好拙好拙 不好意思呃……
program hanshu;
var a,b,c,m:real;
function max(x,y,z:real):real;
var i,t:real;
begin
if x<y then begin t:=x;x:=y;y:=t;end;
if x<z then begin t:=x;x:=z;z:=t;end;
i:=x;
end;
begin
read(a,b,c);
m:=max(a,b,c)/(max(a+b,b,c)*max(a,b,b+c));
writeln(m:10:4);
readln;
end.
可能基础还都没掌握,毕竟只学了一节课,见谅啊~~~
帮忙了 鞠躬! 展开
输出m m=max(a,b,c)/(max(a+b,b,c)*max(a,b,b+c))
下面是我做的 好拙好拙 不好意思呃……
program hanshu;
var a,b,c,m:real;
function max(x,y,z:real):real;
var i,t:real;
begin
if x<y then begin t:=x;x:=y;y:=t;end;
if x<z then begin t:=x;x:=z;z:=t;end;
i:=x;
end;
begin
read(a,b,c);
m:=max(a,b,c)/(max(a+b,b,c)*max(a,b,b+c));
writeln(m:10:4);
readln;
end.
可能基础还都没掌握,毕竟只学了一节课,见谅啊~~~
帮忙了 鞠躬! 展开
展开全部
看来是你对pascal中函数使用上的失误导致不能返回正确的结果。
pascal里的function可以带回一个返回值,这个返回值保存在result里(对比,C语言中用关键词return来返回)。
比如下面这个函数,它总会返回1:
function foo:integer;
begin
result:=1;
end;
当你调用foo的时候,它会带个1回来。比如,你可以在主程序里可以这样写:
var
i:integer;
.....
i:=foo;
这样,foo的返回值1就赋给了i。
也可以这样
if(foo=1) then ....;
这个条件分支的结果恒为真。
背景知识到此为止。
再来看看你的函数。
function max(x,y,z:real):real;
var i,t:real;
begin
if x<y then begin t:=x;x:=y;y:=t;end;
if x<z then begin t:=x;x:=z;z:=t;end;
i:=x;
end;
我猜想你的本意是用i来保存最大值。两次交换之后,x被换成了最大的数,然后将x的值赋给i,这样i就是x,y,z当中的最大值。可是就像我之前说的,function只会把result的值带回去,它并不知道你希望它把i带回去。所以主程序中得不到正确的结果。
另外,这里其实并不需要对x,y,z进行交换。只需要把最大的值保存下来即可。
所以,对函数进行修改如下:
function max(x,y,z:real):real;
var
max:real; {用max暂存最大值}
begin
max:=x; {先认为x是最大的}
if max<y then max:=y; {y比max大吗?是的话,将y赋给max,这时候max=max(x,y)}
if max<z then max:=z; {z比max大吗?是的话,将z赋给max,这时候max=max(z,max(x,y))}
result:=max; {已经得到最大值,将max带回去}
end;
完毕。
PS:下次提问时记得把问题现象说清楚,不然不好定位问题所在。
再PS:你的学习进度够慢的了。。。。
示例代码:delphi7下编译运行通过。
program hanshu;
var a,b,c,m:real;
function max(x,y,z:real):real;
var
max:real;
begin
max:=x;
if max<y then max:=y;
if max<z then max:=z;
result:=max;
end;
begin
read(a,b,c);
m:=max(a,b,c)/(max(a+b,b,c)*max(a,b,b+c));
writeln(m:10:4);
readln;
end.
pascal里的function可以带回一个返回值,这个返回值保存在result里(对比,C语言中用关键词return来返回)。
比如下面这个函数,它总会返回1:
function foo:integer;
begin
result:=1;
end;
当你调用foo的时候,它会带个1回来。比如,你可以在主程序里可以这样写:
var
i:integer;
.....
i:=foo;
这样,foo的返回值1就赋给了i。
也可以这样
if(foo=1) then ....;
这个条件分支的结果恒为真。
背景知识到此为止。
再来看看你的函数。
function max(x,y,z:real):real;
var i,t:real;
begin
if x<y then begin t:=x;x:=y;y:=t;end;
if x<z then begin t:=x;x:=z;z:=t;end;
i:=x;
end;
我猜想你的本意是用i来保存最大值。两次交换之后,x被换成了最大的数,然后将x的值赋给i,这样i就是x,y,z当中的最大值。可是就像我之前说的,function只会把result的值带回去,它并不知道你希望它把i带回去。所以主程序中得不到正确的结果。
另外,这里其实并不需要对x,y,z进行交换。只需要把最大的值保存下来即可。
所以,对函数进行修改如下:
function max(x,y,z:real):real;
var
max:real; {用max暂存最大值}
begin
max:=x; {先认为x是最大的}
if max<y then max:=y; {y比max大吗?是的话,将y赋给max,这时候max=max(x,y)}
if max<z then max:=z; {z比max大吗?是的话,将z赋给max,这时候max=max(z,max(x,y))}
result:=max; {已经得到最大值,将max带回去}
end;
完毕。
PS:下次提问时记得把问题现象说清楚,不然不好定位问题所在。
再PS:你的学习进度够慢的了。。。。
示例代码:delphi7下编译运行通过。
program hanshu;
var a,b,c,m:real;
function max(x,y,z:real):real;
var
max:real;
begin
max:=x;
if max<y then max:=y;
if max<z then max:=z;
result:=max;
end;
begin
read(a,b,c);
m:=max(a,b,c)/(max(a+b,b,c)*max(a,b,b+c));
writeln(m:10:4);
readln;
end.
泰科博思
2024-12-27 广告
2024-12-27 广告
CASTEP是一款基于第一性原理计算方法的材料模拟软件,其优势包括:1.高精度。CASTEP使用密度泛函理论(DFT)进行第一性原理计算。这种基于波函数的方法不依赖于实验数据,可以获得非常高的准确性。2.广泛适用性。CASTEP适用于多种材...
点击进入详情页
本回答由泰科博思提供
展开全部
pascal 程序结构就是这么规定的。
主程序就是program里的begin....end所包含的程序指令。
为了执行这些指令,必须在begin....end之前定义各种变量、函数、过程。
如:
program xxx;
var ... 这是变量说明部分
function ...
var ...
begin
.... 这是函数定义部分
end;
procedure ...
var ...
begin
..... 这是子过程定义部分
end;
begin
......... 最后这个才是主程序真正的执行部分
end.
你可以把program abc理解成一个大容器,包含所有变量、函数、过程的定义以及最后要执行的主程序指令,由于变量、函数、过程都要“先定义后使用”,所以他们的位置一定在前,主程序的执行部分一定在最后。
主程序就是program里的begin....end所包含的程序指令。
为了执行这些指令,必须在begin....end之前定义各种变量、函数、过程。
如:
program xxx;
var ... 这是变量说明部分
function ...
var ...
begin
.... 这是函数定义部分
end;
procedure ...
var ...
begin
..... 这是子过程定义部分
end;
begin
......... 最后这个才是主程序真正的执行部分
end.
你可以把program abc理解成一个大容器,包含所有变量、函数、过程的定义以及最后要执行的主程序指令,由于变量、函数、过程都要“先定义后使用”,所以他们的位置一定在前,主程序的执行部分一定在最后。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询