回 帖 发 新 帖 刷新版面

主题:各位帮我看看哪错了..

到输入那里,输入第一次就退出了....


  type
    alfa=packed array [1..15] of char;
    student=record
              name:alfa;
              num:integer;
              sex:(male,female);
              age:6..50;
              score:real;
            end;
    studenta=array [1..10] of student;
  var
    students:studenta;
    i,mp,fp:integer;
    se:char;
    avea,aves:real;
  begin
    writeln('输入学号,性别,年龄,成绩,姓名');
    for i:=1 to 10 do
      with students[i] do
        begin
          readln(num,se,age,score,name);
          if se='m'
             then begin
                    sex:=male;
                    mp:=mp+1;
                   end
             else begin
                    sex:=female;
                    fp:=fp+1;
                   end;  {if}
          avea:=avea+score;
          aves:=aves+age;
        end;  {with}{for}

回复列表 (共6个回复)

沙发

最好把题目输入进去,那样才好看程序

板凳

你的题目应该是:
输入10个学生的信息(包括学号,性别,年龄,成绩,姓名),输出:
(1)这10个学生中两种性别的各有多少人。{mp、fp}
(2)他们的成绩总和。{avea}
(3)他们的年龄总和。{aves}
(这里搞不懂了,你要求他们的年龄总和干什么?没意义!)

错误的原因可能是你少写了一个end;。

3 楼

这只是程序的一段,后面有求平均年龄.
如果少了end,编译的时候会报错吧?
可以编译成功,可以执行
可是
本应该是循环10次输入10个学生的信息,现在输入一次就直接退出了.

4 楼

题目和Matodied说的差不多.

5 楼

你在输入的时候不能把数字和字符串一起输入。还有你的alfa不能是数组。

6 楼


问题找到了....... 
for i:=1 to 10 do
      with students[i] do
        begin
          [color=FF0000]readln(num,se,age,score,name);[/color]


红色这句改成
          readln(se,num,age,score,name);
就可以了...

为什么这样换个位置就可以了?
奇怪...

我来回复

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