2011-04-28 257 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); 
}