Pascal投票单代码翻译与技术问询:补全并规范代码实现
补全并汉化的Pascal投票单程序
我帮你把这段不完整的Pascal投票单代码补全、汉化并规范了逻辑,先梳理下原代码里的问题:第二个选区ID输入循环误用了变量i、IF语句语法错误,还缺失了核心的选区ID匹配逻辑和循环输入终止逻辑。下面是修复后的完整代码:
PROGRAM VOTING_SLIP (INPUT,OUTPUT); CONST Array_size = 20; // 定义数组最大容量 VAR i, j : Integer; Found : Boolean; // 标记是否找到匹配的选区 full_name, District_ID, Matched_District : string; DistrictArea : Array[1..Array_size] of string; // 存储选区名称数组 DistrictID : Array[1..Array_size] of string; // 存储选区ID数组 BEGIN // 第一步:初始化选区名称数组 WRITELN('请输入20个选区的名称:'); FOR i := 1 to Array_size DO READLN(DistrictArea[i]); // 第二步:初始化选区ID数组 WRITELN('请输入对应20个选区的ID:'); FOR j := 1 to Array_size DO READLN(DistrictID[j]); // 修复原代码的变量错误:将i改为j // 第三步:循环处理选民投票信息,输入"END"终止程序 WRITELN('请输入选民姓名(输入"END"结束程序):'); READLN(full_name); WHILE full_name <> 'END' DO BEGIN // 输入选民所属选区ID WRITELN('请输入该选民的选区ID:'); READLN(District_ID); // 查找匹配的选区名称 Found := False; Matched_District := ''; FOR i := 1 to Array_size DO BEGIN IF DistrictID[i] = District_ID THEN BEGIN Matched_District := DistrictArea[i]; Found := True; BREAK; // 找到匹配项后终止循环 END; END; // 输出投票单信息 WRITELN('==================== 投票单 ===================='); WRITELN('选民姓名:', full_name); IF Found THEN WRITELN('所属选区:', Matched_District, ' (ID: ', District_ID, ')') ELSE WRITELN('警告:未找到匹配的选区ID!'); WRITELN('=============================================='); // 提示输入下一位选民信息 WRITELN('请输入下一位选民姓名(输入"END"结束程序):'); READLN(full_name); END; WRITELN('程序已结束,感谢使用!'); END.
关键逻辑说明
- 数组初始化:通过两次循环分别录入20个选区的名称和对应ID,确保数据一一对应;
- 循环输入终止:使用
WHILE循环替代原错误的IF语句,支持连续录入选民信息,直到输入END才终止; - 选区匹配:遍历选区ID数组,找到对应名称后标记为
Found并终止循环,避免无效遍历; - 错误提示:如果输入的选区ID不存在,会输出警告信息,提升程序健壮性。
内容的提问来源于stack exchange,提问作者Takeem Lowe
相关产品推荐
相关产品推荐

