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 ;
        }
}

修改的主要内容:

  1. for循环条件应为a<numBooks,不能包含等于号;
  2. do-while循环中,while条件应为a<numBooks,不能等于;
  3. 删除单次删除的printf语句应该放在if语句内部,避免重复输出;
  4. 删除单次删除的a++应该放在if语句内部,避免多次删除同一本书。
C语言函数代码错误分析与修改:删除书籍出版社信息

原文地址: https://www.cveoy.top/t/topic/oSWt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录