回 帖 发 新 帖 刷新版面

主题:这个判断小数位数的程序错在什么地方呢?

新近在教学生时要求学生编一道求小数位数的程序, 一位学生编程如下:
var i:real;
    j:integer;
begin
  readln(i);
  repeat
    i:=i*10;
    j:=j+1;
    until i=trunc(i);
  writeln(j);
end.

输入:
   23.234
输出:
   3           ----->正确

输入:
    7.98
输出:
    15     正确的结果应为2.


请教各位大虾,问题出在什么地方.   是否是I实数有误差???

回复列表 (共7个回复)

沙发

var a:char;
b:string;
i,k:integer;
begin
read(a);
while a<>'.' do
begin
read(a);
end;
readln(b);
i:=length(b);
writeln(i);
readln;
end.

板凳

楼上大虾, 你的程序确实可以解决求小数位数问题, 关键在于没有给我的学生的错误程序开出好药方

3 楼

晕了
你的程序
什么数字都不出错
唯独*.98一直出错
相信你的学生用的是Int()函数{即虽然是求整但其依然是real}
结果为11
我也不是大虾
没办法了

4 楼

是不是,你把函数打错了,你的学生原来是函数是ROUND。

5 楼

你每次运行有没有初始化啊……

6 楼

这个程序应该没有什么错误,可以求出小数位数.

7 楼

零开头也会出错

我来回复

您尚未登录,请登录后再回复。点此登录或注册