我们正在阅读一份课程样本试卷,并希望C程序员将伪代码转换为C代码。
由于两个可能的选项看起来正确,我们之间存在分歧。 (我不是程序员,也不是我的同事)
伪代码是:
“如果我们在缓冲区变量中写入200个字符,则堆栈应该停止,因为它不能再容纳任何数据。”
可能的答案是:
我们知道答案不是3和4。
我相信答案是“2”(如果已写入200个字符;结束程序),但我的同事认为正确答案为“1”(如果已写入200个或更多字符;结束程序)。
请告知正确答案是什么。
答案 0 :(得分:4)
我在伪代码中看不到任何“200或更多”或“超过200”。也许正确的答案是if (i == 200) then exit
。
答案 1 :(得分:2)
假装你是电脑。每次向缓冲区写入一个字符时,都会增加i
。
假设您从0开始,这在C中是正常的,在您编写单个字符后,i
将为1.在第二个字符后,i
为2.外推。
答案 2 :(得分:1)
看起来像“If(i> = 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);
}