c++里面出现了一个问题,导致程序停止正常工作,请关闭该程序

程序还没写完,要求是查找数组的元素和冒泡排序。出现程序停止工作是怎么回事???紧急求助。#include<stdio.h>#defineMAXSIZE100#define... 程序还没写完,要求是查找数组的元素和冒泡排序。出现程序停止工作是怎么回事???紧急求助。

#include<stdio.h>

#define MAXSIZE 100
#define LISTSIZE 100
typedef int KeyType;//查找

typedef int KeyType1;
typedef int DataType1;
typedef struct
{
KeyType1 key;
DataType1 data;
}SortItem,SqList1[MAXSIZE];//////////排序

///////////////////////////////
typedef struct{
KeyType key;
}DataType;
typedef struct{
DataType items[LISTSIZE];
int length;
}SqList;/////////查找

int seqsearch(SqList L, DataType x);
void bubblesort(SqList L,int n);

void main()
{
SqList M;
SqList1 L;
int num[5],i,pos,key;
DataType x;/*x的类型不是整形,而是datatype,在子函数中用了x.key,整形不能这样用*/
printf("请输入一组数:");
for (i=0;i<5;i++)
{
scanf("%d",&num[i]);
}
printf("该数列为:\n");
for (i=0;i<5;i++)
{
printf("%d ",num[i]);
L[i].key=num[i];
M.items[i].key=num[i];
}
printf("要查找的数:");
scanf("%d",&key);
x.key=key;
pos=seqsearch(M,x);
printf("数的位置为%d",pos);
}
int seqsearch(SqList L, DataType x)
{
int i=L.length;
L.items[0].key=x.key;
while(L.items[i].key!=x.key) i--;
return i;
}
void bubblesort(SqList1 L,int n)
{
int i,j,over;
SortItem p;
for (i=0;i<n-1;i++)
{
over=1;
for(j=n-1;j>i;j--)
if(L[j].key<L[j-1].key)
{
p=L[j];
L[j]=L[j-1];
L[j-1]=p;
over =0;
}
if(over) break;
}
}
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
浪花飘零2000
推荐于2017-10-07 · TA获得超过630个赞
知道小有建树答主
回答量:579
采纳率:0%
帮助的人:538万
展开全部
一个小bug,在SqList结构使用中,其length变量没有赋值,因此后面的M.length值超过数组域引起报错。
#include <iostream>
using namespace std;
#include<stdio.h>
#define MAXSIZE 100
#define LISTSIZE 100
typedef int KeyType;//查找
typedef int KeyType1;
typedef int DataType1;
typedef struct
{
KeyType1 key;
DataType1 data;
}SortItem,SqList1[MAXSIZE];//////////排序
///////////////////////////////
typedef struct{
KeyType key;
}DataType;
typedef struct{
DataType items[LISTSIZE];
int length;
}SqList;/////////查找
int seqsearch(SqList L, DataType x);
void bubblesort(SqList L,int n);
void main()
{
SqList M;
SqList1 L;
int num[5],i,pos,key;
DataType x;/*x的类型不是整形,而是datatype,在子函数中用了x.key,整形不能这样用*/
printf("请输入一组数:");
for (i=0;i<5;i++)
{
scanf("%d",&num[i]);
}
printf("该数列为:\n");
for (i=0;i<5;i++)
{
printf("%d ",num[i]);
L[i].key=num[i];
M.items[i].key=num[i];
}
printf("%\n");
M.length=4; //根据实际情况赋值4
printf("要查找的数:");
scanf("%d",&key);
x.key=key;
pos=seqsearch(M,x);
printf("数的位置为%d\n",pos+1);
}
int seqsearch(SqList L, DataType x)
{
int i=L.length;
L.items[0].key=x.key;
while(L.items[i].key!=x.key) i--;
return i;
}
void bubblesort(SqList1 L,int n)
{
int i,j,over;
SortItem p;
for (i=0;i<n-1;i++)
{
over=1;
for(j=n-1;j>i;j--)
if(L[j].key<L[j-1].key)
{
p=L[j];
L[j]=L[j-1];
L[j-1]=p;
over =0;
}
if(over) break;
}
}

若满意请及时采纳,谢谢
追问
改了下,行了。原来是这样啊。我想问问一般出现这种运行出现问题的情况还有哪些?
追答
一个负值的数组下标也会引起这样的情况
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浙江启扬智能科技有限公司
2023-06-12 广告
Linux 嵌入式系统中,USB 启动模式能够烧写 ARM 的 uboot 的原因主要有以下几个方面:1. USB 启动模式相对于传统的 BIOS 启动模式来说,具有更高的兼容性和灵活性,可以支持更多的硬件设备和操作系统。2. USB 启动... 点击进入详情页
本回答由浙江启扬智能科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式