#include<stdio.h>
#include<string.h>
typedef struct student
{
int id;
char name[20];
float score[3];
}STUDENT,pstudent;
STUDENT students[50];
void InputStudent(STUDENTs);
STUDENTFindStudent(STUDENT s[],int n_students,int id);
void ShowStudent(STUDENT s);
void main()
{
int i,j,n;
int number;
pstudent s;
s=&students[50];
printf("输入学生数量:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
InputStudent(students+i);
for(j=0;j<3;j++)
{
printf("输入第%d科成绩:",j+1);
scanf("%d",(*s).score);
}
}
for(i=0;i<n;i++)
{
(*s).id=1000+i+1;
}
printf("输入要查找的学生的学号:");
scanf("%d",&number);
s=FindStudent(students,n,number);
if(s!=NULL)
{
ShowStudent(s);
}
else
{
printf("未找到学生\n");
}
ShowStudent(s);
}
void InputStudent(STUDENT*s)
{
printf("输入学生姓名:\n");
scanf("%s",(*s).name);
}
STUDENT *FindStudent(STUDENT s[],int n_students,int id)//返回指向结构体的指针
{
int i;
int *p;
for(i=0;i<n_students;i++)
{
if(strcmp(id,students[i].id)==0)
{
p=&students[i];
return p;
}
}
return NULL;
}
void ShowStudent(STUDENT* s)
{
int i;
if(s!=NULL)
{
printf("%s%d",(*s).name,(*s).id);
for(i=0;i<3;i++)
{
printf("第%d科成绩为:%d",i+1,(*s).score[i+1]);
}
}
else
printf("未找到学生\n");
}
输入学生学号查找并显示该学生信息的功能为什么实现不了,怎么修改
修改了一下,如下,主要是结构数组和指针的用法错误:
#include<stdio.h>
#include<string.h>
typedef struct student
{
int id;
char name[20];
float score[3];
}STUDENT,pstudent;
STUDENT students[50];
void InputStudent(STUDENT* s);
STUDENT * FindStudent(STUDENT s[],int n_students,int id);
void ShowStudent(STUDENT *s);
int main()
{
int i,j,n;
int number;
STUDENT * s;
s=students;
printf("输入学生数量:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
InputStudent(students+i);
for(j=0;j<3;j++)
{
printf("输入第%d科成绩:",j+1);
scanf("%f",&(s[i].score[j]));
}
}
for(i=0;i<n;i++)
{
s[i].id=1000+i+1;
}
// for(i=0;i<n;i++){
// printf("学生学号;%d,学生姓名:%s,",s[i].id,s[i].name);
// for(j=0;j<3;j++){
// printf("第%d科成绩;%f,",j+1,s[i].score[j]);
// }
//
// }
printf("输入要查找的学生的学号:");
scanf("%d",&number);
s=FindStudent(students,n,number);
if(s!=NULL)
{
ShowStudent(s);
}
else
{
printf("未找到学生\n");
}
//ShowStudent(s);
}
void InputStudent(STUDENT*s)
{
printf("输入学生姓名:\n");
scanf("%s",(*s).name);
}
STUDENT *FindStudent(STUDENT s[],int n_students,int id)//返回指向结构体的指针
{
int i;
STUDENT *p;
for(i=0;i<n_students;i++)
{
if(id==s[i].id)
{
p=&s[i];
return p;
}
}
return NULL;
}
void ShowStudent(STUDENT* s)
{
int i;
if(s!=NULL)
{
printf("%s %d ",(*s).name,(*s).id);
for(i=0;i<3;i++)
{
printf("第%d科成绩为:%f,",i+1,s->score[i]);
}
}
else
printf("未找到学生\n");
}
if(strcmp(id,students[i].id)==0)
id是整型啊,怎么用strcmp啊
直接if(id == students[i].id)就可以了