c语言程序设计帮忙修改一下谢谢 20
该子程序是删除一条已存在的图书信息,现情况为:输入不存在书名提示“未找到待删除记录”,输入存在书名会显示该图书信息并提示输入待删图书编号,此时输入存在的编号一切正常,求修...
该子程序是删除一条已存在的图书信息,现情况为:输入不存在书名提示“未找到待删除记录”,输入存在书名会显示该图书信息并提示输入待删图书编号,此时输入存在的编号一切正常,求修改!!!要求输入不存在编号时提示“未找到待删除记录”,谢谢
int delet(Bookinfo dictList[],int n,char *ISBN) //只删除书号为ISBN的第一条记录
{
int i,j;
for(i=0;i<n;i++)
{
if(!strcmp(dictList[i].ISBN,ISBN)) //strcmp()函数判断两个字符串是否相等
{
for(j=i;j<n-1;j++)
dictList[j]=dictList[j+1]; //将目标值右面的数据全部左移一位
return(n-1);//删除后记录数减少1
}
}
return(n);
}
int Delete_a_record(Bookinfo dictList[],int n)//删除某一条记录
{
int i,j=0;
char book[30],isbn[10],s,c;
c=getchar();
printf("请输入待删除的书目的书名\n");
gets(book); //获取书名字符串
printf("%-10s%-23s%-18s%-8s%-15s%-4s\n","ISBN","book","author","edition","press","year");
for(i=0;i<n;i++)
{
if(!strcmp(dictList[i].book,book))
{ //找到同名的数据,并输出
printf("%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book,dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year);
j++;
}
}
if(j==0) printf("未找到待删除记录\n");
else
{
printf("请输入待删除的书目的书号\n");
gets(isbn); //获取要删除的数据的书号
printf("确实要删除该记录?是(y)|否(n)\n"); //提示删除
if((s=getchar())=='y')
{
for(i=0;i<n;i++)
{
if(!strcmp(dictList[i].ISBN,isbn))
{
//调用delet函数删除
printf("删除成功!\n");
return(delet(dictList,n,dictList[i].ISBN));
}
}
}
}
return(n); 展开
int delet(Bookinfo dictList[],int n,char *ISBN) //只删除书号为ISBN的第一条记录
{
int i,j;
for(i=0;i<n;i++)
{
if(!strcmp(dictList[i].ISBN,ISBN)) //strcmp()函数判断两个字符串是否相等
{
for(j=i;j<n-1;j++)
dictList[j]=dictList[j+1]; //将目标值右面的数据全部左移一位
return(n-1);//删除后记录数减少1
}
}
return(n);
}
int Delete_a_record(Bookinfo dictList[],int n)//删除某一条记录
{
int i,j=0;
char book[30],isbn[10],s,c;
c=getchar();
printf("请输入待删除的书目的书名\n");
gets(book); //获取书名字符串
printf("%-10s%-23s%-18s%-8s%-15s%-4s\n","ISBN","book","author","edition","press","year");
for(i=0;i<n;i++)
{
if(!strcmp(dictList[i].book,book))
{ //找到同名的数据,并输出
printf("%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book,dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year);
j++;
}
}
if(j==0) printf("未找到待删除记录\n");
else
{
printf("请输入待删除的书目的书号\n");
gets(isbn); //获取要删除的数据的书号
printf("确实要删除该记录?是(y)|否(n)\n"); //提示删除
if((s=getchar())=='y')
{
for(i=0;i<n;i++)
{
if(!strcmp(dictList[i].ISBN,isbn))
{
//调用delet函数删除
printf("删除成功!\n");
return(delet(dictList,n,dictList[i].ISBN));
}
}
}
}
return(n); 展开
2个回答
2017-05-11
展开全部
问题也很好解决;
1、问题描述:按你所述内容,是想在找到相同书名后(可能有很多本,但ISBN号各不相同),你想按"ISBN" 号删除,如果输入的ISBN号在找到的所有同名书中存在,则删除该ISBN号所对应的书本信息,若不存在,则提示未找到相应的ISBN信息。
2、算法分析:在找到若干同名书之后,把所有找到书目放入一个数组F,数组的长度为你所写程序中变量"j"的值,即 Bookinfo F[j];然后在输入要删除的ISBN号后,只需在数组F中查找对应的ISBN号即可。
3、源代码参考:
Bookinfo F[j];//定义数组
for(i=0;i<n;i++)
{
if(!strcmp(dictList[i].book,book))
{ //找到同名的数据,并输出
printf("%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book,dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year);
F[j++] = dictList[i];//把找到的同名书目放入F数组
}
}
if(j==0)
printf("未找到待删除记录\n");
else
{
printf("请输入待删除的书目的书号\n");
gets(isbn); //获取要删除的数据的书号
//在F中查找ISBN
//楼主自己写代码哦,很简单
//
if(找到)
{
printf("确实要删除该记录?是(y)|否(n)\n"); //提示删除
if((s=getchar())=='y')
{
for(i=0;i<n;i++)
{
if(!strcmp(dictList[i].ISBN,isbn))
{
//调用delet函数删除
printf("删除成功!\n");
return(delet(dictList,n,dictList[i].ISBN));
}
}
}
}
else(没找到)
{
//自己添加代码
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询