|
60鱼币
程序很长,但是运行只有四处报错,网上查了以后知道错因了但还是不知道怎么修改,求大佬帮助。
- #include <stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<conio.h>
- typedef struct
- {
- char bn[]; //图书名字
- char num[] ;//图书编号
-
- } STD;
-
- typedef struct
- {
- STD *data; //指向STD类型的指针变量
- int listSize;
- int length;
- } SqList;
- int inieSqList(SqList *L,int max) //初始化
- {
- L->data = (STD *)malloc(max *sizeof(STD));
- if(L->data == NULL)
- {
- printf("空间申请失败!\n");
- return 0;
- }
- L->listSize = max;
- L->length = 0;
- return 1;
- }
- int insertSqList(SqList *L, int i,STD x) //插入操作
- {
- int k;
- if(i < 1||i > L->length+1)
- {
- printf("插入位置异常!\n");
- return 0;
- }
- if(L->length >= L->listSize)
- {
- printf("容量不够!\n");
- return 0;
- }
- for(k = L->length;k >= i;k--) //向后移动一组数据
- {
- L->data[k] = L->data[k - 1];
- }
- L->data[i -1] = x; //将待插入数据放入指定位置
- L->length = L->length + 1; //长度加1
- return 1;
- }
-
- int deleteSqList(SqList *L ,int i, STD *x) //删除操作
- {
- int k;
- if (L->length == 0)
- {
- printf("没有数据,不能删除!\n");
- return 0;
- }
- if (i <= 0 || i >L->length)
- {
- printf("位置异常!\n");
- return 0;
- }
- *x = L->data[i - 1];
- for(k = i;k < L->length; k++) //向前移动一组数据
- {
- L->data[k - 1] = L->data[k];
- }
- L->length = L->length - 1;
- return 1;
- }
- int locationSqList1(SqList L,char *x) //按书名查找
- {
- int i;
- if(L.length == 0)
- {
- printf("没有数据!\n");
- return 0;
- }
- for(i = 0;i < L.length;i++)
- {
- if(strcmp(L.data[i].bn,x) == 0)
- return i + 1;
- }
- return 0;
- }
- int locationSqList2(SqList L,char *x) //按书号查找
- {
- int i;
- if(L.length == 0)
- {
- printf("没有数据!\n");
- return 0;
- }
- for(i = 0;i < L.length;i++)
- {
- if(strcmp(L.data[i].num,x) == 0)
- return i + 1;
- }
- return 0;
- }
- int getSqList(SqList L,int i, STD *x) //按指定位置查找
- {
- if (L.length == 0)
- {
- printf("没有数据!\n");
- return 0;
- }
- if (i < 1 || i > L.length)
- {
- printf("位置不合理!\n");
- return 0;
- }
- *x = L.data[i - 1];
- return 1;
- }
-
- int ListLength(SqList *L) //求顺序表长度
- {
- return (L->length);
- }
- int updateSqList(SqList L ,int i,STD x) //修改成员
- {
- if(L.length == 0)
- {
- printf("没有数据,不能更新!\n");
- return 0;
- }
- if(i<1||i>L.length)
- {
- printf("位置不合理!\n");
- return 0;
- }
- L.data[i - 1] = x;
- return 1;
- }
- int dispSqList(SqList L) //输出顺序表
- {
- int i;
- if(L.length == 0)
- {
- printf("没有数据!\n");
- return 0;
- }
- for(i = 0;i<L.length;i++)
- {
- printf("%s %s \n",L.data[i].bn,L.data[i].num);
- }
- return 1;
- }
-
- int menu() //菜单功能
- {
- int n;
- while(1)
- {
- system("cls");
- printf("****欢迎使用图书信息管理系统!****\n");
- printf("1.初始化空表 2.插入图书数据\n");
- printf("3.输出数据 4.删除数据\n");
- printf("5.书号查找 6.书名查找\n");
- printf("7.求表长 8.修改数据\n");
- }
- }
-
- main()
- {
- int n,max;char num,bn;
- SqList L;STD s;
- while(1)
- {
- n = menu(); //显示主菜单
- switch(n)
- {
- case 1: inieSqList(L,max);
- printf("按任意键继续!\n");
- getch();
- break;
- case 2: printf("请输入要插入的图书编号和图书名,用空格隔开:\n");
- scanf("%s %s",s.num,s.bn);
- insertSqList(&L,L.length+1,s);
- printf("按任意键继续!\n");
- getch();
- break;
- case 3: printf("图书数据如下:\n");
- dispSqList(L);
- printf("按任意键继续!\n");
- getch();
- break;
- case 4: printf("请输入要删除的图书位置:\n");
- scanf("%d",n) ;
- deleteSqList(&L ,n, &s);
- printf("删除的数据为:%s %s\n",s.bn,s.num);
- printf("按任意键继续!\n");
- getch();
- break;
- case 5: printf("请输入要查找的图书编号:\n");
- scanf("%s",num);
- n = locationSqList2(L,num);
- if(n)
- printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
- else printf("该编号不存在!\n");
- printf("按任意键继续!\n");
- getch();
- break;
- case 6: printf("请输入要查找的书名:\n");
- scanf("%s",bn);
- n = locationSqList1(L,bn);
- if(n)
- printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
- else printf("该编号不存在!\n");
- printf("按任意键继续!\n");
- getch();
- break;
- case 7: printf("表长为: ");
- ListLength(L);
- printf("按任意键继续!\n");
- getch();
- break;
- case 8: printf("请输入要修改的图书名和图书编号,用空格隔开:\n");
- scanf("%s %s",s.bn,s.num);
- n = locationSqList1(L,s.bn);
- updateSqList(L,n,s);
- printf("按任意键继续!\n");
- getch();
- break;
- case 0: exit(0);
- }
- }
- }
复制代码
- #include <stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<conio.h>
- typedef struct
- {
- char bn[256] ; //图书名字
- char num[256] ; //图书编号
-
- } STD;
- typedef struct
- {
- STD *data; //指向STD类型的指针变量
- int listSize;
- int length;
- } SqList;
- int inieSqList(SqList *L,int max) //初始化
- {
- L->data = (STD *)malloc(max *sizeof(STD));
- if(L->data == NULL)
- {
- printf("空间申请失败!\n");
- return 0;
- }
- L->listSize = max;
- L->length = 0;
- return 1;
- }
- int insertSqList(SqList *L, int i,STD x) //插入操作
- {
- int k;
- if(i < 1||i > L->length+1)
- {
- printf("插入位置异常!\n");
- return 0;
- }
- if(L->length >= L->listSize)
- {
- printf("容量不够!\n");
- return 0;
- }
- for(k = L->length;k >= i;k--) //向后移动一组数据
- {
- L->data[k] = L->data[k - 1];
- }
- L->data[i -1] = x; //将待插入数据放入指定位置
- L->length = L->length + 1; //长度加1
- return 1;
- }
- int deleteSqList(SqList *L ,int i, STD *x) //删除操作
- {
- int k;
- if (L->length == 0)
- {
- printf("没有数据,不能删除!\n");
- return 0;
- }
- if (i <= 0 || i >L->length)
- {
- printf("位置异常!\n");
- return 0;
- }
- *x = L->data[i - 1];
- for(k = i;k < L->length; k++) //向前移动一组数据
- {
- L->data[k - 1] = L->data[k];
- }
- L->length = L->length - 1;
- return 1;
- }
- int locationSqList1(SqList L,char *x) //按书名查找
- {
- int i;
- if(L.length == 0)
- {
- printf("没有数据!\n");
- return 0;
- }
- for(i = 0;i < L.length;i++)
- {
- if(strcmp(L.data[i].bn,x) == 0)
- return i + 1;
- }
- return 0;
- }
- int locationSqList2(SqList L , char * x) //按书号查找
- {
- int i;
- if(L.length == 0)
- {
- printf("没有数据!\n");
- return 0;
- }
- for(i = 0;i < L.length;i++)
- {
- if(strcmp(L.data[i].num,x) == 0)
- return i + 1;
- }
- return 0;
- }
- int getSqList(SqList L,int i, STD *x) //按指定位置查找
- {
- if (L.length == 0)
- {
- printf("没有数据!\n");
- return 0;
- }
- if (i < 1 || i > L.length)
- {
- printf("位置不合理!\n");
- return 0;
- }
- *x = L.data[i - 1];
- return 1;
- }
- int ListLength(SqList *L) //求顺序表长度
- {
- return (L->length);
- }
- int updateSqList(SqList L ,int i,STD x) //修改成员
- {
- if(L.length == 0)
- {
- printf("没有数据,不能更新!\n");
- return 0;
- }
- if(i<1||i>L.length)
- {
- printf("位置不合理!\n");
- return 0;
- }
- L.data[i - 1] = x;
- return 1;
- }
- int dispSqList(SqList L) //输出顺序表
- {
- int i;
- if(L.length == 0)
- {
- printf("没有数据!\n");
- return 0;
- }
- for(i = 0;i<L.length;i++)
- {
- printf("%s %s \n",L.data[i].bn,L.data[i].num);
- }
- return 1;
- }
- int menu() //菜单功能
- {
- char c ;
- system("cls");
- printf("****欢迎使用图书信息管理系统!****\n");
- printf("1.初始化空表 2.插入图书数据\n");
- printf("3.输出数据 4.删除数据\n") ;
- printf("5.书号查找 6.书名查找\n") ;
- printf("7.求表长 8.修改数据\n") ;
- printf("0.退出\n") ;
- fflush(stdin) ;
- while((c = getch()) < '0' || c > '8') ;
- return c - '0' ;
- }
-
- int main(void)
- {
- int n,max ;
- char num[256] , bn[256] ;
- SqList L;STD s ;
- while(1)
- {
- n = menu(); //显示主菜单
- switch(n)
- {
- case 1: inieSqList(& L , max) ;
- printf("按任意键继续!\n") ;
- getch();
- break;
- case 2: printf("请输入要插入的图书编号和图书名,用空格隔开:\n");
- scanf("%s %s",s.num,s.bn);
- insertSqList(&L,L.length+1,s);
- printf("按任意键继续!\n");
- getch();
- break;
- case 3: printf("图书数据如下:\n");
- dispSqList(L);
- printf("按任意键继续!\n");
- getch();
- break;
- case 4: printf("请输入要删除的图书位置:\n");
- scanf("%d",n) ;
- deleteSqList(&L ,n, &s);
- printf("删除的数据为:%s %s\n",s.bn,s.num);
- printf("按任意键继续!\n");
- getch();
- break;
- case 5: printf("请输入要查找的图书编号:\n");
- scanf("%s",num);
- n = locationSqList2(L,num);
- if(n)
- printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
- else printf("该编号不存在!\n");
- printf("按任意键继续!\n");
- getch();
- break;
- case 6: printf("请输入要查找的书名:\n");
- scanf("%s",bn);
- n = locationSqList1(L,bn);
- if(n)
- printf("%s %s\n",L.data[n - 1].bn,L.data[n - 1].num);
- else printf("该编号不存在!\n");
- printf("按任意键继续!\n");
- getch();
- break;
- case 7: printf("表长为: ");
- ListLength(& L) ;
- printf("按任意键继续!\n");
- getch();
- break;
- case 8: printf("请输入要修改的图书名和图书编号,用空格隔开:\n");
- scanf("%s %s",s.bn,s.num);
- n = locationSqList1(L,s.bn);
- updateSqList(L,n,s);
- printf("按任意键继续!\n");
- getch();
- break;
- case 0: exit(0);
- }
- }
- }
复制代码
|
-
报错
|