为什么我的equal函数和serach函数直接跳过了
调试的结果没有动用这俩个函数
#include<stdio.h>
#include<string.h>
typedef struct date
{
int year;
int month;
int day;
}DATE;
typedef struct student
{
int num;
char name[20];
char sex;
DATE birthday;
float score;
}STUDENT;
void inputarr(STUDENT s[ ], int n);
void outputarr(STUDENT s[ ], int n);
int equal (STUDENT a, STUDENT b);
int serach(STUDENT a[],int n,STUDENT x);
int main()
{
STUDENT b[5],x ={10030,"Lisan",'F',2000,10,14,92.5},y ={10010,"Lisan",'F',2000,10,14,92.5};
int n = 0;
inputarr(b,5);
outputarr(b,5);
n = serach(b,5,x);
if(n>0)
{
printf("查找成功,是第%d个学生。\n",n+1);
}
else
{
printf("查无此人。\n");
}
n = serach(b,5,y);
if(n>0)
{
printf("查找成功,是第%d个学生。\n",n+1);
}
else
{
printf("查无此人。\n");
}
return 0;
}
/********** Begin **********/
void inputarr(STUDENT s[ ], int n){
int i;
for(i=0;i<n;i++){
scanf("%d",&(s[i]).num);
scanf("%s",(s[i]).name);
scanf(" %c",&(s[i]).sex);
scanf("%d%d%d",&(s[i]).birthday.year,&(s[i]).birthday.month,&(s[i]).birthday.day);
scanf("%f",&(s[i]).score);
}
}
void outputarr(STUDENT s[ ],int n){
int i;
for(i=0;i<n;i++){
printf("学号:%d\t姓名:%s\t性别:%c\t",s[i].num,s[i].name,s[i].sex);
printf("出生日期:%d-%d-%d\t",s[i].birthday.year,s[i].birthday.month,s[i].birthday.day);
printf("成绩:%.1f\n",s[i].score);
}
}
int equal (STUDENT a, STUDENT b)
{// 如果a,b的所有成员值相等,返回1,否则返回0
if (a.num != b.num )
return 0;
else if ( strcmp( a.name, b.name ) != 0 )
return 0;
else if ( a.sex != b.sex )
return 0;
else if ( a. birthday .year != b. birthday.year )
return 0;
else if ( a. birthday . month!= b. birthday . month )
return 0;
else if (a. birthday .day != b. birthday .day)
return 0;
else if ( a.score != b. score )
return 0;
else
return 1;
}
int serach(STUDENT a[],int n,STUDENT x){
int i;
for(i=0;i<n;i++){
if(equal(a[i],x)==1){
return i;
}
else{
return 0;
}
}
}
/********** End **********/
你的输入有问题,看了半天,参考如下:
void inputarr(STUDENT s[ ], int n){
int i;
for(i=0;i<n;i++){
scanf("%d",&(s[i].num));
scanf("%s",&(s[i].name));
scanf(" %c",&(s[i].sex));
DATE birthday;
scanf("%d%d%d",&(birthday.year),&(birthday.month),&(birthday.day));
s[i].birthday = birthday;
scanf("%f",&(s[i].score));
}
}
如有帮助,欢迎采纳哈!