c++在执行文件的时候提示.exe已停止工作(这个程序有时候是可以执行的) 怎么解决呀

如题所述


*num=i-1;这里指针num还没有赋值就使用,编译时显示warning没注意么
warning C4700: local variable 'num' used without having been initialized

把num改成int型就好了,注意最后显示的时候应该是y<=num+1,因为你插入了一个元素

#include<stdio.h>
#define max 10
#define true 1
#define flase 0
int insertq(int list[],int num,int i,int x)
{
int j;
if((i<0)||(i>num+1))
{
printf("i值不合法");
return(false);
}
if(num>=max-1)
{
printf("表已满无法再插入");
return(false);
}
for(j=num+1;j>i;j--)
list[j]=list[j-1];
list[i]=x;
num++;
return(true);
}
void main()
{
int i=0,x,num,ch;
int list[max];
printf("Input list:");
while((ch=getchar())!='\n')
{
list[i]=ch;
i++;
}
num=i-1;
printf("insert NO.i");
scanf("%d",&i);
getchar();
printf("insert data:");
x=getchar();
getchar();
insertq(list,num,i,x);
for(int y=0;y<=num+1;y++)
printf("list[%d]=%c\t",y,list[y]);
printf("\n");
}

编译时没有错误只说明你的程序语法正确,未必逻辑正确,还可能发生运行时错误。运行时错误是一个错误的类型,在程序的执行发生。运行时错误表明该方案的设计者或有错误的预期的问题,但改变不了。如果该方案未能要求在执行过程中的有关职能,将有运行时错误弹出您的计算机上。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-25
代码的问题吧。数组越界什么的。
第2个回答  2011-09-24
这个是你程序本身的问题,可能是内存溢出,或者是地址冲突什么的,总之一句话,看你的程序
相似回答