编译后为什么会函数会类型矛盾呢?
#include <stdio.h>
#include <string.h>
#define N 10
void set_grade(struct student*);
struct student
{
int num;
char name[10],rate;
double score;
}stu[N];
int main(void)
{
int i,count=0;
printf("请输入学生的信息:");
for(i=0;i<N;i++)
{
scanf("%d",&stu[i].num);
scanf("%s",stu[i].name);
scanf("%lf",&stu[i].score);
set_grade(stu+i);
if(stu[i].rate=='D')
count++;
}
printf("The count (<60):%d\n",count);
printf("The student grade:\n");
for(i=0;i<N;i++)
{
printf("%d %s %c\n",stu[i].num,stu[i].name,stu[i].rate);
}
}
void set_grade(struct student*p)
{
if(p->score<=100&&p->score>=85)
p->rate='A';
if(p->score<=84&&p->score>=70)
p->rate='B';
if(p->score<=69&&p->score>=60)
p->rate='C';
if(p->score<=59&&p->score>=0)
p->rate='D';
}

#include <stdio.h>
#include <string.h>
#define N 10
void set_grade(struct student*);
struct student
{
int num;
char name[10],rate;
double score;
}stu[N];
int main(void)
{
int i,count=0;
printf("请输入学生的信息:");
for(i=0;i<N;i++)
{
scanf("%d",&stu[i].num);
scanf("%s",stu[i].name);
scanf("%lf",&stu[i].score);
set_grade(stu+i);
if(stu[i].rate=='D')
count++;
}
printf("The count (<60):%d\n",count);
printf("The student grade:\n");
for(i=0;i<N;i++)
{
printf("%d %s %c\n",stu[i].num,stu[i].name,stu[i].rate);
}
}
void set_grade(struct student*p)
{
if(p->score<=100&&p->score>=85)
p->rate='A';
if(p->score<=84&&p->score>=70)
p->rate='B';
if(p->score<=69&&p->score>=60)
p->rate='C';
if(p->score<=59&&p->score>=0)
p->rate='D';
}


