如題,本地測試明明沒問題,為什么提交會運行錯誤呢?
通常來說,運行錯誤是由于運行過程中出現(xiàn)了,如數(shù)組越界、野指針、除0等問題。因此本地測試沒問題,僅僅是常規(guī)數(shù)據(jù)可以,但提交后,OJ后臺的數(shù)據(jù)測試過程中出現(xiàn)了如上所述的問題。
比如,某字符串相關(guān)的問題,說輸入一個字符串,要求逆序輸出,輸入的長度不超過200,可你的代碼中數(shù)組定義語句如下:
char str[50];
而樣例給的數(shù)據(jù)是:
dotcpp.com
輸出:
moc.ppctod
顯然你的程序樣例測試一點問題沒有,完全放的下,可后臺的數(shù)據(jù)很可能會出現(xiàn)長度199甚至200長的“邊界值”數(shù)據(jù)的,你的程序可想而知,一定會放不下而溢出崩潰的,這就是原因所在。
其余除0錯誤也類似,我們知道0不能作除數(shù),但事實上是,OJ后臺一些比較特殊的數(shù)據(jù)在測試運行時,我們不知道在哪一個環(huán)節(jié),某一個值可能被更改,從而莫名其妙的出現(xiàn)了除以0的情況,造成運行錯誤。這個需要大家自行排查了
以上,希望大家觸類旁通
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程