```c
//结构体
#include<stdio.h>
struct student{
char id[99];
char name[99];
int x;
int y;
int z;
float average;
}a[99];
float average(struct student ,int n ){
for(int i=0;i<n;i++){
a[i].average=(a[i].x+a[i].y+a[i].z)/3.0;
}
}
int main(){
int i,n;
float aver;
struct student a[99];
scanf("%d",&n);//输入学生个数
for(i=0;i<n;i++){
scanf("%s",a[i].id);
scanf("%s",a[i].name);
scanf("%d",&a[i].x);
scanf("%d",&a[i].y);
scanf("%d",&a[i].z);
}
for(i=0;i<n;i++){
printf("%s",a[i].id);
printf("%s",a[i].name);
printf("%d",a[i].x);
printf("%d",a[i].y);
printf("%d",a[i].z);
}
aver=average(student,n);//显示这里错误
printf("%f",aver);
return 0;
}
```
首先你average传参第一个参数不对 你要传的是数组
第二你这没有返回值aver是个随机数(看你的逻辑不需要这个aver吧)
按照你结构体的定义这个average函数不需要返回值
#include<stdio.h>
struct student{
char id[99];
char name[99];
int x;
int y;
int z;
float average;
}a[99];
void average(struct student *a,int n ){
for(int i=0;i<n;i++){
a[i].average=(a[i].x+a[i].y+a[i].z)/3.0;
}
}
int main(){
int i,n;
struct student a[99];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s",a[i].id);
scanf("%s",a[i].name);
scanf("%d",&a[i].x);
scanf("%d",&a[i].y);
scanf("%d",&a[i].z);
}
for(i=0;i<n;i++){
printf("%s\t",a[i].id);
printf("%s\t",a[i].name);
printf("%d\t",a[i].x);
printf("%d\t",a[i].y);
printf("%d\n",a[i].z);
}
average(a,n);
for(i=0;i<n;i++){
printf("%f\n",a[i].average);
}
return 0;
}
代码给你改了一下 你品品 有帮助的话 采纳一下
已经定义全局变量a[99]了,代码中就不要再定义其它学生信息数组了
student只是一个结构类型,又不是变量,肯定不能用来传递给函数作为参数,函数参数用student也是错误的
//结构体
#include<stdio.h>
struct student{
char id[99];
char name[99];
int x;
int y;
int z;
float average;
}a[99];
float average(int n ){
for(int i=0;i<n;i++){
a[i].average=(a[i].x+a[i].y+a[i].z)/3.0;
}
}
int main(){
int i,n;
float aver;
scanf("%d",&n);//输入学生个数
for(i=0;i<n;i++){
scanf("%s",a[i].id);
scanf("%s",a[i].name);
scanf("%d",&a[i].x);
scanf("%d",&a[i].y);
scanf("%d",&a[i].z);
}
for(i=0;i<n;i++){
printf("%s ",a[i].id);
printf("%s ",a[i].name);
printf("%d ",a[i].x);
printf("%d ",a[i].y);
printf("%d\n",a[i].z);
、
}
aver=average(n);
printf("%f",aver);
return 0;
}
请问那个那个*a是什么意思