蓝桥杯青少年创意编程组比赛真题_蓝桥杯题库及答案

(1) 2024-07-04 09:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
蓝桥杯青少年创意编程组比赛真题_蓝桥杯题库及答案,希望能够帮助你!!!。

摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用"zylib.h",只能使用标准库函数。用' * '表示' . ',中间空格用' | '表示,只转化字符表。

蓝桥杯青少年创意编程组比赛真题_蓝桥杯题库及答案_https://bianchenghao6.com/blog__第1张

首先是读入问题,采用scanf一次将所有输入全部放入一个字符组中。然后搜素保存好的字符,输出对应的字母。

问题是,如何判断字符串与字母的对应关系。

观察题中所给表格,发现只存在“-”和“*”两种符号且一共24种组合。可以考虑使用二叉树保存表格往左为“*”往右为“-”使字母与二叉树的节点相对应。

蓝桥杯青少年创意编程组比赛真题_蓝桥杯题库及答案_https://bianchenghao6.com/blog__第2张

二叉树编号从一开始由上至下由左至右依次排列,在根据表格在相应位置填入字母,在没有字母的节点使用特殊数字表示(我用1表示没有相应字母)。最后将该二叉树保存,我使用一维数组保存,用数组下标表示结点编号,数组存储字母和特殊字符。

在树中搜索时只需定义变量i=1;当为*时i=i*2;为-时i=i*2+1;为|时输出以当前i值为下标的字母并且将i值重新置1.

#include <stdio.h> #include<string.h> int main(void) { char str[]; char found[33]={"11etianmsurwdkgohvf1l1p1b1cyzq11"};/*保存了整颗树*/ int cur,i,a; scanf("%s",str); a=strlen(str); for(cur=0,i=1;cur<a;cur++) /*遍历完输入的所有字符*/ { switch(str[cur]) /*搜索树*/ { case 42:i*=2;break; case '-':i=i*2+1;break; case '|':printf("%c",found[i]);i=1;break; default:; } } printf("%c",found[i]); /*由于最后一组字母没有以|结束,这里用于将其直接输出*/ return 0; }



今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复