c++i问题,很急!这个程序怎么老是编译,希望大虾们来给我指点

2024-12-14 00:34:36
推荐回答(3个)
回答1:

看了一下你的程序,思路与大体上的语法应该是没有错的.
我现在手头上没有VS,我无法帮你测试.但我凭着经验,大概告诉你一下你排错的方法吧.

首先,你先把creat(&a);
output(&a);
insert(&a,1,2);
output(&a); 全部注释掉,看一下是否可以编译能过.
如果不可以,那一定是结构体出问题了.如果结构体没有问题,你可以先释已注释的一个函数,比如create(&a) 看一下是否出错,如果错了,建议你把这个函数里面的程序放在main里运行一下看,如果在main出错那可能就是你的结构体数组问题了.如果在main里行,在调用函数里出错,那就是入口参数有问题,这时你可以将调用函数里的功能全行注释调,再查查有什么错误.

说得有些绕,希望你能听得懂.
老实说,你的程序应该是没有大问题的,你可以学得自己排错,在编写程序时,如果程序出错,你可以借这个机会很好的锻炼一下自己的排错能力.

回答2:

我用的vs2008,
1、第4行没写完整,int a[maxsize];
2、开头是#include ,没有.h
3、开头加上using namespace std;
补充:
const int maxsize=10;
struct sqlist
{ int a[maxsize];
int length;
};
void creat(sqlist *l)
{ int i;
cout<<"请输入数组的长度length"<cin>>l->length;
for(i=0;ilength;i++)
{ cin>>l->a[i];cout<}
void output(sqlist *h)
{ int i;
for(i=0;ilength;i++)
cout<a[i]<}
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;
}
修改如上,测试正确,通过。错误的地方请看注释

回答3:

其实你的 int a[maxsi
这里错了而已,我的也6.0的,你把他改成a[maxsize]就没蹉了