给定一个结构书定义如下和一个结构书的数组库:
struct Book{
char title[100];
char author[100];
int price;
struct Book *nextedition;
};
struct Book lib[1000];
我将编写一个函数来计算给定作者的书籍总价格,包括他的书的未来版本的所有书籍,即使该未来版本的作者不是指定的作者。
title author price nextedition
----------------------------------
0 Book1 Author1 25 &lib[2]
1 Book2 Author2 20 NULL
2 Book3 Author3 30 &lib[3]
3 Book4 Author1 35 NULL
对于上面的示例,位于 lib[2] 的书是位于 lib[0] 的书的下一个版本,位于 lib[4] 的书是位于 lib[2] 的书的下一个版本。因此,给定作者“Author1”,该函数应返回 90 (=25+30+35),给定作者“Author 3”,该函数应返回 65 (=30+35)。
所以这是我的代码:
int firstEdition(char author[100]){
int i, pos=-1;
for(i=0;i<numbooks;i++)
if(strcmp(lib[i].author,author)==0){
pos=i;
if(pos>=0) return pos;
}
return -1;
}
int totalPrice(char author[100]){
int price=0;
int i=firstEdition(author);
if (i<0)
return 0;
else {
while (lib[i].nextedition != NULL){
price+=lib[i].price;
lib[i]=*(lib[i].nextedition);
}
return price;}
}
我已经尝试使用上面的示例和 author="Author1" 运行代码并不断得到错误的输出。该函数总是返回55
而不是90
,我似乎无法弄清楚为什么。任何帮助表示赞赏,谢谢!