2014-01-21 58 views
1

我試圖讓一個小的測試程序來算多少次字母「A」出現在一個文本,而不使用字符串類型:輸出窗口不顯示帕斯卡(拉撒路編譯)

program PascalTest; 
uses WinCrt; 
var 
a:integer; 
ch:char; 
begin 
a:=0; 
writeln('Input text: '); 
read(ch); 
while ch <>'.' do // '.' marking the end of text ("eoln" could've been used instead)// 
    begin 
    case ch of 
    'A','a':a:=a+1; 
    end; 
    read(ch); 
    end; 
writeln(a); 
readln; 
readln; //forcing output window to stay open// 
end. 

我注意到如果我不在最後添加另一個'readln'語句,輸出窗口將不顯示結果(如果你願意,它會立即閃爍)。這隻發生在這個程序中。所有其他的只需要一個'readln '所以窗戶可以保持開放。有人可以向我解釋爲什麼在這種情況下需要另一個'readln'聲明?

回答

0

第一個readln結束while循環。請注意,您可以輸入很多'。'無循環退出。此外請注意,writeln(a)會延遲到您按<Enter>。第二個readln允許您查看輸出。

進行測試:取消註釋readln並查看是否可以輸入'。'來結束程序。

+0

我明白了,對於這些類型的程序(主要是使用字符輸入的程序),這是一個必需的程序?我沒有註釋這兩條readln語句。結果與只有一條readln相同。 – holyreality

+0

真的嗎?你可以離開循環沒有進入?如果您按照Marco的建議使用CRT,您可以用'ch:= readkey'替換'read(ch)'並立即迴應'。',但必須回顯輸入。 – gammatester

+0

感謝您解釋CRT。而且,我希望我不會誤解這裏的任何內容,但更確切地說,只要輸入一個readln,並且沒有readln語句, 「AAA」。並點擊,結果是一樣的:輸出窗口不顯示。我希望這個答案可以離開循環沒有。 – holyreality

0

WinCrt是一個無法使用CRT的設備,與單位GRAPH結合使用。

將單位Crt用於正常的控制檯輸出。

+1

我不明白Crt單元與我的問題有什麼關係。在這種情況下,我有相同的結果有或沒有Crt單位。 – holyreality

+0

我主要反應到「無輸出窗口顯示」。 IOW我認爲控制檯窗口沒有打開。 –