C++ 结构体程序纠错

来源:百度知道 编辑:UC知道 时间:2024/07/08 20:18:38
# include <iostream>
# include <cstring>
using namespace std;

enum Sex{MALE,FEMALE};
struct Date
{
int year,month,day;
};
enum Major
{
maths,physics,computer};

struct Stud
{
int no;
char name[20];
Sex sex;
Date birth_date;
char birth_place[40];
Major major;
} ;

Stud *search(Stud s[]);
void main()
{
Stud s[5]={{22,"LXY",MALE,{1988,01,01},"北京",maths},{23,"AYY",MALE,{1988,02,02},"南京",maths},{24,"ZY",FEMALE,{1988,03,03},"户县",physics},{25,"LYJ",MALE,{1988,01,18},"宝鸡",maths},{26,"GM",FEMALE,{1988,06,01},"咸阳",computer}};
Stud *t;
t=search(s);
extern i;
if (t==0)
cout<<"未找到"<<endl;
else
cout<<t->no<<','<<t->name<<','<<t->

cout<<t->no<<','<<t->name<<','<<t->sex<<','<<t->birth_date<<','<<t->birth_place<<','<<t->major<<endl;
这一句的问题是Date是个结构体,用cout<<无法直接输出,有两种解决办法:
一是重载<<运算符,二是分别输出各个成员,即cout<<t->birth_date.year<<t->birth_date.month<<t->birth_date.day.
if (strcmp (no1,s[i].no)==0)//这一句的错误更明显了,strcmp是比较字符串大小的函数,如strcmp("abcd","azxs");而no1和s[i].no都是整形变量,直接用==运算符就可以了,即 if(no1==s[i].no) {...