A-Level计算机科学Pseudocode题目计数器使用逻辑及答案正误咨询
伪代码问题解答
标准答案counter逻辑说明
你对标准答案的疑问主要来自数组存储结构的差异:
- 标准答案没有使用二维数组存储玩家数据,而是用两个并行的一维数组分别存储属性:
player(counter)存储第counter位玩家的队伍编号,取值固定为0(蓝队)或1(红队);score(counter)存储第counter位玩家的对应得分。 - 两个数组下标完全对应,同一个counter值指向的是同一个玩家的不同属性,因此不需要二维双下标取值,counter无论增长到多大,
player(counter)的取值永远只有0或1,只会对应加到蓝队或红队总分,不会出现归属异常。
你的伪代码可修正问题
你的整体逻辑框架是正确的,但存在几处硬伤需要调整:
- 变量大小写不匹配:初始定义的变量为
blue_score、red_score,但分支赋值时写为blue_Score、red_Score,大小写敏感的运行环境会触发变量未定义错误。 - 胜负判定逻辑颠倒:现有代码
if red_score > blue_score THEN OUTPUT 'Blue team'逻辑错误,红队得分更高的情况下获胜方应为红队。 - 输出变量未定义:存储最高分的时候你将分数和玩家名共同赋值给
red_highscore、blue_highscore,但后续输出时调用了未定义的red_player(player_name)、blue_player(player_name),无法正确输出最高分获得者。你可以单独定义red_highplayer、blue_highplayer变量存储对应最高分玩家姓名,输出时直接调用这两个变量即可。 - (可选优化)队伍判定可以增加严谨性:当前
ELSE分支默认非0即红队逻辑成立,若要避免异常值干扰,可以补充ELSE IF player_score[counter][0] == 1 THEN的明确判断。
内容的提问来源于stack exchange,提问作者abcdefg
相关产品推荐
相关产品推荐

