为什么我在Dev C++编译器上执行以下代码时会出错(初学者菜鸟问题) 20C

我想在执行case1输入数字以后执行case3,但是Run界面中输入case3执行的数字三,调用的是case1的函数?
# define SEQLIST_INIT_SIZE 8
#include
#include
#include
#include
typedef int ElemType;
typedef struct SeqList
{
ElemType *base;
int capacity;
int size;

}SeqList;

void InitSeqList(SeqList *list);
void push_back(SeqList *list,ElemType x);
void show_list(SeqList *list);
int main()
{
SeqList mylist;
InitSeqList(&mylist);
ElemType Item;
int select = 1;
while(select)
{
printf("1push_back 2push_front \n");
printf("3show_list 4pop_back \n");
printf("5pop_front 6insert_pos \n");
printf("7find 8length \n");
printf("9delete_pos 10delete_val\n");
printf("11sort 12reserve \n");
printf("13clear 14destory \n");
printf("0quit_system \n");

    scanf("%d,&select");
    if(select == 0)
    break;
    switch(select)
    {
    case 1:
            printf("输入插入的数据\n");
            while(scanf("%d",&Item),Item!=-1)
            {
            push_back(&mylist,Item);
            }

            break;

    case 3:
            show_list(&mylist);
            break;
    default:
            printf("error\n");
            break;
    }
}

}

void InitSeqList(SeqList list)
{
list->base = (ElemType
)malloc(sizeof(ElemType)*SEQLIST_INIT_SIZE);
assert(list->base!=NULL);
list->capacity=SEQLIST_INIT_SIZE;
list->size=0;

}
void push_back(SeqList *list,ElemType x)
{
if(list->size>=list->capacity)
{
printf("full,不能尾插");
return;
}
list->base[list->size]=x;
list->size++;
}

void show_list(SeqList *list)
{
for (int i=0; isize;++i)
{
printf("%d",list->base[i]);
}
printf("\n");
}

c++

3个回答

void InitSeqList(SeqList list)
{
list->base = (ElemType)malloc(sizeof(ElemType)*SEQLIST_INIT_SIZE);
assert(list->base!=NULL);
list->capacity=SEQLIST_INIT_SIZE;
list->size=0;
}
首先看到这个函数,你的语法有问题。
list本身就是结构体名称,结构体指针才能加->,先把语法小问题改改嘻嘻。
void InitSeqList(SeqList list)
{
list.base = (ElemType*)malloc(sizeof(ElemType)*SEQLIST_INIT_SIZE);
assert(list.base!=NULL);
list.capacity=SEQLIST_INIT_SIZE;
list.size=0;
}

首先不知道你贴的是不是原代码 如果是那肯定会有错误,若不是 不知道这一句是输入错误还是代码错误 scanf("%d,&select");肯定有问题,还有执行case 1输入 时必须要输入 -1才能停止case 1进行下一次run,其他的错误就不看了如楼上 所说 参数明显少了个*,这样代码肯定编不过

如果只是解决你问的问题:那就是你
scanf("%d,&select")这条语句错了,
&select不应该在双引号里面,
应该是:**scanf("%d”,&select)**。
你大意了,我也是初学者,这些小问题我也经常出现。以后代码编多了就好了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐