学校のC言語の講義で、「100人以下の不特定の人数の生徒の学籍番号、英語・数学・国語の得点を読みこんで、読み込んだ順に各人のデータを、さらに、各科目と総得点に関する平均と標準偏差を出力するCプログラムを作成せよ」という課題が出され、そのCプログラムを作成しました。
プログラムは以下の通りです。大変長いプログラムで申し訳ありません。
#include<stdio.h>
#include<string.h>
typedef struct {
  char id[6];
  int Eng,Math,Jap;
  double Total,Ave,Dev;
} Student;
int main(void)
{
  Student student[101],temp;
  int     num,scanf_val,k,i;
  for(num=0; num<101;){
    scanf_val = scanf("%5s %d",&student[num].id,&student[num].Eng,&student[num].Math,&student[num].Jap,&student[num].Total,&student[num].Ave,&student[num].Dev);
    if(scanf_val == 2)
      num++;
    else if(scanf_val == EOF)
      break;
    else{
      printf("Warning:Illegal data appears.(%d-th data)\n",num);
      break;
    }
  }
  if(num == 101){
    printf("Warning:There are 101 or more students.\n"
           "        ==> We process first 101 students.");
  }
  Total = 0;
  for(k=0; k<num; ++k){
    scanf("%lf",&student[k]);
    Total = (student[k].Eng + student[k].Math + student[k].Jap);
  }
  Ave = 0.0;
  for(k=0; k<num; ++k){
    scanf("%lf",&student[k]);
    Ave += student[k];
  }
  Ave /= 100.0;
  Dev = 0.0;
  for(k=0; k<num; ++k){
    Dev += (student[k]-Ave)*(student[k]-Ave);
  }
  Dev /=100.0;
  printf("Id-No   Eng  Math   Jap   Total\n"
         "-----  ----  ----  ----   -----\n");
         for(k=0; k<num; k++)
           printf("55s   %3d\n",student[k].id,student[k].Eng,student[k].Math,student[k].Jap,Total);
  printf("-------------------------------\n"
         "  Ave = %4.4g\n"
         "  Dev = %3.3g\n");
  return 0;
}
7行目で定義しているつもりなのですが、これでは定義されたことにならないのでしょうか?
Total、Ave、Devが定義されていないというエラーが出る理由や、どう直すべきかを教えて頂けると、非常に助かります。
どうか宜しくお願い致します。