ZOJ Haiku Review 段錯誤!估計是指針,不知道哪裡錯了?

題目是

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=713

我的代碼:

同樣a a a a a/a a a a a a a/a a a a a輸入進去,每一遍都不一樣,而且不一樣的很有規律,不知道哪裡錯了,編譯通過的,OJ說段錯誤,表示找不到啊,誰能找到錯誤,並給我總結一下,謝謝了

這裡有其他論壇上問的源碼ZOJ 1713 一直報錯


謝邀, 我說話不好聽,你看了之後肯定也會不開心,但如果能多少給你點幫助,那我也算沒白打那麼多字。

這是一個爛問題。在知乎,問題並不屬於提問者,而是屬於大家的,既然屬於大家,那麼問題就必須對除了提問者之外的其它人也有意義和價值。而提問者提的這個問題僅僅只是一道習題而已。首先,絕大部分人不需要做這道習題,就算是同樣做這道習題的人,也未必會犯提問者同樣的錯誤。因此,這個問題對於其它人毫無意義。某個知名用戶遇到這種對於他人毫無意義的問題,往往會要求提問者付錢,不是真的圖財,僅僅是表明一種態度。如果提問者希望能在知乎上獲得有效答案的話,至少應該先將自己的問題范化一下,變成一個更一般性,對其它人也有意義和價值的問題。

提問的方式也非常非常令人反感。提問者將源碼全文截圖,以圖片的形式貼上來提問,那麼,就算有熱心人願意為你解答,你是指望他們手工將你程序全文錄入到自己電腦里,再為你編譯調試呢?還是指望他們都是人肉編譯器,直接閱讀你圖片上的代碼,就能在腦子裡把程序編譯出來在腦子裡單步調試呢?這種有求於人的時候還主動為別人增添麻煩的行為,是非常非常不禮貌的,也難怪沒有人願意回答這個問題。

該批評的都批評過了,我還是針對這個問題本身回答幾句吧。

首先,提問者審題就有問題。題目里說了,輸入的每個物理行是一個 Haiku,行內用「/」分隔 Haiku 的三個邏輯行,也就是說,Haiku 里的「行」並不是真正的換行,而是「/」分隔的三個部分。提問者直接從輸入文件里讀三個物理行進行解析,這一開始就錯了。

其次,提問者的思路非常混亂。程序的本質是你告訴計算機該做什麼事,如果你自己就沒有一個清晰的思路的話,計算機怎麼可能為你得出正確的結果?題目的定義非常簡單——連續出現的多個 aeiouy 算作一個音節,要求你統計一個邏輯行里有多少個音節,僅此而已。逐個字元掃描過去,放到一個極其簡單的 state-machine 里過一遍就能出結果了。可提問者的幾個循環體里寫的內容可以說是莫名其妙,對於數組邊界的處理也是一塌糊塗,到處出現下標越界,這一點都不奇怪。

最後,提問者的編碼風格也非常糟糕,縮進參差不齊,變數命名晦澀不清,排版醜陋,代碼重複且冗長,明顯沒有接受過正規的編碼訓練。在基本功尚不牢靠的時候,不要想著一口吃成個胖子,那樣除了平添挫敗感之外毫無別的用處,對於水平的提高一點幫助也沒有,踏踏實實先從基本功練起吧。

總之,希望提問者再接再厲,先努力把 C 語言學會,至少先入門,然後再來考慮別的問題。加油!


推薦閱讀:

怎麼學習C語言指針?
如何理解c/c++語言的聲明以及類型?

TAG:編程語言 | 編程 | C編程語言 | CC |