编译成功但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语言中一般运行后停止工作有哪些情况
只要编译通过,一般情况下C语言程序停止工作,多为输入输出格式不对,或计算陷入死循环。
1、输入输出格式不对。最常见的就是&符号,该有的没有,不该有的打了&符号。
例如:
int n;
scanf("%d",n);
n前少打了&符号。编译能通过,执行时就会出现停止工作的情况。
2、
个别计算陷入死循环的情况,例如:
int i,k;
i赋值;
k=关于i的表达式;
计算k值陷入死循环。
③ 用visualc++写c语言程序,编译通过,执行时软件停止工作,为什么
我认为是代码的问题。
我用的也是vc6,中文绿色版,Win7,64位的系统。从来没出现由于软件不兼容导致程序停止运行的问题。
用该VC6.0编过小程序,也编过一个程序几千行的代码,有出现过某某.exe已停止工作的问题。
从来都是代码的问题。
有可能是读写了非法内存。有可能是控件(比如窗口之类的),信号之类的。
中文版本并不妨事儿,没有中文路径就和英文的一样了。
(以上个人观点,仅供参考。)
这个时候就要用调试,来解决问题,只要调试运行到报错的位置,就可以知道是哪段代码有问题了。你用的是QT还是VC?如果是VC,Ctrl+F10是运行到光标处。F9是设置断点。
如果是QT,左边有个Debug按钮,就是那只虫,点击,即可。
④ C语言程序问题,编译成功可却不能运行,这是为什么
编译成功说明语法正确,不能运行说明方法错误。
⑤ 为什么C语言程序编译正确但不能执行
这哪是编译正确,这是有一个语法错误的意思,这样的程序是无法运行的。
最后一句的语法错了
应该是printf("%4d
%d\n",i,slect[i]);
双引号中间是格式控制字符串,用于控制输出的字符串以及变量的格式,
变量需要放在双引号外头,用逗号分隔。
⑥ C语言指针函数的问题,编译通过,但是执行程序却被终止。
fun中的指针datas连指向都没有,却用datas->a = a;和datas->b = b;给这指针的目标成员a、b赋值!datas这时还是野指针,它哪儿有a和b?肯定会运行终止的……你这个代码很好改:把函数名前的*删除,让函数返回结构体变量;再把datas前的*删除,让它成为一个Data型变量;主函数中把myData前的*删除,让它也成为一个结构体变量,把主函数中的printf中的两个->改成两个.就可以了。希望对你有帮助。
⑦ 为什么C语言程序编译正确但不能执行
这当然原因非常多,比如:编译器编译不够严格、程序有很大的风险等等,最简单的一个例子如下:
inta;
scanf("%d",a);
可以确定的一点是:一旦在运行中出现错误,大多是较为严重的错误,须引起重视,否则,一旦错误非常严重,必会导致许多严重的后果,如死机、卡屏甚至直接导致蓝屏。
⑧ 为什么C语言程序编译正确但不能执行
因为你的c没有初值,while循环无法进行。另外你的算法也有问题,while循环可改为while(m%n!=0),循环结束后最小公约数时n。