为了账号安全,请及时绑定邮箱和手机立即绑定

这个程序有错,怎么修改。

这个程序有错,怎么修改。

C C++
慕粉0859542940 2017-04-03 08:35:20
#include<stdio.h>typedef struct { int year; int month; int day;}Data;typedef struct{ int id; //图书编号 char name[20];//图书名 int price;//价格 Data pubData;//出版日期}Book;typedef Book ElemType;typedef struct LNode{ Book data; struct LNode *next;}LNode;int InsertList(LNode *L,int i,ElemType e){ int j; LNode *p,*q; //初始化,指向头结点,并初始化计数器j=0 p=L;j=0; //循环:将指针指向第i-1个结点 while(p!=NULL&&j<i-1) {  p=p->next;  j++; } //检果i是否正确(1<=i<=n+1)    j>i-1时,i<1 if(p==NULL||j>i-1)return 0;//p==NULL时,i>n+1 //分配空间并插入 if(q==NULL)return 0; q->data=e; q->next=p->next; p->next=q; return 1;}void display(LNode *L){ LNode *p; p=L->next; printf("\t书号\t%-16s价格\t出版日期\n","书名"); while(p!=NULL) {  printf("\t%d\t%-16s%d\t%d-%d-%d\n"   ,p->data.id,p->data.name,p->data.price   ,p->data.pubData.year   ,p->data.pubData.month   ,p->data.pubData.day);  p=p->next; }}//菜单void menu(LNode *L){  int a,loc; int e,result;  int select;  int InsertList; do {  system("cls");//清屏  printf("\t****************************\n");  printf("\t*1.添加新的图书            *\n");  printf("\t*2.删除指定图书            *\n");  printf("\t*3.查找指定图书(书名)      *\n");  printf("\t*4.修改图书信息            *\n");  printf("\t*5.显示所有的图书          *\n");  printf("\t*0.退出                    *\n");  printf("\t****************************\n");  printf("\t请输入操和代码:");  scanf("%d",&select);  switch(select)  {  case 1:   //插入一个元数到指定位置   printf("\t请输入要插入的元素:");   scanf("%d",&e);   printf("\t请输入要插入的位置:");   scanf("%d",&loc);            result=InsertList(a,loc,&e);   if(result==0)printf("\t插入元素%d失败!\n",e);   else    printf("\t插入元素%d成功!\n",e);   system("pause");   break;  case 2:   //删除指定位置的元素符号   printf("\t请输入要删除的位置:");   scanf("%d",&loc);   result=DeleteList(a,loc,&e);   if(result==0)printf("\t删除第%d个元素失败!\n",loc);   else printf("\t删除第%d个元素成功!该值为:%d\n",loc,e);   system("pause");   break;  case 3:   //查找指定元素的位序      printf("\t请输入要查找的元素:");   scanf("%d",&e);   loc=LocateList(a,e);   if(loc==0)printf("\t查找元素%d失败!\n",e);   else printf("\t查找元素%d成功!该元素的位序是:%d\n",e,loc);   system("pause");   break;  case 4:   //修改图书信息      printf("\t请输入要修改图书信息:");   scanf("%d",&e);   loc=ModifyList(a,e);   if(loc==0)printf("\t修改图书信息%d失败!\n",e);   else printf("\t修改图书信息%d成功!该图书信息是:%d\n",e,loc);   system("pause");   break;  case 5:   //显示所有的元素   display(L);   system("pause");   break;  case 0:   //退出   printf("\t请问是否确定要退出程序!(Y/N)");   //接收用户输入的选择并执行是否要退出的功能   exit(0);   break;  } }while(select<0||select>5);}int main(){ LNode H; Book book1={1,"数据结构",34,{2014,1,25}}; Book book2={2,"C语言程序设计",31,{2013,11,12}}; Book book3={3,"Java面向对象",42,{2015,8,1}}; Book book4={4,"Web应用开发",68,{2016,10,18}}; Book book5={5,"Android开发基础",75,{2017,3,30}}; H.next=NULL; InsertList(&H,1,book1); InsertList(&H,2,book2); InsertList(&H,3,book3); InsertList(&H,4,book4); InsertList(&H,5,book5);  while(1) {  menu(&H); }}
查看完整描述

2 回答

?
zhonzxad

TA贡献1条经验 获得超0个赞

大致放到编译器里游览了一下楼主的程序,好多变量楼主作为函数中定义,但同时在另外的函数内部,又当做了同名变量使用。另外楼主使用了许多未定义函数,楼主检查一下是否头文件没包含。

查看完整回答
反对 回复 2017-04-04
?
Weber_Wang

TA贡献14条经验 获得超0个赞

建议提问格式化一下代码  看了眼花头疼  很难作答

查看完整回答
反对 回复 2017-04-03
  • 2 回答
  • 0 关注
  • 1236 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信