C\C+++中字符串比较进行排序的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 19:09:40
小弟有如下代码
struct Book
{
char name[20];//书名
int price;//书的单价
int num;//书的数量
int amount;//书的总价

}book[10];
void sort(struct Book book[])
{
char temp[]={};
printf("根据书名排序 \n");
for(int i=1;i<count;i++)
{
for(int j=0;j<count-i;j++)
{
if(strcmp(book[j].name,book[j+1].name)>0)
{
temp=book[j+1].name;
book[j+1].name=book[j].name;
book[j].name=temp;

}
}
}
我想问下 在比较的时候需要定义个TEMP的临时变量
我现在要把书名做比较应该是字符串的比较 那么我的临时变量TEMP应该如何定义?是char temp[20];还是用int temp[20];
具体的我不会所以想请教下。。
还有比较后进行交换的话应该怎么写啊?是写临时变量的首地址还是temp[20]?...
temp=book[j+1].name;
book[j+1].name=book[j].name;
book[j].name=temp;

对不起,阁下的代码是错误的。这种排序只对书名进行排序,但与该书相关的数据没有进行同步排序所以逻辑上有错误;

struct Book
{
char name[20];//书名
int price;//书的单价
int num;//书的数量
int amount;//书的总价

}book[10];
void sort(struct Book book[])
{
struct book temp;//你应该定义该变量为结构体;

printf("根据书名排序 \n");
for(int i=1;i<count;i++)
{
for(int j=0;j<count-i;j++)
{
if(strcmp(book[j].name,book[j+1].name)>0)
{
strcpy(temp.name,book[i].name); //要交换的话应交换整个结构变量的数据,不能局部交换
strcpy(book[i].name,book[i+1].name);
strcpy(book[i+1].name,temp.name);
temp.price=book[i].price;
book[i].price=book[i+1].price;
book[i+1].price=temp.price;
temp.num=book[i].num;
book[i].num=book[i+1].num;
book[i+1].num=temp.num;
temp.amount=book[i].amount;
book[i].amount=book[i+1].amount;
book[i+1].amount=temp.amount;

}
}
}

这时候就用指针吧,