看了一下你的程序,思路与大体上的语法应该是没有错的.
我现在手头上没有VS,我无法帮你测试.但我凭着经验,大概告诉你一下你排错的方法吧.
首先,你先把creat(&a);
output(&a);
insert(&a,1,2);
output(&a); 全部注释掉,看一下是否可以编译能过.
如果不可以,那一定是结构体出问题了.如果结构体没有问题,你可以先释已注释的一个函数,比如create(&a) 看一下是否出错,如果错了,建议你把这个函数里面的程序放在main里运行一下看,如果在main出错那可能就是你的结构体数组问题了.如果在main里行,在调用函数里出错,那就是入口参数有问题,这时你可以将调用函数里的功能全行注释调,再查查有什么错误.
说得有些绕,希望你能听得懂.
老实说,你的程序应该是没有大问题的,你可以学得自己排错,在编写程序时,如果程序出错,你可以借这个机会很好的锻炼一下自己的排错能力.
我用的vs2008,
1、第4行没写完整,int a[maxsize];
2、开头是#include
3、开头加上using namespace std;
补充:
const int maxsize=10;
struct sqlist
{ int a[maxsize];
int length;
};
void creat(sqlist *l)
{ int i;
cout<<"请输入数组的长度length"<
for(i=0;i
{ cin>>l->a[i];cout<
void output(sqlist *h)
{ int i;
for(i=0;i
cout<
void insert(sqlist *m,int i,int k)
{ int j;
if(m->length>=maxsize-1)cout<<"error";
else for(j=m->length;j>=i+1;j--) m->a[j]=m->a[j-1]; //你的for里面的起始和判断都错了,注意看我改的,另外,加了一个else,否则上一次if判断出错这个for还是会执行
m->a[i]=k;
(m->length)++;
}
void main()
{ sqlist a;
creat(&a);
output(&a);
insert(&a,1,2);
output(&a);
return;
}
修改如上,测试正确,通过。错误的地方请看注释
其实你的 int a[maxsi
这里错了而已,我的也6.0的,你把他改成a[maxsize]就没蹉了