家庭作业:帮助将伪代码转换为C代码

时间:2011-04-28 19:20:40

标签: c

我们正在阅读一份课程样本试卷,并希望C程序员将伪代码转换为C代码。

由于两个可能的选项看起来正确,我们之间存在分歧。 (我不是程序员,也不是我的同事)

伪代码是:

“如果我们在缓冲区变量中写入200个字符,则堆栈应该停止,因为它不能再容纳任何数据。”

可能的答案是:

  1. 如果(i> = 200)则退出
  2. 如果(i> 200)则退出
  3. 如果(i <200)则退出
  4. 如果(i <= 200)则退出
  5. 我们知道答案不是3和4。

    我相信答案是“2”(如果已写入200个字符;结束程序),但我的同事认为正确答案为“1”(如果已写入200个或更多字符;结束程序)。

    请告知正确答案是什么。

8 个答案:

答案 0 :(得分:4)

我在伪代码中看不到任何“200或更多”或“超过200”。也许正确的答案是if (i == 200) then exit

答案 1 :(得分:2)

假装你是电脑。每次向缓冲区写入一个字符时,都会增加i

假设您从0开始,这在C中是正常的,在您编写单个字符后,i将为1.在第二个字符后,i为2.外推。

答案 2 :(得分:1)

看起来像“If(i&gt; = 200)然后退出”给我。

答案 3 :(得分:1)

在C代码中,尖括号意味着与数学完全相同:
< = 小于
> = 大于

如果您添加=符号,则更小/更大或相等

如果i是写入堆栈的字符数,则i> = 200( i大于或等于200 )是您的解决方案。

答案 4 :(得分:1)

没有答案实际上是C.你正在将一个语句翻译成psudo代码(抱歉,我知道它的语法,但仍有区别)。在任何情况下,由于它的状态不超过200,我会投票给1.如果(i> = 200)然后退出自己,因为当你达到200时它会包含它。

答案 5 :(得分:1)

“如果我们在缓冲区变量中写入200个字符,则堆栈应该停止,因为它不能再容纳任何数据。”

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

这就是原因。

您的伪代码明确指出,如果写入200个字符,请退出。

如果答案是2:只有在写完201个字符后才会退出(自201> 200以来)。

答案 6 :(得分: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

答案 7 :(得分:0)

我投票支持1.if(i> = 200)因为这是你的规范所说的。 C没有'then'关键字,它应该是'exit(0);'而不只是'退出'。

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