C语言函数代码错误分析与修改:删除书籍出版社信息
C语言函数代码错误分析与修改:删除书籍出版社信息
原代码:
void del4() //作者删除
{
char bookpub[20];
printf("请输入你要删除的书籍出版社:");
scanf("%s", bookpub);
int a=0;
for (a =0;a<=numBooks;a++)
if (strcmp(books[a].pub, bookpub) == 0)
{
do
{
if (strcmp(books[a].pub, bookpub) == 0)
{
for (int j = a; j < numBooks - 1; j++)
{
books[j] = books[j + 1];
}
numBooks--;
update2();
printf("删除成功!\n"); //单次删除
a++;
}
}
while (a==numBooks);
{
return ;
}
}
}
修改后的代码:
void del4() //作者删除
{
char bookpub[20];
printf("请输入你要删除的书籍出版社:");
scanf("%s", bookpub);
int a=0;
for (a =0;a<numBooks;a++) //修改条件为a<numBooks
if (strcmp(books[a].pub, bookpub) == 0)
{
do
{
if (strcmp(books[a].pub, bookpub) == 0)
{
for (int j = a; j < numBooks - 1; j++)
{
books[j] = books[j + 1];
}
numBooks--;
update2();
printf("删除成功!\n"); //单次删除
}
a++;
}
while (a<numBooks); //修改条件为a<numBooks
return ;
}
}
修改的主要内容:
- for循环条件应为a<numBooks,不能包含等于号;
- do-while循环中,while条件应为a<numBooks,不能等于;
- 删除单次删除的printf语句应该放在if语句内部,避免重复输出;
- 删除单次删除的a++应该放在if语句内部,避免多次删除同一本书。
原文地址: https://www.cveoy.top/t/topic/oSWt 著作权归作者所有。请勿转载和采集!