主题:请大家来帮忙啊,谢谢啊!
lvzhu18
[专家分:90] 发布于 2005-10-15 23:29:00
[font=楷体_GB2312][/font][size=2][/size][color=0000FF][/color]
我用pascal编了个将班级信息存盘的程序,可是,当输入完第一个学生的信息后,一按回车,它就显示溢出(overflow),请大家帮忙解决一下啊!谢谢!
回复列表 (共10个回复)
沙发
KID [专家分:820] 发布于 2005-10-16 09:31:00
把你的程序贴出来下
板凳
lvzhu18 [专家分:90] 发布于 2005-10-16 10:10:00
就是这个了,请帮忙修改一下啊,谢谢!
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 楼
lvzhu18 [专家分:90] 发布于 2005-10-17 13:56:00
高手请进来帮忙看看啊,谢谢啊!
4 楼
阿Ben [专家分:2200] 发布于 2005-10-21 21:40:00
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 楼
lvzhu18 [专家分:90] 发布于 2005-10-22 09:37:00
谢谢,我还想问一下,如果改为 ASSIGN(fp,'JB032.DAT'); 那么最后存盘时,会将信息存在什么地方啊?
6 楼
阿Ben [专家分:2200] 发布于 2005-10-22 16:22:00
你编译后的exe文件在什么地方,它就在什么地方。
7 楼
lvzhu18 [专家分:90] 发布于 2005-10-22 19:12:00
好,我再去试一下,谢谢你啊!
8 楼
阿Ben [专家分:2200] 发布于 2005-10-29 14:57:00
不用谢!有问题就应当互相帮助!
9 楼
lvzhu18 [专家分:90] 发布于 2005-11-03 09:10:00
我已经找到原因了,是在inclass的过程中,i没有赋初值,可是,改后还是有问题,就是当输完所有的学生的信息后,按0退出时,就又出错了,还请大家再帮忙看看,谢谢啊![em2]
10 楼
lvzhu18 [专家分:90] 发布于 2005-11-15 18:36:00
我的问题已经解决了,谢谢大家的帮助!!!
我来回复