宁波蒋氏故居:帮我检查一下我的错误(C语言基础)

来源:百度文库 编辑:高校问答 时间:2024/05/10 04:20:22
这是书上的一道题:编写程序,有5种教材,输入书名,册数,单价.然后按册数降序排序,并求出每种书的总金额。

下面是我写的代码;
main()
{
typedef struct book
{
char name[10];
int ceshu;
float danjia,zongjia;
}XX;
XX book[5],k;
int i,j;
for(i=0;i<5;i++)
scanf("%s%d%f",book[i].name,
book[i].ceshu,
book[i].danjia
);
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(book[i].ceshu<book[j].ceshu)
{
k=book[i];book[i]=book[j];book[j]=k;
}
for(i=0;i<5;i++)
{
book[i].zongjia=book[i].ceshu*book[i].danjia;
printf("%s\n%d\n%f\n%f\n",book[i].name,
book[i].ceshu,
book[i].danjia,
book[i].zongjia);
}
}

k=book[i];book[i]=book[j];book[j]=k;
是不行的,在C中结构体是不能用等号直接赋值的
可以另建一个数组,该数组的功能就是存储教材数组的下标。

k变量应该声明为数组或指针变量
用来存放比较中的教材数组的下标或地址
我想用指针来做可能会更加简单的啊
你可以试一下啊