为什么输入信息,之后进入了死循环????
#include<stdio.h>#include<malloc.h>
#define Maxsize 50
typedef char ElemType;
typedef int status;
typedef struct {
ElemType Name;
int num;
int score;
int length;
}Sqstulist;
void InitList(Sqstulist *&L)//初始化
{
L=(Sqstulist *)malloc(sizeof(Sqstulist));
L->length=0;
}
bool CreateList(Sqstulist *L)//加入学生信息
{
int i;
printf("请输入表长:");
scanf("%d",&L->length);
if(L->length<1||L->length>Maxsize)
{
return false;
}
printf("请分别输入学号、姓名、分数:\n");
for(i=0;i<L->length;i++)
{
scanf("%d %c %d",&L->num,&L->Name,&L->score);
}
return true;
}
bool InsertList(Sqstulist *L,int i)//插入学生信息
{
int j;
if(i<1||i>L->length+1)
{
return false;
}
for(j=L->length;j<i;j--)
{
L->num=L->num;
L->Name=L->Name;
L->score=L->score;
}
printf("请输入要插入的信息");
scanf("%d %c %d",&L->num,&L->Name,&L->score-1);
L->length++;
return true;
}
bool amendList(Sqstulist *L,int i) //修改学生信息
{
if(i<1||i>L->length)
{
return false;
}
printf("请输入修改的内容:");
scanf("%d %c %d",&L->num,&L->Name,&L->score);
return true;
}
bool DeleteList(Sqstulist *L,int i)//删除学生信息
{
int j;
if(L->length==NULL)
{
return false;
}
if(i<1||i>L->length)
{
return false;
}
for(j=i;j<L->length;j++)
{
L->num=L->num;
L->Name=L->Name;
L->score=L->score;
}
L->length--;
return true;
}
status OutList(Sqstulist *L)//输出学生信息
{
int i;
for(i=0;i<L->length;i++)
{
printf("%d %c %d\n",L->num,L->Name,L->score);
}
}
void Destroylist(Sqstulist *L)//销毁顺序表
{
free(L);
}
void meaun()//选择菜单
{
printf("2.插入学生信息\n");
printf("3.修改学生信息\n");
printf("4.删除学生信息\n");
printf("5.输出学生信息\n");
printf("6.输入0退出\n");
}
int main()
{
Sqstulist *L;
int a,j,k,n;
InitList(L);
CreateList(L);
while(1)
{
meaun();
printf("\n\n请输入要执行的序号:");
scanf("%d",&a);
switch(a)
{
case 2:
printf("请输入要插入学生信息的位置:");
scanf("%d",&j);
InsertList(L,j);
break;
case 3:
printf("请输入要修改的位置:");
scanf("%d",&k);
amendList(L,k);
break;
case 4:
printf("请输入要删除的位置:");
scanf("%d",&n);
DeleteList(L,n);
break;
case 5:
OutList(L);
break;
case 0:
break;
default:printf("你输入的编号不正确!\n");break;
}
if(a==0)
{
break;
}
}
Destroylist(L);
return 0;
}
进入死循环?你的编译器可以运行?我测试你的代码,36 个报错信息,5 个警告提示,完全无法运行。 傻眼貓咪 发表于 2022-3-26 17:51
进入死循环?你的编译器可以运行?我测试你的代码,36 个报错信息,5 个警告提示,完全无法运行。
要最新编译器,搞得这么特殊确实很难帮得上忙。
看看是不是没有清空缓冲区吧。
scanf()。会导入键盘缓冲区有残留数据。
相应的地方加上这句。
while(getchar()!='\n'); ba21 发表于 2022-3-26 19:56
看看是不是没有清空缓冲区吧。
scanf()。会导入键盘缓冲区有残留数据。
相应的地方加上这句。
建议你先试试他的代码再说 本帖最后由 傻眼貓咪 于 2022-3-26 20:11 编辑
ba21 发表于 2022-3-26 19:56
看看是不是没有清空缓冲区吧。
scanf()。会导入键盘缓冲区有残留数据。
相应的地方加上这句。
如果你认为没有问题,我无话说,可能是我的问题吧,你高兴就好。 傻眼貓咪 发表于 2022-3-26 20:06
如果你认为没有问题,我无话说,可能是我的问题吧,你高兴就好。
ba21 发表于 2022-3-26 20:24
.cpp
.c 谢谢大家! ba21 发表于 2022-3-26 19:56
看看是不是没有清空缓冲区吧。
scanf()。会导入键盘缓冲区有残留数据。
相应的地方加上这句。
可行的
页:
[1]