请帮小弟我看看这个结构体程序,为什么输入一直不终止

请帮我看看这个结构体程序,为什么输入一直不终止?
下面这个结构体程序是想用结构体指针及函数数组来达到输入及输出的目的,但是在输入时就不能终止,一直是输入状态,不知为什么?

#include "stdafx.h"
#include "stdio.h"

#define CSIZE 2
#define NUM 3

struct student
{
float grade[NUM];
float average;
};

void Getstudent(struct student *p, int m ,int n);
void Average(struct student *p , int m, int n);

int main(void)
{
struct student classone[CSIZE];
void (*pfun[CSIZE]) (struct student *, int  ,int )= {Getstudent, Average};

pfun[0](classone, CSIZE, NUM);
pfun[1](classone, CSIZE, NUM);

return 0;
}

void Getstudent(struct student *p, int m ,int n)
{
int i, j;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
scanf("%f", &p[i].grade[j]);
rewind(stdin);
}
}
printf("\n");
}

void Average(struct student *p , int m, int n)
{
int i, j;
float total;
for(i=0; i<m; i++)
{
total = 0;
for(j=0; j<n; j++)
{
total = total + p[i].grade[j];
}
p[i].average = total/n;
printf("%f\n", p[i].average);
}

printf("\n");
}

------解决方案--------------------
你输入6个float类型的数后,不能出来结果? 编译器还是输入状态?

------解决方案--------------------
没有问题。下面是输入和输出过程:
1
2
3
4
5
6

2.000000
5.000000

------解决方案--------------------
感觉没有错啊请帮小弟我看看这个结构体程序,为什么输入一直不终止
------解决方案--------------------

rewind(stdin);

你是一行输入多个数,回车一次啊,它拾取第一个数后,后面的就会被刷掉,我估计是,你注释掉这句看看行不行?