error C2228: left of ✀.year✀ must have class⼀struct⼀union type

2025-03-10 23:36:11
推荐回答(3个)
回答1:

struct date;
除了顺序问题外,结构体对象定义方法也不对,应该是Date date;

回答2:

struct Book{
char name;
int ID;
int price;
struct date;
}; Book b[20];
struct Date{
int year;
int month;
int day;
};
把这两个结构体的定义位置调整一下,试一试!

回答3:

//---------------------------------------------------------------------------
#include
#include
using namespace std;
int i=1;
struct Date{
int year;
int month;
int day;
};
struct Book{
char name[80]; /*注意这里*/
int ID;
int price;
struct Date date; /*注意这里*/
}; Book b[20];

void add()
{

cout<<"输入书的名字,ID,价格,出版日期。\n";
cin>> b[i].name>> b[i].ID>> b[i].price>> b[i].date.year>> b[i].date.month>> b[i].date.day;
}
void putdown()
{int k,j;char name[20];
cout<<"输入书的名字\n";
cin>>name;
for(j=1;j {if(strcmp(name,b[j].name)==0)
break;}

cout<<"把 "< for(k=j+1;k i--;
}

void search_the_highest()
{
int max=0; int j;
for(j=1;j<=i;j++){if (b[j].price>max) max=b[j].price;}
for(j=1;j<=i;j++)
{
if (b[j].price==max)
{cout<<"最贵的书是:\n"; cout<<"名字:"< b[j].date.year<<'-'< }
}

}

int search_the_total_money()
{int total=0;int j;
for(j=1;j<=i;j++){total+=b[j].price;}
return total;

}

int main()
{
int select;
while (1)
{
cout<<"1.添加一本书.\n";
cout<<"2.放下一本书.\n";
cout<<"3.查询最贵的书.\n";
cout<<"4.查询当前书篮中书的总价.\n";
cout<<"5.退出\n";

cin>>select;

switch(select)
{
case 1:add();i++;break;
case 2:putdown();break;
case 3:search_the_highest();break;
case 4:search_the_total_money();break;
case 5:return 0;

}
}
}

//---------------------------------------------------------------------------