写出了,不知带错在哪里了,求大神改正
(1)置一个结构体类型date,成员包括:年月,设置一个结构体类型book,成员包括书名,作者,价格,出版日期(用 struct date pubday表示)(2)设置一个结构体数组,包含3本书,初始化3本书的相关信息, 其中初始化要求从键盘终端输入数据。
(3)编写输出函数print,设置一个指针p指向该数组,并采用三种表不同的表示结构体成员的方式输出书名,价格,出版日期。
(4)编写查找函数search,输入某书名,查找是否有这本书,如果有,显示书名作者,没有,显示找不到。
(5)编写函数change,修改某本书的名字价格
程序代码:#include<stdio.h>
#include<conio.h>
#include<string.h>
struct date//声明结构体类型struct date
{
int year;//出版年份
int month;//出版月份
};
struct book//声明结构体类型struct book
{
char name[20];//书名
char author[20];//作者
int price;//价格
struct date pubday;//出版日期
}book[3];//定义结构体组
void print(struct book book[])//定义print输出函数
{
int i;
struct book *p=book;定义指向struct book类型数据的指针变量p
for(i=0;i<3;i++)
{
printf("%s ",book[i].name);
printf("%f ",p->price);
printf("%d%d",(*p).pubday.year,(*p).pubday.month);
p++;
printf("\n");
}
}
void search(struct book book[])//定义查找函数search
{
int i;
char bookname[20];
scanf("%s",bookname);//输入需要查找的书名
for(i=0;i<3;i++)//查找是否有这本书
if(strcmp(bookname,book[i].name)==0)
{
printf("%s",book[i].author);//如果有这本书则输出作者
break;
}
if(i>3)
printf("Don't find");//没有这本书则输出没有
}
void change(struct book book[])//定义修改函数change
{
char a[20];
int b,n;
scanf("%d",&n);//修改第n本书的信息
scanf("%s",&a);//输入修改后的名字
scanf("%d",&b);//输入修改后该书的价格
strcpy(book[n].name,a);//修改名字
book[n].price=b;//修改价格
printf("%s%d",book[n].name,book[n].price);//输出修改后该书的信息
}
void main()
{
int i;
clrscr();
for(i=0;i<3;i++)//对结构体数组初始化
scanf("%s%s%f%d%d",book[i].name,book[i].author,&book[i].price,&book[i].pubday.year,&book[i].pubday.month);
print(book);
search(book);
change(book);
}

