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值陷入死循環。