在写C语言结构体时,程序编译出现以下问题,请求帮助
#include<stdio.h>structStudent//作用范围为整个文件{intnum;charname[20];intscore[3];doubleavera...
#include<stdio.h>
struct Student //作用范围为整个文件
{
int num;
char name[20];
int score[3];
double avera;
};
void main()
{
void input(struct Student stu[]);
void average(struct Student stu[]);
int max(struct Student stu[]);
int maxi;
struct Student
{
int num;
char name[20];
int score[3];
int avera;
};
struct Student student[10],* p=student;
input(p);
maxi=max(p);
printf("%d",maxi);
}
void input(struct Student stu[])
{
int i;
printf("请按提示输入学生信息");
for(i=0;i<10;i++)
{
printf("请输入学号:");
scanf("%d",&stu[i].num);
printf("请输入学生姓名:");
scanf("%s",stu[i].name);
printf("请输入3门课程的成绩");
scanf("%d %d %d",&stu[i].score[1],&stu[i].score[2],&stu[i].score[1]);
stu[i].avera= (stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3.0;
}
}
void average(struct Student stu[])
{
int i;
for(i=0;i<10;i++)
stu[i].avera= (stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3.0;
}
int max(struct Student stu[])
{
int k,sum[10],i,max;
k=0;
max=0;
for(i=0;i<10;i++)
{
sum[i]=stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
if(sum[i]>max)
{
max=sum[i];
k=i;
}
}
return k;
}
出现以下问题:
Compiling...
11.c
F:\C语言\Debug\11.c(23) : warning C4133: 'function' : incompatible types - from 'struct Student *' to 'struct Student *'
F:\C语言\Debug\11.c(24) : warning C4133: 'function' : incompatible types - from 'struct Student *' to 'struct Student *'
11.obj - 0 error(s), 2 warning(s) 展开
struct Student //作用范围为整个文件
{
int num;
char name[20];
int score[3];
double avera;
};
void main()
{
void input(struct Student stu[]);
void average(struct Student stu[]);
int max(struct Student stu[]);
int maxi;
struct Student
{
int num;
char name[20];
int score[3];
int avera;
};
struct Student student[10],* p=student;
input(p);
maxi=max(p);
printf("%d",maxi);
}
void input(struct Student stu[])
{
int i;
printf("请按提示输入学生信息");
for(i=0;i<10;i++)
{
printf("请输入学号:");
scanf("%d",&stu[i].num);
printf("请输入学生姓名:");
scanf("%s",stu[i].name);
printf("请输入3门课程的成绩");
scanf("%d %d %d",&stu[i].score[1],&stu[i].score[2],&stu[i].score[1]);
stu[i].avera= (stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3.0;
}
}
void average(struct Student stu[])
{
int i;
for(i=0;i<10;i++)
stu[i].avera= (stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3.0;
}
int max(struct Student stu[])
{
int k,sum[10],i,max;
k=0;
max=0;
for(i=0;i<10;i++)
{
sum[i]=stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
if(sum[i]>max)
{
max=sum[i];
k=i;
}
}
return k;
}
出现以下问题:
Compiling...
11.c
F:\C语言\Debug\11.c(23) : warning C4133: 'function' : incompatible types - from 'struct Student *' to 'struct Student *'
F:\C语言\Debug\11.c(24) : warning C4133: 'function' : incompatible types - from 'struct Student *' to 'struct Student *'
11.obj - 0 error(s), 2 warning(s) 展开
2个回答
展开全部
在主函数中调用input(p);maxi=max(p);这两个函数的时候,使用的参数是指针p,而在函数实现的时候的参数是结构体型的数组,所以出现警告参数不匹配。而且结构体定义两遍,你在主函数里面定义结构体在外部函数里面是无法使用的,就会出现主函数里面使用的结构体变量和外部函数使用的结构体变量调用不同。
建议都使用结构体型的数组,这个程序里面你使用的指针没有任何意义,反而会引起不必要的麻烦。假如你的结构体数组中学生的数量不确定,建议使用指针链表,这个时候指针就很有意义。
建议都使用结构体型的数组,这个程序里面你使用的指针没有任何意义,反而会引起不必要的麻烦。假如你的结构体数组中学生的数量不确定,建议使用指针链表,这个时候指针就很有意义。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询