蓝桥杯第2届预赛本科C语言真题解析Word格式文档下载.docx
- 文档编号:15924863
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:15
- 大小:22.21KB
蓝桥杯第2届预赛本科C语言真题解析Word格式文档下载.docx
《蓝桥杯第2届预赛本科C语言真题解析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《蓝桥杯第2届预赛本科C语言真题解析Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
=0
歌赛新规则
歌手大赛的评分规则一般是去掉一个最高分,去掉一个最低分,剩下的分数求平均。
当评委较少的时候,如果我们只允许去掉一个分数,该如何设计规则呢?
有人提出:
应该去掉与其余的分数平均值相差最远的那个分数。
即“最离群”的分数。
以下的程序用于实现这个功能。
其中x存放所有评分,n表示数组中元素的个数。
函数返回最“离群”的那个分数值。
doublescore(doublex[],intn)
{
inti,j;
doubledif=-1;
doublebad;
for(i=0;
n;
doublesum=0;
for(j=0;
j<
j++)
if(________)sum+=x[j];
doublet=x[i]-sum/(n-1);
if(t<
0)t=-t;
if(t>
dif)
dif=t;
bad=x[i];
printf("
%d,%f\n"
i,x[i]);
returnbad;
}
j!
=i
反转串
我们把“cba”称为“abc”的反转串。
下面的代码可以把buf中的字符反转。
其中n表示buf中待反转的串的长度。
请补充缺少的代码。
voidreverse_str(char*buf,intn)
if(n<
2)return;
chartmp=buf[0];
buf[0]=buf[n-1];
buf[n-1]=tmp;
_______________________________;
reverse_str(buf+1,n-2)
n进制小数
将任意十进制正小数分别转换成2,3,4,5,6,7,8,9进制正小数,小数点后保留8位,并输出。
例如:
若十进制小数为0.795,则输出:
十进制正小数0.795000转换成2进制数为:
0.11001011
十进制正小数0.795000转换成3进制数为:
0.21011011
十进制正小数0.795000转换成4进制数为:
0.30232011
十进制正小数0.795000转换成5进制数为:
0.34414141
十进制正小数0.795000转换成6进制数为:
0.44341530
十进制正小数0.795000转换成7进制数为:
0.53645364
十进制正小数0.795000转换成8进制数为:
0.62702436
十进制正小数0.795000转换成9进制数为:
0.71348853
以下代码提供了这个功能。
其中,dTestNo表示待转的十进制小数。
iBase表示进制数。
请填写缺失的部分。
voidfun(doubledTestNo,intiBase)
intiT[8];
intiNo;
printf("
十进制正小数%f转换成%d进制数为:
"
dTestNo,iBase);
for(iNo=0;
iNo<
8;
iNo++)
dTestNo*=iBase;
iT[iNo]=________________;
if(___________________)dTestNo-=iT[iNo];
0."
);
iNo<
iNo++)printf("
%d"
iT[iNo]);
\n"
voidmain()
{
doubledTestNo=0.795;
intiBase;
for(iBase=2;
iBase<
=9;
iBase++)
fun(dTestNo,iBase);
(int)(dTestNo)
dTestNo>
iT[iNo]*1.0
字符串的轮换
串“abcd”每个字符都向右移位,最右的移动到第一个字符的位置,就变为“dabc”。
这称为对串进行位移=1的轮换。
同理,“abcd”变为:
“cdab”则称为位移=2的轮换。
下面的代码实现了对串s进行位移为n的轮换。
voidshift(char*s,intn)
char*p;
char*q;
intlen=strlen(s);
if(len==0)return;
=0||n>
=len)return;
char*s2=(char*)malloc(_________);
p=s;
q=s2+n%len;
while(*p)
{
*q++=*p++;
if(q-s2>
=len)
*q=___________;
q=s2;
strcpy(s,s2);
free(s2);
sizeof(char)*(len+1)
'
\0'
中奖计算
某抽奖活动的规则是:
每位参与者在纸上写下一个8位数的号码。
最后通过摇奖的办法随机产生一个8位数字。
参与者写下的数字中最多有多少个连续位与开奖号码中的相同,则称为中了几个号。
小张写的数字是:
12345678,而开奖号码是:
42347856。
则称小张中了3个号,因为其中最长的相同连续位是:
“234”。
如果小张写的是:
87654321,则他只中了一个号。
下面的代码根据传入的参数,返回中了几个号。
其中:
a表示被评价的号码,b表示摇号产生的数字。
请填写缺少的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
intg(inta,intb)
charsa[]="
00000000"
;
charsb[]="
intn=0;
sprintf(sa,"
%8d"
a);
sprintf(sb,"
b);
for(j=1;
=8-i;
chart=________;
sa[i+j]=0;
if(strstr(sb,sa+i))
{
if(j>
n)_________;
}
sa[i+j]=t;
returnn;
sa[i+j]
n=j
概率问题
某个袋子中有红球m个,白球n个。
现在要从中取出x个球。
那么红球数目多于白球的概率是多少呢?
下面的代码解决了这个问题。
其中的y表示红球至少出现的次数。
这与前文的问题是等价的。
因为如果取30个球,要求红球数大于白球数,则等价于至少取出16个红球。
请根据仅存的线索,判断程序逻辑,并补全缺少的代码。
/*
m:
袋中红球的数目
n:
袋中白球的数目
x:
需要取出的数目
y:
红球至少出现的次数
*/
doublepro(intm,intn,intx,inty)
if(y>
x)return0;
if(y==0)return1;
m)return0;
if(x-n>
y)return1;
doublep1=_______________________;
doublep2=_______________________;
return(double)m/(m+n)*p1+(double)n/(m+n)*p2;
pro(m-1,n,x-1,y-1)
pro(m,n-1,x-1,y)
上三角方阵
方阵的主对角线之上称为“上三角”。
请你设计一个用于填充n阶方阵的上三角区域的程序。
填充的规则是:
使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。
当n=3时,输出:
123
64
5
当n=4时,输出:
1234
9105
86
7
当n=5时,输出:
12345
1213146
11157
108
9
程序运行时,要求用户输入整数n(3~20)
程序输出:
方阵的上三角部分。
要求格式:
每个数据宽度为4,右对齐。
(1)编程思路。
上三角阵的构造可以看成由向右填充(行号不变、列号加1,即col++)、斜向下填充(row++、col--)和向上填充(行号减1、列号不变,即row--)三个子过程不断交替完成的。
例如,示例中的3阶上三角阵可以看成由向右填充(1、2、3),斜向下填充(4、5)和向上填充(6)这3个子过程完成的。
4阶上三角阵可以看成由向右填充(1、2、3、4),斜向下填充(5、6、7)、向上填充(8、9)和向右填充(10)这4个子过程完成的。
n阶上三角阵可以看成由n个子过程完成,每个子过程为向右填充、斜向下填充和向上填充这三种中的一种,用变量direction来表示,其取值为0、1或2,0表示向右填充,1表示斜向下填充,2表示向上填充。
每个子过程结束后,切换填充方向,方式为:
direction=(direction+1)%3;
n个子过程中,第1个子过程填写n个数,第2个子过程填写n-1个数,…,最后一个子过程填写1个数。
因此,程序总体写成一个二重循环,描述为:
for(i=n;
i>
=1;
i--)
{
for(j=1;
j<
=i;
j++)
按填充方向,填充相应数据
direction=(direction+1)%3;
//切换填充方向
}
初始时,注意row=0,col=-1,这样向右col++后,col为0,正好填在第1个位置。
(2)源程序。
#include<
stdio.h>
intmain()
inta[20][20]={0},row,col,i,j,n,num;
intdirection=0;
scanf("
&
n);
row=0;
col=-1;
num=1;
for(i=n;
for(j=1;
switch(direction)
case0:
col++;
break;
//向右填充
case1:
row++;
col--;
//斜向下填充
case2:
r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蓝桥杯第 预赛 本科 语言 题解
![提示](https://static.bdocx.com/images/bang_tan.gif)