写出了,不知带错在哪里了,求大神改正
(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); }