c语言运行停止工作
这种情况叫做
runtime
error
(运行时错误)。请按照结尾的五条提示找出代码中的错误,改正后就没问题了。
在
Windows
7
上这样提示:
在
Windows
XP
上这样提示:
runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。
比如说:
①
除以零
②数组越界:int a[3]; a[10000000]=10;
③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;
④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;
⑤数组开得太大,超出了栈的范围,造成
栈溢出
:int a[100000000]
Ⅱ C语言编程的时候出现“程序已停止工作”的原因有哪些
最常见的原因:程序发生了空指针调用。
如果你刚入门,请检查:
scanf("%d",&i); 有没有加上“&”号,scanf必须在变量前加“&”(取地址符)。
如果没有加&, scanf会把变量当作地址来用,而你的程序中又没有以变量为地址的变量,操作系统不允许程序读写程序规定范围以外的空间。出于安全起见,操作系统将其紧急中止。就发生了“***.exe已停止工作”的效果。
如果你正在学习数组,请检查:
数组是否越界。定义为int a[10]的数组,如果写a[10]=0; 相当于对a数组里的第11个元素赋值。事实上,a数组里并没有第11个元素。如果该元素的位置指向一个程序以外的内存,操作系统同样会果断将其终止。
如果你正在学习指针,请检查:
指针是否赋值;
在给指针赋值时,有没有在非指针变量前加取地址符“&”;
int * p = &i; //正确!
int * p = i; //错误!
这与在sccanf里没有加上“&”号的原因大致相同。
指针问题属于程序逻辑错误,很多时侯编译器只会给你一个警告。要注意警告发生的位置自己是否有把握。如果你多次编译或忽视编译警告而进行链接,编译器会认为你对这些警告是有把握的,完全地信任了你,也就没有警告了。
Ⅲ 一运行C语言程序 就提示程序已经停止工作
试试重新建立工程,编译以下空代码的程序:
intmain()
{
}
如果这个空代码编译运行不出问题,说明你的程序在调用scanf或者调用指针时候有内存上的错误出现。(仔细查看代码中的scanf和指针调用时的内存使用错误,也可以把所有用到指针和scanf的地方先屏蔽,找出哪个地方内存分配不对)。
如果这个空代码运行也出问题,说明是你编译器有问题。
Ⅳ C语言程序运行时停止工作
没看到你错误的情况,代码太长,懒得看了。
c程序死掉报个红叉叉的错误,99%都是数组越界或者指针没有初始化的滥用,看你的题目估计也是数组越界造成的问题。
你可以用调试的方法进去,重现错误,回到vc的时候,会定位到错误的地方,自己再看看应该就可以了
扫了一遍,感觉你的r数组没有定义值就开始引用了。
for(j=0;j<5;j++)
{
t=a[k][j];
a[k][j]=a[r[k]][j];
a[r[k]][j]=t;
}
这句话开始使用r,但是前面没有看到哪里给r赋值
Ⅳ c语言中一般运行后停止工作有哪些情况
只要编译通过,一般情况下C语言程序停止工作,多为输入输出格式不对,或计算陷入死循环。
1、输入输出格式不对。最常见的就是&符号,该有的没有,不该有的打了&符号。
例如:
int n;
scanf("%d",n);
n前少打了&符号。编译能通过,执行时就会出现停止工作的情况。
2、
个别计算陷入死循环的情况,例如:
int i,k;
i赋值;
k=关于i的表达式;
计算k值陷入死循环。