#include<stdio.h>
#define MATITL 40
#define MAAUTL 40
#define MABK 3
struct book{
char title[MATITL];
char author[MAAUTL];
float value;
};
void print1(struct book guan[],int n);
void print2(struct book *ptr[],int n);
main()
{
int count,i;
struct book guan[MABK],*ptr2[MABK];
char ch;
printf("please enter the book\n");
count=0;
while(count<3&&gets(guan[count].title)!=NULL&&guan[count].title[0]!='\0')
{
printf("please enter the author\n");
gets(guan[count].author);
printf("please enter the value\n");
scanf("%f",&guan[count++].value);
ch=getchar();
printf("please enter the book\n");
}
for(i=0;i<3;i++)
{
ptr2[i]=&guan[i];
}
print1(guan,3);
printf("another input:\n");
print2(ptr2,3);
}
void print1(struct book guan[],int n)
{
int count;
count=0;
for(count=0;count<n;count++)
{
printf(" %s by %s:$%.2f\n",guan[count].title,guan[count].author,guan[count].value);
}
}
void print2(struct book *ptr[],int n)//以标题先后输出
{
int i,j;
struct book *temp;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if((strcmp(ptr[i]->title,ptr[j]->title))>0)
{
temp=ptr[j];
ptr[j]=ptr[i];
ptr[i]=temp;
}
}
for(i=0;i<n;i++)
{
printf(" %s by %s:$%.2f\n",ptr[i]->title,ptr[i]->author,ptr[i]->value);
}
}
}