program latihan;
uses crt;
var
a,b,c:integer;
d:real;
begin
write('a: ');
readln(a);
write('b: ');
readln(b);
c:=a+b;
d:=a+b;
sqr(c);
writeln(c);
sqrt(d);
writeln(d:0:0);
end.
为什么代码中有非法表达式
sqrt(d)
??
解释为什么
sqrt(d)
代码中可能存在非法表达式以及如何修复它?
Pascal 中的 sqrt() 函数仅适用于整数类型,而 d 是实数类型。因此,尝试将实际值传递给 sqrt() 会导致非法表达式错误。
要解决此问题,您需要使用支持实数的不同平方根函数,例如:
uses Math;
//...
sqrt(d);
或者,您可以在使用 sqrt() 之前先将 d 转换为整数:
c := trunc(d);
sqrt(c);
sqrt() 返回一个扩展值,要接收结果,您需要将其分配给变量,与 sqr() 相同,
...
c := sqr(c);
writeln(c);
d := sqrt(d);
writeln(d);
...
最后一行无效 也许你想写:
writeln(d,0,0);