为什么总是说程序产生一个访问违例???
答案:2 悬赏:60
解决时间 2021-02-21 16:16
- 提问者网友:长安小才冯
- 2021-02-20 20:19
我的程序:
#include
int a[100],n;
int main()
{
FILE* file = fopen("quick.txt", "w");
void quick(int s,int t);
int i;
fprintf(file,"123");
scanf ("%d",&n);
for(i=1;i<=n;i++)
scanf ("%d",&a[i]);
quick(1,n);
for(i=1;i<=n;i++)
fprintf(file,"%d",a[i]);
fclose(file);
return(0);
}
void quick(int s,int t)
{
int i,j,k,ii;
i=s;
j=t;
ii=0;
while (i!=j)
{
if (a[i]>a[j])
{
k=a[i];a[i]=a[j];a[j]=k;
if (ii==0) {i++;ii=1;}else {j--;ii=0;};
}
else if (ii==0) j--; else i++;
}
if (i if (j>s) quick(s,j);
}
运行总是出不了结果,编译能过,但分行运行后就说“程序产生一个访问违例”
怎么回事啊???急死我了%>_<%求高手解答。。。~~~
最佳答案
- 二级知识专家网友:傲娇菇凉
- 2021-02-20 20:55
你的temp数组没有初始化为0,if(!strcmp(temp,keywords[m]))可能出现字符串访问出界。
执行temp[w] = excuse[i][j];时,w的值是不确定的,所以容易出现访问出界。
解决办法:
在 for(i = 0;i < e;i++)
{
int label = 0;
后面初始化temp数组为0,初始化w为0.
全部回答
- 1楼网友:狠傷凤凰
- 2021-02-20 22:09
for(i=1;i<=n;i++){
student student[i];
如果要定义 数组的话, 需要写到循环 前面, 你这样写 每次循环都 在 定义数组。。 会有很多错的。。 还有,声明数组 [i] i需要是常量 不能是变量。。
解决:
循环前面声明一个足够大的数组,如 student student[1024];
我要举报
大家都在看
推荐资讯