谁能看一下这个结构体的错误在那儿?急,谢谢。
建立一结构体,其中包括学生的姓名、性别、年龄和一门课程的成绩。建立的结构体数组通过输入存放全班(最多45人)学生信息,输出考分最高的学生的姓名、年龄、性别和课程的成绩。#include<stdio.h>
struct message
{
char s[45];
char ch[45];
int old[45];
double mark[45];
};
typedef struct message mes;
void input(mes *a,int n);
int max(mes *b,int n);
int main()
{
mes std;
int max_number;
int n;
printf("请输入学生人数:");
scanf("%d",&n);
input(&std,n);
max_number=max(&std,n);
printf("%d\n",max_number);
printf("Name Sex Age score\n");
printf("%s %c %d %lf\n",std.s[max_number],std.ch[max_number],std.old[max_number],std.mark[max_number]);
}
void input(mes *a,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("请输入第%d个学生的姓名:",i+1);
scanf(" %s",&((*a).s[i]));
printf("请输入第%d个学生的性别(F or M):",i+1);
scanf(" %ch",&((*a).ch[i]));
printf("请输入第%d个学生的年龄:",i+1);
scanf("%d",&((*a).old[i]));
printf("请输入第%d个学生的成绩:",i+1);
scanf("%lf",&((*a).mark[i]));
getchar();
}
}
int max( mes *b,int n)
{
int i,j;
double maxmark=b->mark[0];
for(i=0;i<n;i++)
{
if(maxmark<b->mark[i])
maxmark=b->mark[i];
}
for(j=0;j<n;j++)
{
if(maxmark==b->mark[j])
{return j;}
}
}