2011-04-28 254 views
0

我們正在通過一個課程的示例測試文件,希望得到C程序員將僞代碼轉換爲C代碼的幫助。作業:將轉換後的僞代碼轉換爲C代碼

由於兩個可能的選項看起來正確,我們有分歧。 (我不是一個程序員,也不是我的同事)

的僞代碼爲:

「如果我們寫200個字符的緩衝區變量,堆棧應該停止,因爲它無法容納更多的數據」

可能的答案是:

  1. 如果(ⅰ> = 200),然後退出
  2. 如果(I> 200),然後退出
  3. 如果(ⅰ< 200),然後退出
  4. 如果(我< = 200),然後退出

我們知道答案是不是3和4

我相信答案是「2」(如果已經寫入了200個字符;結束程序),但是我的同事們認爲正確答案是「1」(如果有200個或更多字符被寫入;結束程序)。

請告知正確的答案是什麼。

+3

C根本沒有'then'。他們*全部*不正確。 – geoffspear 2011-04-28 19:24:29

+0

在我看來,它會是(1),但我寧願說沒有提供足夠的信息。 – 2011-04-28 19:27:02

+0

沒有可能的答案是正確的,因爲它們都不是C.沒有「then」關鍵字,沒有「exit」關鍵字。它仍然是一個僞代碼。 – 2011-04-28 19:28:04

回答

4

我在僞代碼中看不到任何「200或更多」或「超過200」。也許正確的答案是if (i == 200) then exit

2

假裝你是電腦。每次向緩衝區寫入字符時,都會增加i

假設你從0開始,這在C中是正常的,寫完單個字符之後,i應該是1.在第二個字符之後,i是2.外插。

+0

我想他/她將不得不假裝成中央處理器單元而不是程序:) – 2011-04-28 19:29:17

+0

@Vlad:Touché;固定。 – nmichaels 2011-04-28 19:32:21

1

看起來像「如果(i> = 200)然後退出」給我。

0

這取決於如何編制i以及如何設置循環。如果它被索引爲0(可能),並且你有一個緩衝區(buf),你可以這樣做。

data_type buf[200]; 
int i; 
for (i = 0; i < 200; i++) { 
    // write data to buffer 
    buf[i] = data; 
} 

因此,當i變爲200,退出循環(和條件是i < 200)。 data_type是您在緩衝區中使用的任何數據。如果i從1開始索引,那麼您的循環條件將爲i <= 200

1

在C代碼,角鋼支架裝置完全一樣在數學:
< = 小於
> = 大於

而如果添加=符號,將得到更小/更大或等於

如果i是寫入堆棧的字符數,則i> = 200(i大於或等於200)是您的解決方案。

1

沒有答案實際上是C.您正在將語句翻譯爲psudo代碼(抱歉,我知道它的語義,但仍有區別)。在任何情況下,因爲它不超過200我會投1。如果(i> = 200),然後退出我自己,因爲它說明當你打200包括它。

1

「如果我們向緩衝區變量寫入了200個字符,堆棧應該停止,因爲它不能再容納任何數據。」

正確答案是1:如果(i> = 200)則退出。

這是爲什麼。

您的僞代碼特別指出,如果寫入200個字符,則退出。

如果答案是2:它只會在寫入201個字符後(201> 200以後)纔會退出。

0

我投給1.if(i> = 200),因爲這是你的規範說的。 C沒有'then'關鍵字,它應該是'exit(0);'而不僅僅是「退出」。

if(i >= 200){ 
    exit(0); 
}