蓝桥杯决赛试题Word格式.docx
- 文档编号:17288887
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:14
- 大小:22.61KB
蓝桥杯决赛试题Word格式.docx
《蓝桥杯决赛试题Word格式.docx》由会员分享,可在线阅读,更多相关《蓝桥杯决赛试题Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
下面的程序实现了这个功能。
请仔细阅读分析代码,填写空白的部分。
voidpop(ints,int*buf,intc,FILE*fp)
{
inti;
if(s)
{
fprintf(fp,"
%d%d"
c,*buf);
}
else
%d"
-c);
for(i=0;
i<
c;
i++)
{
fprintf(fp,"
buf[i]);
}
}
voiddopack(FILE*r,FILE*w)
intbuf[BUF_N];
intpos=0;
//下一个数字在buf中将要存放的位置
intc=0;
//当前段已读入的整数个数
intpst;
intcst;
while(fscanf(r,"
%d"
buf+pos)==1)
if(c==0)
c=pos=1;
continue;
if(c==1)
pst=buf[0]==buf[1];
pos=pos+1-pst;
c=2;
cst=buf[pos-1]==buf[pos];
if(pst&
&
!
cst)
pop(pst,buf,c,w);
buf[0]=buf[1];
pst=cst;
elseif(!
pst&
cst||pos==BUF_N-1)
pop(pst,buf,c-1,w);
buf[0]=buf[pos-1];
if(!
{
buf[1]=buf[pos];
pos=2;
}
else
pos=1;
pst=______________;
//填空1
else
c++;
pst)pos++;
}//while
if(c>
0)_____________________________;
//填空2
voidmain()
FILE*rfp;
FILE*wfp;
if((rfp=fopen(RFILE,"
r"
))==NULL)
printf("
cannotopen%s!
\n"
RFILE);
exit
(1);
if((wfp=fopen(WFILE,"
w"
WFILE);
fclose(rfp);
exit
(2);
dopack(rfp,wfp);
fclose(wfp);
fclose(rfp);
【注意】
只填写缺少的部分,不要抄写已有的代码。
所填写代码不超过1条语句(句中不会含有分号)
所填代码长度不超过256个字符。
答案写在“解答.txt”中,不要写在这里!
【编程题】
(满分19分)
在很多软件中,输入拼音的首写字母就可以快速定位到某个词条。
比如,在铁路售票软件中,输入:
“bj”就可以定位到“北京”。
怎样在自己的软件中实现这个功能呢?
问题的关键在于:
对每个汉字必须能计算出它的拼音首字母。
GB2312汉字编码方式中,一级汉字的3755个是按照拼音顺序排列的。
我们可以利用这个特征,对常用汉字求拼音首字母。
GB2312编码方案对每个汉字采用两个字节表示。
第一个字节为区号,第二个字节为区中的偏移号。
为了能与已有的ASCII编码兼容(中西文混排),区号和偏移编号都从0xA1开始。
我们只要找到拼音a,b,c,...x,y,z每个字母所对应的GB2312编码的第一个汉字,就可以定位所有一级汉字的拼音首字母了(不考虑多音字的情况)。
下面这个表给出了前述信息。
请你利用该表编写程序,求出常用汉字的拼音首字母。
a啊B0A1
b芭B0C5
c擦B2C1
d搭B4EE
e蛾B6EA
f发B7A2
g噶B8C1
h哈B9FE
j击BBF7
k喀BFA6
l垃C0AC
m妈C2E8
n拿C4C3
o哦C5B6
p啪C5BE
q期C6DA
r然C8BB
s撒C8F6
t塌CBFA
w挖CDDA
x昔CEF4
y压D1B9
z匝D4D1
【输入、输出格式要求】
用户先输入一个整数n(n<
100),表示接下来将有n行文本。
接着输入n行中文串(每个串不超过50个汉字)。
程序则输出n行,每行内容为用户输入的对应行的汉字的拼音首字母。
字母间不留空格,全部使用大写字母。
用户输入:
3
大家爱科学
北京天安门广场
软件大赛
则程序输出:
DJAKX
BJTAMGC
RJDS
请仔细调试!
您的程序只有能运行出正确结果的时候才有机会得分!
在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
请把所有函数写在同一个文件中,调试好后,拷贝到【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
源代码中不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
允许使用STL类库,但不能使用MFC或ATL等非ANSIc++标准的类库。
例如,不能使用CString类型(属于MFC类库),不能使用randomize,random函数(不属于ANSIC++标准)
(满分27分)
脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子。
它由4种主要的脱氧核苷酸(dAMP、dGMP、dCMT和dTMP)通过磷酸二酯键连接而成。
这4种核苷酸可以分别记为:
A、G、C、T。
DNA携带的遗传信息可以用形如:
AGGTCGACTCCA....的串来表示。
DNA在转录复制的过程中可能会发生随机的偏差,这才最终造就了生物的多样性。
为了简化问题,我们假设,DNA在复制的时候可能出现的偏差是(理论上,对每个碱基被复制时,都可能出现偏差):
1.漏掉某个脱氧核苷酸。
例如把AGGT复制成为:
AGT
2.错码,例如把AGGT复制成了:
AGCT
3.重码,例如把AGGT复制成了:
AAGGT
如果某DNA串a,最少要经过n次出错,才能变为DNA串b,则称这两个DNA串的距离为n。
AGGTCATATTCC与CGGTCATATTC的距离为2
你的任务是:
编写程序,找到两个DNA串的距离。
用户先输入整数n(n<
100),表示接下来有2n行数据。
接下来输入的2n行每2行表示一组要比对的DNA。
(每行数据长度<
10000)
程序则输出n行,表示这n组DNA的距离。
用户输入:
AGCTAAGGCCTT
AGCTAAGGCCT
AGGCTAAGGCCTT
AGCTTAAGGCTT
则程序应输出:
1
2
(满分33分)
“数独”是当下炙手可热的智力游戏。
一般认为它的起源是“拉丁方块”,是大数学家欧拉于1783年发明的。
如图[1.jpg]所示:
6x6的小格被分为6个部分(图中用不同的颜色区分),每个部分含有6个小格(以下也称为分组)。
开始的时候,某些小格中已经填写了字母(ABCDEF之一)。
需要在所有剩下的小格中补填字母。
全部填好后,必须满足如下约束:
1.所填字母只允许是A,B,C,D,E,F中的某一个。
2.每行的6个小格中,所填写的字母不能重复。
3.每列的6个小格中,所填写的字母不能重复。
4.每个分组(参见图中不同颜色表示)包含的6个小格中,所填写的字母不能重复。
为了表示上的方便,我们用下面的6阶方阵来表示图[1.jpg]对应的分组情况(组号为0~5):
000011
022013
221113
243333
244455
445555
用下面的数据表示其已有字母的填写情况:
02C
03B
05A
20D
35E
53F
很明显,第一列表示行号,第二列表示列号,第三列表示填写的字母。
行号、列号都从0开始计算。
一种可行的填写方案(此题刚好答案唯一)为:
EFCBDA
ACEDFB
DABECF
FBDCAE
BDFAEC
CEAFBD
编写程序,对一般的拉丁方块问题求解,如果多解,要求找到所有解。
用户首先输入6行数据,表示拉丁方块的分组情况。
接着用户输入一个整数n(n<
36),表示接下来的数据行数
接着输入n行数据,每行表示一个预先填写的字母。
程序则输出所有可能的解(各个解间的顺序不重要)。
每个解占用7行。
即,先输出一个整数,表示该解的序号(从1开始),接着输出一个6x6的字母方阵,表示该解。
解的字母之间用空格分开。
如果找不到任何满足条件的解,则输出“无解”
6
再如,用户输入:
001111
002113
022243
022443
544433
555553
7
04B
13D
14C
24E
50C
51A
DCEFBA
EFADCB
ABFCED
BEDAFC
FDCBAE
CABEDF
ADFBEC
BECAFD
DCFEBA
AEBDCF
FDACEB
BFEADC
EBCFAD
CADBFE
4
BEADCF
ADCFEB
FBEADC
EFBCAD
5
ABCFED
FDBCAE
CAEBDF
ABDFEC
ADBFEC
8
FEADCB
ADBCEF
9
AFCBED
BDEAFC
EBDCAF
CABFDE
例如,不能使用CString类型(属于MFC类库);
例如,不能使用randomize,random函数(不属于ANSIC++标准)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蓝桥杯 决赛 试题