华为OD机试真题 新系统-8位LED控制器(C/C++/Py/Java/Js/Go)

张开发
2026/4/20 16:48:08 15 分钟阅读

分享文章

华为OD机试真题 新系统-8位LED控制器(C/C++/Py/Java/Js/Go)
8位LED控制器华为OD机试真题 华为OD上机考试真题 4月19号 100分题型华为OD机试真题目录点击查看: 华为OD机试真题题库目录机考题库 算法考点详解题目描述有一个8位LED控制器包含8个LED灯(编号0-7)初始状态全灭用8位二进制表示为:00000000。控制器可以接收以下三种指令:Lx:L表示点亮操作x表示LED的编号(0一7)操作得到的结果是:点亮第x个LED灯把状态设为1。Dx:D表示熄灭操作x表示LED的编号(0-7)操作得到的结果是:熄灭第x个LED灯把状态设为0。Tx:T表示切换操作x表示LED的编号(0-7)操作得到的结果是:切换第x个LED灯的状态若状态为0则变为1为1则变为0。现在给定一组指令字符串(0长度1000)按照顺序解析并执行所有的指令并返回最终8位二进制对应的整数值。例如:“L0L1L2T1“操作表示:点亮LED0点亮LED1点亮LED2切换LED1最终二进制00000101,应整数5。输入描述给定一组指令字符串(0长度1000)输出描述返回最终8位二进制对应的整数值用例1输入L0L1L2T1输出5题解思路模拟可以创建一个长度为8的数组bits代表每个位置的状态初始默认设置为0解析输入字符串对于不同指令处理如下Lx:设置bits[x] 1Dx:设置bits[x] 0Tx:设置bits[x] ^ 1, 异或运算如果当前为0变为11变成0处理完所有字符串之后使用二进制转十进制规律计算对应的整数值即可c#includeiostream #includevector #includestring #include utility #include sstream #includealgorithm #includecmath #includemap using namespace std; int controlInstruct(string instruct) { vectorint bits(8, 0); for (int i 0; i instruct.size(); i2) { char c instruct[i]; int pos instruct[i1] - 0; // 点亮变为1 if (c L) { bits[pos] 1; // 熄灭 } else if (c D) { bits[pos] 0; // 切换 } else if (c T){ bits[pos] ^ 1; } } int res 0; for (int i 7; i 0; i--) { res res * 2 bits[i]; } return res; } int main() { string input; getline(cin, input); int res controlInstruct(input); cout res; return 0; }JAVAimport java.util.*; public class Main { public static int controlInstruct(String instruct) { int[] bits new int[8]; for (int i 0; i instruct.length(); i 2) { char c instruct.charAt(i); int pos instruct.charAt(i 1) - 0; // 点亮变为1 if (c L) { bits[pos] 1; // 熄灭 } else if (c D) { bits[pos] 0; // 切换 } else if (c T) { bits[pos] ^ 1; } } int res 0; for (int i 7; i 0; i--) { res res * 2 bits[i]; } return res; } public static void main(String[] args) { Scanner sc new Scanner(System.in); String input sc.nextLine(); int res controlInstruct(input); System.out.println(res); } }PythonimportsysdefcontrolInstruct(instruct):bits[0]*8i0whileilen(instruct):cinstruct[i]posint(instruct[i1])# 点亮变为1ifcL:bits[pos]1# 熄灭elifcD:bits[pos]0# 切换elifcT:bits[pos]^1i2res0foriinrange(7,-1,-1):resres*2bits[i]returnresif__name____main__:input_strsys.stdin.readline().strip()print(controlInstruct(input_str))JavaScriptconstreadlinerequire(readline);functioncontrolInstruct(instruct){letbitsnewArray(8).fill(0);for(leti0;iinstruct.length;i2){letcinstruct[i];letposinstruct[i1].charCodeAt(0)-0.charCodeAt(0);// 点亮变为1if(cL){bits[pos]1;// 熄灭}elseif(cD){bits[pos]0;// 切换}elseif(cT){bits[pos]^1;}}letres0;for(leti7;i0;i--){resres*2bits[i];}returnres;}constrlreadline.createInterface({input:process.stdin,output:process.stdout});rl.on(line,(input){console.log(controlInstruct(input.trim()));});Gopackagemainimport(bufiofmtos)funccontrolInstruct(instructstring)int{bits:make([]int,8)fori:0;ilen(instruct);i2{c:instruct[i]pos:int(instruct[i1]-0)// 点亮变为1ifcL{bits[pos]1// 熄灭}elseifcD{bits[pos]0// 切换}elseifcT{bits[pos]^1}}res:0fori:7;i0;i--{resres*2bits[i]}returnres}funcmain(){reader:bufio.NewReader(os.Stdin)varinputstringfmt.Fscanln(reader,input)fmt.Println(controlInstruct(input))}C语言#includestdio.h#includestring.hintcontrolInstruct(char*instruct){intbits[8]{0};intlenstrlen(instruct);for(inti0;ilen;i2){charcinstruct[i];intposinstruct[i1]-0;// 点亮变为1if(cL){bits[pos]1;// 熄灭}elseif(cD){bits[pos]0;// 切换}elseif(cT){bits[pos]^1;}}intres0;for(inti7;i0;i--){resres*2bits[i];}returnres;}intmain(){charinput[1000];fgets(input,sizeof(input),stdin);// 去掉换行符input[strcspn(input,\n)]0;printf(%d\n,controlInstruct(input));return0;}

更多文章