|
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);
}
}
}
|
-
报错
|