c primer plus 第十四章课后编程3题

//修改14.2 1、按照输入顺序。2、按照标题字母的声明输出图书的信息。3、按照价格(升序从小到大)

#include <stdio.h>
#include <string.h>
char *s_gets(char *st,int n);

#define MAXTITL 40
#define MAXAUTL 40
#define MAXBKS 100

struct book {
char title[MAXTITL];
char author[MAXAUTL];
float value;
};

int main(void)
{

struct book library[MAXBKS];
struct book temporary;
int count=0;
int index;
int k; //用来排序

printf(“Please enter the book title.\n”);
printf(“press [enter] at the start of a line to stop.\n”);
while (count<MAXBKS && s_gets(library[count].title, MAXTITL)!=NULL
&& library[count].title[0]!=’\0’)
{
printf(“Now enter the the author.\n”);
s_gets(library[count].author, MAXAUTL);
printf(“Now enther the value.\n”);
scanf("%f",&library[count++].value);
while(getchar()!=’\n’)
continue;
if(count<MAXBKS)
printf(“Enter the next title.\n”);
}

if(count>0)
{
//按照输入顺序输出
printf(“This is the list of books sorted by input order:\n”);
for(index=0;index<count; index++)
printf("%s by %s: $%.2f\n",library[index].title,
library[index].author, library[index].value);

//按照标题字母声明的顺序输出

printf("This is a list of books in alphabetical order:\n");
for(index=0; index<count; index++)
{
  for(k=index+1;k<count;k++)
  {
    if(strcmp(library[index].title,library[k].title)>0)
    {
       temporary=library[index];
        library[index]=library[k];
        library[k]=temporary;
    }
  }
        printf("%s by %s: $%.2f\n",library[index].title,
               library[index].author,library[index].value);
}

//按照价格从低到高排序
printf(“Here is a list of books by price:\n”);
for(index=0; index<count; index++)
{
for(k=index+1;k<count;k++)
{
if(library[index].value>library[k].value)
{
temporary=library[index];
library[index]=library[k];
library[k]=temporary;
}
}
printf("%s by %s: $%.2f\n",library[index].title,
library[index].author,library[index].value);
}
}

return 0;
}

char *s_gets(char *st, int n)
{
char *ret_val;
char *find;

ret_val=fgets(st,n,stdin);
if(ret_val)
{
find=strchr(st,’\n’);
if(find)
*find=’\0’;
else
while(getchar()!=’\n’)
continue;
}
return ret_val;
}

发布了85 篇原创文章 · 获赞 1 · 访问量 1889

猜你喜欢

转载自blog.csdn.net/Tekkenwxp/article/details/102615316