下图为具体问题,请使用数组相关知识进行解答
,实在是没有什么思路,麻烦各位朋友能够提供代码
定义图书结构体,然后定义五个长度的结构体数组,输入后根据价格进行排序输出。
#include <stdio.h>
#include <string.h>
typedef struct _book
{
char name[30];
float price;
}book;
void input(book *b,int n)
{
printf("输入5本书的名称和价格:\n");
for(int i=0;i<n;i++)
scanf("%s%f",b[i].name,&b[i].price);
}
void sortPrice(book *b,int n)
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
{
if(b[j].price > b[j+1].price)
{
book t = b[j];
b[j] = b[j+1];
b[j+1] = t;
}
}
for(int i=0;i<n;i++)
printf("%s\t%.1f\n",b[i].name,b[i].price);
}
void sortName(book *b,int n)
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
{
if(strcmp(b[j].name,b[j+1].name) > 0)
{
book t = b[j];
b[j] = b[j+1];
b[j+1] = t;
}
}
for(int i=0;i<n;i++)
printf("%s\t%.1f\n",b[i].name,b[i].price);
}
int main()
{
book b[5];
input(b,5);
printf("\n");
sortPrice(b,5);
printf("\n");
sortName(b,5);
return 0;
}