蓝桥杯驱动程序带注释--key
蓝桥杯java历年真题及答案整理(共129道题目及答案)
![蓝桥杯java历年真题及答案整理(共129道题目及答案)](https://img.taocdn.com/s3/m/dbc7bc18ba1aa8114431d922.png)
1.字符排序算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。
如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
package Question1_9;import java.util.Scanner;import java.util.Vector;public class Question1 {public static long count=0;private void fullPermutation(Vector<Character>sourse, Vector<Character> result) {if(sourse.size()==0){for (int i = 0; i < result.size(); i++) {System.out.print(result.elementAt(i));}System.out.print("\n");count++;return;}for (int i = 0; i < sourse.size(); i++) {Vector<Character>tsourse=new Vector<Character>(sourse);Vector<Character>tresult=new Vector<Character>(result);tresult.add(sourse.elementAt(i));tsourse.remove(i);new Question1().fullPermutation(tsourse, tresult);}}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int n=scanner.nextInt();Vector<Character> sourse=new Vector<Character>();Vector<Character> result=new Vector<Character>();for (int i = 0; i < n; i++) {sourse.add((char)('A'+i));}new Question1().fullPermutation(sourse, result);System.out.println(Question1.count);}}方法二:import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.List;import java.util.Scanner;import java.util.Set;public class Demo03 {// 去掉重复元素,放入lispublic static void removeDuplicate(String s,Set<Character> lis){for(char x:s.toCharArray()){lis.add(x);}}// 为方便操作将sets 转lispublic static void convert(List<Character> lis,Set<Character> sets){Iterator<Character> iter = sets.iterator();while(iter.hasNext()){lis.add(iter.next());}}// 检测符合条件的元素组合public static void check(Set<Character> sets){List<Character> lis = new ArrayList<Character>();convert(lis,sets); // 为方便操作将sets 转lisStringBuffer sb = new StringBuffer();for(int i=0;i<lis.size()-2;i++){for(int j=i+1;j+1<lis.size();j++){ // 向后添加两位,所以j+1<lis.size() for(int k=j+1;k<lis.size();k++){sb.append(lis.get(i));sb.append(lis.get(j));sb.append(lis.get(k));System.out.println(sb); // 输出组合sb.setLength(0); // 清空}}}}public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("输入串(不大于30个字符)。
第十二届蓝桥杯Scratch省赛高级组试题
![第十二届蓝桥杯Scratch省赛高级组试题](https://img.taocdn.com/s3/m/4e5922b005a1b0717fd5360cba1aa81145318f55.png)
第一题编程实现:电灯开关,通过开关键控制房间灯光的打开与关闭(开关为兔子造型)。
具体要求:1)点击绿旗,角色与背景如下图所示呈现在对应位置;2)按下开关键房间灯光熄灭;3)再次按下开关键房间灯光亮起。
评判标准:10分:满足要求1);15分:满足要求2);15分:满足要求3)。
第二题编程实现:飞翔的小猫。
视频具体要求:1)点击绿旗,小猫出现在舞台的中心区域;2)舞台背景向左侧移动,同时树木也向左侧移动;3)使用克隆的方式在舞台上时刻呈现不少于两棵树木;4)树木在移动时可以遮挡住小猫。
评判标准:5分:满足要求1);20分:满足要求2);15分:满足要求3);10分:满足要求4)。
第三题编程实现:王子被女巫的魔法送到了超时空,他需要找到两把钥匙才能回到自己的世界。
具体要求:1)点击绿旗,出现对应的角色与背景;2)王子跟随鼠标指针移动;3)两把钥匙可以在舞台内随机移动(要求看到移动过程);4)当王子碰到钥匙后,点击鼠标可以获取钥匙,钥匙从舞台中消失;5)当王子拿到两把钥匙后,王子回到他的世界。
评判标准:7分:满足要求1);15分:满足要求2);15分:满足要求3);15分:满足要求4);8分:满足要求5)。
第四题编程实现:投篮(力量槽:黄色条近投区域,绿色条投进区域,红色条投过区域)。
视频具体要求:1)点击绿旗,角色与背景如下图所示呈现在对应位置;2)按下空格键力量槽红色逐渐增加(范围不能超过Min-Max的范围);3)当力量槽到达预计位置时松开空格键,篮球按照抛物线轨迹投出;4)篮球落入篮筐分数加1力量槽变空,掉落在舞台边缘的篮球重新回到准备区;5)篮球没有投进篮筐力量槽变空,分数不增加,掉落在舞台边缘后重新回到准备区;6)力量槽:黄色条近投区域,绿色条投进区域,红色条投过区域;7)程序重复执行,并且以上步骤全部正确。
评判标准:5分:满足要求1);5分:满足要求2);15分:满足要求3);15分:满足要求4);15分:满足要求5);15分:满足要求6);10分:满足要求7)。
蓝桥杯知识点总结
![蓝桥杯知识点总结](https://img.taocdn.com/s3/m/dcf05e3ef56527d3240c844769eae009581ba239.png)
蓝桥杯知识点总结1. 编程语言基础对于蓝桥杯的选手来说,熟练掌握一种编程语言是至关重要的。
通常而言,C/C++、Java、Python是比较常用的编程语言。
学习者需要熟悉语言的基本语法、数据类型、控制语句等,以及学会使用各种编程工具进行程序的编写、编译和调试。
2. 算法与数据结构算法和数据结构是蓝桥杯竞赛的核心内容。
学习者需要了解各种经典的算法,如排序算法(冒泡排序、快速排序等)、查找算法(二分查找、哈希查找等)、图论算法(最短路径、最小生成树等)等,同时还需要熟悉各种常见的数据结构,如数组、链表、栈、队列、树、图等。
此外,还需要掌握一些高级算法,比如动态规划、贪心算法、回溯算法等。
3. 计算机基础知识对于参加蓝桥杯的选手来说,需要了解一些计算机的基础知识,如操作系统、计算机网络、数据库等。
这些知识对于解决一些复杂的问题是至关重要的。
4. 程序设计与编程能力蓝桥杯竞赛考察能够解决实际问题的能力,选手需要具备较强的程序设计与编程能力。
这包括对问题的分析、设计合适的算法和数据结构、实现有效的程序以及进行有效的调试。
5. 数学知识数学知识也是蓝桥杯竞赛的一部分,尤其是一些与算法和数据结构相关的数学知识,如组合数学、概率论、离散数学等。
因此,学习者需要掌握一定的数学功底,以便在解决问题的过程中能够运用数学知识。
6. 英语能力蓝桥杯竞赛通常采用英文的题目,因此选手需要具备一定的英语能力,能够读懂题目并理解题目要求。
同时,英语能力也有助于学习者获取更多的学习资料和资源。
7. 实战练习最后,参加蓝桥杯竞赛的学习者需要进行大量的实战练习,以提高自己的编程能力和解题能力。
可以通过参加在线编程训练、刷题等方式来进行练习。
总之,蓝桥杯竞赛对于参赛者来说是一个很好的锻炼机会,但同时也需要具备一定的基础知识和能力。
希望学习者通过努力学习和实战练习,取得满意的成绩。
第十四届蓝桥杯大赛软件赛知识点大纲
![第十四届蓝桥杯大赛软件赛知识点大纲](https://img.taocdn.com/s3/m/a78a502bdcccda38376baf1ffc4ffe473368fda4.png)
第十四届蓝桥杯大赛软件赛知识点大纲全文共四篇示例,供读者参考第一篇示例:第十四届蓝桥杯大赛软件赛知识点大纲一、基础知识1. 数据结构:数组、链表、栈、队列、树、图等2. 算法基础:排序算法、查找算法、递归算法、动态规划等3. 编程语言:C/C++、Java、Python等4. 网络基础:TCP/IP协议、HTTP协议、Socket编程等5. 操作系统:进程管理、文件系统、内存管理等二、编程语言及相关工具1. C/C++语言:基本语法、指针、内存管理等2. Java语言:面向对象、多线程、异常处理等3. Python语言:简洁易读、动态类型、库丰富等4. 编程工具:IDE、调试器、版本控制工具等三、数据结构与算法1. 排序算法:冒泡排序、快速排序、归并排序等2. 查找算法:二分查找、哈希查找、广度优先搜索、深度优先搜索等3. 动态规划:背包问题、最长公共子序列问题、最短路径问题等四、数据库及SQL语言1. 关系型数据库:MySQL、SQL Server、Oracle等2. 非关系型数据库:MongoDB、Redis、Memcached等3. 数据库设计:ER图、范式理论、索引优化等4. SQL语言:增删改查、连接查询、子查询等五、前端技术1. HTML/CSS:页面结构、样式设计等2. JavaScript:DOM操作、事件处理、Ajax等3. 前端框架:React、Vue、Angular等4. 前端工具:Webpack、Babel、Less等六、网络编程与安全1. 网络编程:Socket编程、HTTP协议、RESTful接口等2. 网络安全:数据加密、数据传输安全、防火墙、DDoS攻击等3. 网络调试工具:Wireshark、Fiddler、Tcpdump等七、软件开发流程1. 需求分析:功能需求、非功能需求、用户故事等2. 设计阶段:UML建模、设计模式、架构设计等3. 编码实现:代码规范、代码重构、单元测试等4. 测试阶段:功能测试、性能测试、安全测试等5. 上线运维:部署、监控、维护等以上是第十四届蓝桥杯大赛软件赛知识点大纲的概要内容,希望对参赛选手有所帮助。
第十四届蓝桥杯嵌入式程序题详解
![第十四届蓝桥杯嵌入式程序题详解](https://img.taocdn.com/s3/m/52db8869ae45b307e87101f69e3143323968f5ad.png)
【第一部分:题目介绍】1. 蓝桥杯是我国最大规模的计算机科学和信息技术大赛之一,该比赛分为省赛和国赛两个阶段,涵盖了算法设计、程序设计、嵌入式开发等多个领域。
2. 第十四届蓝桥杯嵌入式程序题是该比赛中的一个重要内容,在这一部分中,将详细介绍该题目的内容和要求,帮助参赛选手更好地理解和准备。
【第二部分:题目内容】3. 第十四届蓝桥杯嵌入式程序题是关于自动售货机的设计和实现。
4. 参赛选手需要设计并实现一个基于嵌入式系统的自动售货机,该售货机需要具备以下功能:4.1 实现货物的自动识别和分类;4.2 支持多种支付方式,如投币、刷卡、移动支付等;4.3 实现对售货机内货物的库存管理和货物补充。
【第三部分:题目要求】5. 题目要求参赛选手在规定的时间内完成自动售货机的设计和实现,要求具体如下:5.1 设备要求:嵌入式处理器、货物传感器、支付模块等;5.2 功能要求:自动检测、识别和分类货物、接收并处理用户支付请求、实现货物的库存管理等;5.3 实现要求:使用指定的开发语言或开发环境,保证系统的稳定性和可靠性。
【第四部分:解题思路】6. 参赛选手在解决这一题目时,首先需要明确整个系统的架构和功能模块。
7. 然后需要设计合适的算法和程序逻辑,实现货物识别分类、支付处理等功能。
8. 最后需要进行系统集成和测试,确保整个系统的稳定性和可靠性。
【第五部分:相关知识点】9. 参赛选手在解决这一题目时需要掌握的相关知识点包括嵌入式系统设计、传感器技术、支付系统设计、系统集成和测试等。
【第六部分:经验共享】10. 通过对该题目的分析和解释,希望可以帮助参赛选手更好地理解和准备这一竞赛题目。
【第七部分:结语】11. 在参加第十四届蓝桥杯嵌入式程序题的比赛中,需要参赛选手充分发挥自己的想象力和创造力,不仅要掌握相关知识和技术,还需要具备较强的实际动手能力,才能在这一竞赛中取得好成绩。
12. 希望参赛选手通过自己的努力和准备,取得优异的成绩,向更高的道路上迈进。
蓝桥杯scratch集训第八课 有人动了我的鼠标
![蓝桥杯scratch集训第八课 有人动了我的鼠标](https://img.taocdn.com/s3/m/64189a9fcf84b9d528ea7ad1.png)
936008 难度一第八课有人动了我的鼠标本课目标软件操作1、熟悉Scratch 软件的常用操作方法。
2、掌握Scratch 程序调试的方法。
积木应用1、掌握运动积木的用法。
包括:“移到xy”、“右旋”、“面向方向”、“面向鼠标指针”、“移到鼠标指针”积木。
2、掌握外观积木的用法。
包括:“说2 秒”积木。
3、掌握变量积木的用法。
包括:“变量”积木。
4、掌握事件积木的用法。
包括:“当绿旗被点击”、“当角色被点击时”积木。
5、掌握控制积木的用法。
包括:“等待1 秒”、“重复执行”积木。
6、熟悉侦测积木的用法。
包括:“鼠标的x 坐标”、“鼠标的y 坐标”、“碰到鼠标指针”、“到鼠标指针的距离”积木。
其他知识1、了解“鼠标指针”的知识。
2、了解“分支结构”的概念。
样例介绍样例名称本样例名称:有人动了我的鼠标。
故事情节小猫安静地站在舞台上,观察有没有人动我的鼠标。
一旦有人左右移动了鼠标,小猫就立即说“x 有变化”,否则就说“x 没有变化”。
功能及考点要求1、程序开始时,新建一个变量x 用于保存鼠标当前位置的x 坐标值。
2、通过循环侦测鼠标的x 坐标值是否发生变化,如果有变化就说“x 有变化”,否则就说“x 没有变化”。
角色素材清单本样例需要的角色素材清单如下表所示:表格8-1 角色素材清单序号角色名称特征描述数量1舞台背景默认背景 1 幅2小猫默认角色 1 个预备知识鼠标指针鼠标指针就是那个可以在舞台上到处移动的小箭头。
鼠标指针像角色,他在舞台上也有一个坐标值,用(x,y)表示。
还记得我们在前面的课程用鼠标指针来帮助确定小猫、蝴蝶的位置么?鼠标指针是不能编程的,但是我们可以通过侦测积木来获取鼠标指针的位置坐标,也可以计算出角色到鼠标指针的距离,还可以判断鼠标指针是否点击了角色。
分支结构分支结构是程序设计中三大基础结构之一。
主要是用在需要进行逻辑判断的情况下,控制程序执行的路径。
就像铁路上的分道闸,可以控制火车走这条线路,也可以控制火车走那条线路。
第1-7届蓝桥杯决赛试题及答案
![第1-7届蓝桥杯决赛试题及答案](https://img.taocdn.com/s3/m/6f48dff06294dd88d0d26bb3.png)
第1-7届蓝桥杯决赛试题及答案2011年第1届蓝桥杯决赛试题及答案1.四方定理数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。
我们可以通过计算机验证其在有限范围的正确性。
对于大数,简单的循环嵌套是不适宜的。
下面的代码给出了一种分解方案。
请仔细阅读,填写空缺的代码(下划线部分)。
注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
直接写在题面中不能得分。
int f(int n, int a[], int idx){if(______________) return 1; // 填空1if(idx==4) return 0;for(int i=(int)sqrt(n); i>=1; i--){a[idx] = i;if(_______________________)return 1; // 填空2}return 0;}int main(int argc, char* argv[]){for(;;){int number;printf("输入整数(1~10亿):");scanf("%d",&number);int a[] = {0,0,0,0};int r = f(number, a, 0);printf("%d: %d %d %d %d\n", r, a[0], a[1], a[2], a[3]);}return 0;}2.加密在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。
解密的方法就是再执行一次同样的操作。
加密过程中n位二进制数会循环使用。
并且其长度也可能不是8的整数倍。
下面的代码演示了如何实现该功能。
请仔细阅读,填写空缺的代码(下划线部分)。
注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
gpio-keys 使用方法
![gpio-keys 使用方法](https://img.taocdn.com/s3/m/accc46cb70fe910ef12d2af90242a8956becaabf.png)
gpio-keys 使用方法gpio-keys是Linux内核中的一个子系统,用于处理嵌入式系统中的GPIO按键输入。
它允许开发人员将GPIO引脚配置为输入,并在按键按下或释放时生成相应的键事件。
下面我将从配置、驱动和使用方面来介绍gpio-keys的使用方法。
首先,要使用gpio-keys,你需要确保你的Linux内核已经启用了相应的配置选项。
在内核配置中,你需要启用CONFIG_INPUT_GPIO_KEYS选项。
这个选项通常位于"Device Drivers" -> "Input device support" -> "Keyboards"下。
启用这个选项后,重新编译内核并将其烧录到你的嵌入式设备上。
接下来,你需要在设备树中配置GPIO按键的引脚信息。
你需要指定GPIO引脚的编号、按键的名称以及按键事件的类型(按下或释放)。
这些信息将被用于注册gpio-keys设备,并在按键事件发生时生成输入事件。
在Linux系统启动时,内核会根据设备树中的配置信息注册gpio-keys设备。
一旦设备注册成功,你就可以在用户空间中使用输入事件接口来监控GPIO按键的状态变化了。
你可以使用evtest工具来测试gpio-keys设备是否正常工作,并查看按键事件的生成情况。
除了设备树中的配置外,你还可以在驱动程序中动态注册gpio-keys设备。
这在某些情况下可能更为灵活,但需要在驱动程序中编写相应的注册和初始化代码。
总的来说,要使用gpio-keys,你需要在内核中启用相应的配置选项,配置设备树以注册gpio-keys设备,并在用户空间中使用输入事件接口来监控GPIO按键的状态变化。
希望这些信息能够帮助你更好地理解和使用gpio-keys子系统。
蓝桥杯单片机比赛底层驱动(自测可用)
![蓝桥杯单片机比赛底层驱动(自测可用)](https://img.taocdn.com/s3/m/f39c8e299ec3d5bbfc0a748d.png)
蓝桥杯单片机比赛底层驱动(自测可用)1、温度uchar read_temp(void){a) ui nt temp;b) uchar low,high;c) In it_DS18B20();d) Write_DS18B20(0xcc);e) Write_DS18B20(0x44);f) while(!DQ);g) In it_DS18B20();h) Write_DS18B20(0xcc);i) Write_DS18B20(0xbe);j) low=Read_DS18B20();k) high=Read_DS18B20();l) temp=high&OxOf;m) temp<<=8;n) temp|=low;o) return (uchar)(temp*0.0625); }2、时钟关闭写 a)uchar addr=0x8c,i=7; b) DS1302_write(0x8e,0x00); // 保护c)while(i--) d){ e)DS1302_write(addr,*p); f)P++; g)addr-=2; h)} i)DS1302_write(0x8e,0x80); }void gettime(uchar *p){j)uchar addr=0x8d,i=7; k)while(i--) l){ m)*p++=DS1302_read(addr); n)addr-=2; o)}}uchar addr=0x80,i;Write_Ds1302(0x8e,0x00);for(i=0;i<3;i++){Write_Ds1302(addr,*p++); addr+=2;}Write_Ds1302(0x8e,0x80);}3、ADvoid adc_i nit(){a) IIC_Start();b) IIC_Se ndByte(0x90);c) IIC_WaitAck();d) IIC_Se ndByte(0x05);e) IIC_WaitAck();f) IIC_Stop();}void getadc( un sig ned char *p){g) unsig ned char i;charh) IIC_Start();i) IIC_Se ndByte(0x91);j) IIC_WaitAck();k) for(i=0;i<3;i++)l) {m) *p++=IIC_RecByte();n) IIC_Ack(1);o) }p) *p=IIC_RecByte();q) IIC_Ack(0);r) IIC_Stop();}4、 eepromvoid eeprom_write( un sig ned addr,u nsig ned char p){a) IIC_Start();b) IIC_Se ndByte(0xa0);c) IIC_WaitAck();d) IIC_Se ndByte(addr);e) IIC_WaitAck();f) IIC_Se ndByte(p);char g)IIC_WaitAck(); h)IIC_Stop(); i) Delay10ms();}un sig ned char eeprom_read( un sig ned addr){j) un sig ned char i;k) IIC_Start();l) IIC_Se ndByte(OxaO);m) IIC_WaitAck();n) IIC_Se ndByte(addr);o) IIC_WaitAck();p)p) IIC_Start();q) IIC_Se ndByte(0xa1);r) IIC_WaitAck();s) i=IIC_RecByte();t) IIC_Ack(0);u) IIC_Stop();v) return i;}5、蜂鸣器void Buzz In it(){a) P2=((P2&0 x1f)|0xa0);b) P0=0x00;c) P2&=0x1f;}6、显示void Display。
蓝桥杯scratch考点
![蓝桥杯scratch考点](https://img.taocdn.com/s3/m/fc4826765b8102d276a20029bd64783e09127d25.png)
蓝桥杯scratch考点
蓝桥杯Scratch比赛考点主要包括以下几个方面:
- 列表的遍历、增加、删除等基本操作;
- 比较大小的算法;
- 程序逻辑,如等待时间、循环次数、初始化操作等。
在比赛中,选手需要在Scratch软件中编写程序,实现题目要求的功能。
例如在“在列表1中生成5个在1~99范围内的随机整数,然后按照从大到小的顺序将它们依次移到列表2中”这一题中,选手需要使用Scratch的列表和随机数生成等功能,编写代码实现数据的生成和处理。
蓝桥杯比赛的考点内容较为全面,涉及到编程基础知识和算法思维等方面,需要选手具备扎实的编程技能和灵活的思维能力。
selectionkey的名词解释
![selectionkey的名词解释](https://img.taocdn.com/s3/m/caa1130dff4733687e21af45b307e87100f6f850.png)
selectionkey的名词解释在计算机世界中,SelectionKey是一个重要的概念,它与网络编程和事件驱动编程密切相关。
本文将对SelectionKey进行详细的名词解释,并探讨它在实际编程中的作用和用法。
一、SelectionKey的定义和作用SelectionKey是Java NIO库中的一个关键类,它是一个可以表示通道与选择器之间关联关系的标记。
在网络编程中,通常使用多路复用器(Multiplexer)来监控多个通道的状态。
而SelectionKey则提供了一种机制,使得程序员能够获取和操作通道在选择器中的注册状态。
SelectionKey虽然只是一个简单的类,但它提供了丰富的方法和属性,用于表示通道的可读、可写和可接受等事件。
通过SelectionKey,程序员可以轻松地判断通道的状态,并根据不同的事件进行相应的处理。
二、SelectionKey的属性和方法SelectionKey包含了几个重要的属性,每个属性都提供了对应的getter和setter 方法,供程序员访问和设置。
其中最常用的属性包括:1. channel:表示与SelectionKey关联的通道。
可以是SocketChannel、ServerSocketChannel等。
2. selector:表示与SelectionKey关联的选择器。
3. interestOps:表示SelectionKey注册的事件类型,如可读、可写等。
4. readyOps:表示通道当前已经准备就绪的事件类型,如通道已经可读、可写等。
除了属性之外,SelectionKey还提供了一些重要的方法,用于获取和操作通道的状态。
其中最常用的方法包括:1. isAcceptable():判断通道是否已经准备好接受新的连接。
2. isConnectable():判断通道是否已经准备好完成连接。
3. isReadable():判断通道是否已经准备好进行读取操作。
蓝桥杯ADV101-121
![蓝桥杯ADV101-121](https://img.taocdn.com/s3/m/d2cf0739482fb4daa58d4baa.png)
蓝桥杯ADV-101-算法提高断案问题描述公安人员审问甲、乙、丙、丁四个嫌疑犯,已确知,这四个人当中仅有一人是偷窃者,还知道这四个人的答话,要么完全诚实,要么完全说谎。
在回答公安人员的问话中:甲说:“乙没有偷,是丁偷的。
”乙说:“我没有偷,是丙偷的。
”丙说:“甲没有偷,是乙偷的。
”丁说:“我没有偷,我用的那东西是我家里的。
”请根据上述四人答话,判断谁是偷窃者。
输入格式:无输入。
输出格式:输出一个字符,表示偷窃者是谁,A表示甲,B表示乙,C表示丙,D表示丁。
[java]public class Main {public static void main(String[] args) {boolean[] a = new boolean[4];// 初始化默认都为false,假设都没偷boolean[] b = new boolean[4];// 假设偷的人为truefor (int i = 0; i < 4; i++) {a[i] = true;if (i > 0) {a[i - 1] = false;}b[0] = !a[1] && a[3];b[1] = !a[1] && a[2];b[2] = !a[0] && a[1];b[3] = !a[3];if (b[0] != true) {if (!(a[1] == true && a[3] == false)) {continue;}}if (b[1] != true) {if (!(a[1] == true && a[2] == false)) {continue;}}if (b[2] != true) {if (!(a[0] == true && a[1] == false)) {continue;}}System.out.println((char) (i + 65));}}}方法二:public class Main{public static char [] result = {'A','B','C','D'};public static void main(String[] args) {for (int i=0; i<result.length; i++){isResult(i);}}public static void isResult(int i){int [] num = {0,0,0,0};num[i] = 1;if (num[1]+num[3]==1 && num[1]+num[2]==1 && num[0]+num[1]==1 && num[3]==0){System.out.println(result[i]);return;}if(!(num[1]+num[3]==1) && !(num[1]+num[2]==1) && !(num[0]+num[1]==1) && !(num[3]==0)){System.out.println(result[i]);return;}}}蓝桥杯ADV-102-算法提高单词个数统计问题描述编写一个程序,输入一个字符串(长度不超过80),然后统计出该字符串当中包含有多少个单词。
蓝桥杯嵌入式——按键控制LED
![蓝桥杯嵌入式——按键控制LED](https://img.taocdn.com/s3/m/54956661f342336c1eb91a37f111f18583d00c9e.png)
蓝桥杯嵌⼊式——按键控制LED⼀.按键功能简介M4开发板包含五个按键,其中⼀个是Reset按键,另外四个是⼀般的按键。
从原理图可以知道,按键B0-B4都是外接上拉电阻到VDD,在按下时接通GND,所以按键弹出时读取到1,按下读取到0;使⽤时只需要将按键相关GPIO初始化,然后读取电平进⾏操作即可。
⼆.使⽤cubeMx做按键初始化(直接初始化为输⼊模式,No pull)void Key_Init(void){GPIO_InitTypeDef GPIO_InitStruct = {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();/*Configure GPIO pin : PA0 */GPIO_InitStruct.Pin = GPIO_PIN_0;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);/*Configure GPIO pins : PB0 PB1 PB2 */GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);}接着需要使⽤函数读取按键信号,⼀般来说,需要做按键消抖,但是测试发现不消抖也没有产⽣问题,这⾥还是将消抖加上。
unsigned char Key_Scan(void){if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET){//Key_Delay(10);Key_Val = 8;}else if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_RESET){//Key_Delay(10);Key_Val = 1;}else if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET){//Key_Delay(10);Key_Val = 2;}else if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == GPIO_PIN_RESET){//Key_Delay(10);Key_Val = 4;}elseKey_Val = 0;return Key_Val;}//Key_Delay函数适⽤于80MHz,实现⼀次循环延时1ms;void Key_Delay(unsigned int ms){unsigned int i,j;for(i=0;i<ms;i++)for(j=0;j<8000;j++);}最后在main函数调⽤Key_Scan函数即可,这⾥需要注意按键长按和短按我们赋予其不同的功能,因此逻辑上要做⼀些判断。
蓝桥杯单片机开发板CT107D常见问题解答V1.2
![蓝桥杯单片机开发板CT107D常见问题解答V1.2](https://img.taocdn.com/s3/m/89220c273968011ca300912d.png)
NUAA CT107D开发板南航电子科技提供。
CT107D 蓝桥杯单片机开发板常见问题及解决方法1. 板子如何下载程序?为什么提示下载不成功?板子下载程序方法总体上说是ISP串口下载:电脑上的单片机程序下载软件—》电脑USB口----》板子上的USB转串口芯片-----》单片机的串口。
第一步:需要电脑上下载有STC-ISP下载软件,(STC最新版下载软件:stc-isp-15xx-v6.85H 在蓝桥杯资料共享平台有下载链接,可以直接下载,无需安装,直接使用),第二步:电脑上需要安装有串口转换芯片的驱动。
参照CT107D使用说明书安装驱动。
当开发板通过USB线链接电脑,查看电脑设备管理器,可以看到对应端口号读出来时,确定为驱动安装成功。
第三步:就是打开stc-isp-15xx-v6.85H,选择好下载的芯片型号89C52(具体是89C52还是89C52RC要根据所使用的芯片决定),选择端口号为对应的USB识别到的端口号,选择需要下载的.hex文件,点击下载!这个时候需要关闭开发板再重启一起(即冷启动,因为单片机只有在上电启动的时候才会去检测有没有下载的信号)。
即可以完成下载。
至于下载不成功的原因无非以下几种情况:(1).单片机开发板上面的J4 跳线帽没有选择为 UART。
为什么要选择为UART 而不是PROG?? 看CT107D的原理图可知,J4主要是串口转换芯片CH341A的配置引脚SDA的选择。
也就是说,我们通过J4的跳线来选择SDA是悬空还是接地,进而配置CH341A的功能,因为CH341A这个串口转换芯片的功能是特别特别多的。
如下:即CH341A 可以用来作为USB转异步串口、USB转并口、USB转同步串口(SPI)、USB转打印口等等等。
再看CT107d的原理图:我们只用到了CH341A的USB转异步串口,和USB转SPI串口。
所以:我们在使用STC-ISP串口下载的时候,J4跳线需要选择为UART,此时CH341A配置成为USB转异步串口形式与单片机通信,完成下载。
蓝桥杯竞赛板使用笔记
![蓝桥杯竞赛板使用笔记](https://img.taocdn.com/s3/m/ebefd2c328ea81c758f57884.png)
一、新建工程略有不同的是程序的下载方法,需要装驱动。
二、LED电路原理图:比赛板用的是stm32f103rb芯片,64管脚,LED与LCD同用了管脚PC8~PC15(对应LED1~LED8),所以增用了一个锁存器——M74HC573。
在控制LED的时候,只需在输出对应电平后,给锁存器的LE(N—LE,对应PD2)管脚一个上升沿脉冲即可把对应的电平锁存到锁存器的输出端(Q1~Q8),从而控制LED。
需要注意的是:1、LCD的操作会影响LED的亮灭,如LCD的行写会点亮所有的LED,需进行程序处理;2、对锁存器LE管脚的操作,给一个上升沿脉冲后应把对应的控制引脚(PD2)置低电平,以免LCD的操作影响LED的亮灭混乱。
有关蜂鸣器的使用比较简单,在这里一起说明:比赛板的蜂鸣器连在PB4上,需注意的是Pb4管脚是JTAG调试接口之一,需要在程序中失能JTAG才可以使用Pb4管脚,如下语句:/* Disable the Serial Wire Jtag Debug Port SWJ-DP */GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);然而程序中用了这一句后,下次用JTAG下载程序时就下载不进去了,解决办法是:先按着开发板的RESET 按键别松手,再点击keil中的下载,然后松手按键,程序就可正常下载进去了。
三、USARTCT1117开发板的USART2与下载程序的USB方口集成在一起,使用时只需装好对应的驱动即可实现电脑与开发板的串口通信(部分串口调试工具可能搜不到串口)。
比赛时对串口的使用方式可能性比较大的是,通过电脑发送指令控制stm32以执行相应操作,所以我结合LED编写了一个练习程序,使用串口发送指令控制LED亮灭,同时在LCD上显示最近一次所接收到的命令。
串口的接收命令使用的是中断的方式,代码如下://配置串口2void USART_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//PA2 TxGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3 RxGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);USART_ART_BaudRate = 9600;USART_ART_WordLength = USART_WordLength_8b;USART_ART_StopBits = USART_StopBits_1;USART_ART_Parity = USART_Parity_No;USART_ART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_ART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART2, &USART_InitStructure);USART_Cmd(USART2, ENABLE);//使能USART2/* Configure the NVIC Preemption Priority Bits */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/* Enable the USARTy Interrupt */NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//使能接受中断}//中断服务函数void USART2_IRQHandler(void){if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET){/* Read one byte from the receive data register */RxBuffer[RxCounter] = USART_ReceiveData(USART2);if(RxBuffer[RxCounter]=='x')//指令格式led2_onx,以’x’作为命令的结尾{rxflag=1; //接受到命令的标志RxCounter=0;}else RxCounter++;if(RxBuffer[0]!='l')//此句避免接受命令混乱RxCounter=0;}USART_ClearITPendingBit(USART2,USART_IT_RXNE);//}//对于通过串口向电脑发送数据,采用printf()函数的重定向int fputc(int ch,FILE *f){USART_SendData(USART2,(uint8_t)ch);while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);// delay_ms(10);return ch;}//库函数中有,复制即可使用主函数省略,其中主要是调用了一个对命令处理的函数,每次调用处理函数,先判断命令接受的标志位,若置为1,则对存放命令的数组内容进行判断,从而操作LED并显示当前的命令。
selectkey用法 -回复
![selectkey用法 -回复](https://img.taocdn.com/s3/m/a33d097c366baf1ffc4ffe4733687e21ae45ff67.png)
selectkey用法-回复selectkey是一款强大的自动化测试工具,可用于验证和调试各种软件应用程序。
它的主要作用是为了测试人员提供一个快速、有效且可重复的方式来运行自动化测试脚本,并在测试过程中捕获和分析关键信息。
在本文中,我将详细介绍selectkey的用法,以及如何一步一步使用该工具来进行自动化测试。
首先,让我们了解一下selectkey的基本概念和原理。
selectkey是一个基于关键字驱动的测试框架,在测试过程中使用关键字来执行不同的操作。
一个关键字可以是一个命令,比如"click","sendKeys"或"verifyText",也可以是一系列命令的组合。
每个关键字都与一个特定的测试用例相关联,通过调用关键字来执行相应的操作。
这种方法使得测试案例的设计和执行变得更加简单和可维护。
接下来,我们将详细介绍如何使用selectkey进行自动化测试。
第一步是安装和配置selectkey。
我们可以从selectkey的官方网站上下载最新版本的安装包,并按照提供的指导进行安装。
安装完成后,我们需要配置selectkey的运行环境,包括设置测试项目的路径、选择自动化测试框架、配置测试数据等。
这些配置项可以根据具体的测试需求进行调整。
第二步是创建测试用例。
在selectkey中,测试用例使用XML格式进行定义。
我们可以通过在XML文件中定义测试步骤、输入数据和期望结果,以及调用相应的关键字来描述测试用例的执行过程。
一个简单的测试用例示例:XML<TestCase name="登录测试"><Step action="输入用户名" data="admin" /><Step action="输入密码" data="123456" /><Step action="点击登录按钮" /><Step action="验证登录成功" data="欢迎, admin!" /></TestCase>上述代码中,我们定义了一个名为"登录测试"的测试用例,包含了四个步骤:输入用户名、输入密码、点击登录按钮和验证登录成功。