回 帖 发 新 帖 刷新版面

主题:请大家来帮忙啊,谢谢啊!

[font=楷体_GB2312][/font][size=2][/size][color=0000FF][/color]
  我用pascal编了个将班级信息存盘的程序,可是,当输入完第一个学生的信息后,一按回车,它就显示溢出(overflow),请大家帮忙解决一下啊!谢谢!

回复列表 (共10个回复)

沙发

把你的程序贴出来下

板凳

就是这个了,请帮忙修改一下啊,谢谢!

PROGRAM stulist;
  TYPE stu=RECORD
       number:integer;
       name:string;
       age:string;
       sex:string;
    END;
       clst=RECORD
       cslst:ARRAY[1..30] OF stu;
       last:1..30;
    END;
  PROCEDURE inclass(VAR BB:clst);
    VAR x,i:integer;
    BEGIN
      REPEAT
        writeln('please input number');
        readln(x);
        IF x<>0
          THEN
            BEGIN
              BB.cslst[i].number:=x;
              writeln('please input name');
              readln(BB.cslst[i].name);
              BB.cslst[i].name:=BB.cslst[i].name;
              writeln('please input age');
              readln(BB.cslst[i].age);
              BB.cslst[i].age:=BB.cslst[i].age;
              writeln('please input sex');
              readln(BB.cslst[i].sex);
              BB.cslst[i].sex:=BB.cslst[i].sex
            END;
        i:=i+1
      UNTIL (x=0) OR (i>30);
      BB.last:=i-1
    END;
  PROCEDURE outclass(BB:clst);
    VAR i:integer;
    BEGIN
      FOR i:=1 TO BB.last DO
        BEGIN
          writeln(BB.cslst[i].number);
          writeln(BB.cslst[i].name);
          writeln(BB.cslst[i].age);
          writeln(BB.cslst[i].sex)
        END
    END;
  VAR
    JB032:clst;
    fp:FILE;
    m,n:integer;
  BEGIN
    inclass(JB032);
    outclass(JB032);
    ASSIGN(fp,'c:\tp\bin\myworks\JB032.DAT');
    rewrite(fp,sizeof (JB032));
    blockwrite(fp,JB032,1,n);
    IF n=0
      THEN writeln('no this number')
      ELSE close(fp);
    writeln('please input any letter,the program exits');
    readln(m)
  END.

3 楼

高手请进来帮忙看看啊,谢谢啊!

4 楼

1、把inclass过程的以下句子删掉:
BB.cslst[i].name:=BB.cslst[i].name;
BB.cslst[i].age:=BB.cslst[i].age;
BB.cslst[i].sex:=BB.cslst[i].sex

2、把主程序中的
ASSIGN(fp,'c:\tp\bin\myworks\JB032.DAT');
改为
ASSIGN(fp,'JB032.DAT');

3、你的程序中,输入的学生编号只能是小于32767的整数,如果要大于32767,可考虑把程序中所有的integer都改为longint。

5 楼

谢谢,我还想问一下,如果改为 ASSIGN(fp,'JB032.DAT');  那么最后存盘时,会将信息存在什么地方啊?

6 楼

你编译后的exe文件在什么地方,它就在什么地方。

7 楼

好,我再去试一下,谢谢你啊!

8 楼

不用谢!有问题就应当互相帮助!

9 楼

我已经找到原因了,是在inclass的过程中,i没有赋初值,可是,改后还是有问题,就是当输完所有的学生的信息后,按0退出时,就又出错了,还请大家再帮忙看看,谢谢啊![em2]

10 楼

我的问题已经解决了,谢谢大家的帮助!!!

我来回复

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