蓝桥杯模拟题

c语言参考题目---填空题

  1. 代码填空

如果只提供加减乘除的基本运算能力,你能实现求平方根吗?可以的!先随便猜一个根,用它试除目标数字,如果结果恰好等于所猜的数,则问题解决。否则用结果与所猜的数字的平均值再去试除….

假设待开方的数字为 double a;

    double t = a / 2 ;

    double t2;

    for(;;){

        t2 = a / t;

        if(fabs(t-t2)<0.001) break;

        t = __(t+t2)/2_______;

    }

 

 

  1. 代码填空

生活中人们往往靠直觉来进行粗略的判断,但有的时候直觉往往很不可靠。比如:如果你们班有30名同学,那么出现同一天生日的概率有多大呢?你可能不相信,这个概率高达70%左右。

以下的程序就是用计算机随机模拟,再统计结果。仔细阅读代码,补全空白的部分。

#define N 30

......

    int a[N];

    srand( time( NULL ) );

    int n = 0;

    for(int k=0; k<10000; k++)

    {

        for(int i=0; i<N; i++)

            a[i] = rand() % 365;

        bool tag = false; // 假设没有相同

        for(i=1; i<N; i++)

        {

            for(int j=0; j<i; j++)

            {

                if(a[i]==a[j])

                {

                    tag = true;

                    break;

                }

            }

            ________if(j) break_____________;

        }

        if(tag) n++;

    }

 

    printf("%f\n", 1.0 * n / 10000 * 100);

 

 

  1. 代码填空

给定一个串,例如“aabbbcddddkkkmmmmaakkkk”我们希望去掉连续的重复字母,得出串:“abcdkmak”,下面代码实现了该功能,请完善之。

    char* p = "aabbbcddddkkkmmmmaakkkk";

    char buf[100];

 

    char* q = p;

    int i=0;

    for(;*q;)

    {

        if(__q==p_________|| *q != *(q-1))

        {

            buf[i++] = *q;

        }

        q++;

    }

    buf[i] = '\0';

 

    printf("%s\n", buf);

 

 

  1. 代码填空

口袋中有5只红球,4只白球。随机从口袋中取出3个球,则取出1个红球2个白球的概率是多大?类似这样的数学问题,在计算的时候往往十分复杂。但如果通过计算机模拟这个过程,比如进行100000次取球模拟,统计一下指定情况出现的次数对计算机来说是方便且快速的。同样,这个原理也适用于像天气预报这样复杂的系统过程。

以下的程序就是用于解决取球概率问题的。仔细阅读代码,补全空白的部分。

    srand( (unsigned)time( NULL ) );

 

    int n = 0;

    for(int i=0; i<100000; i++)

    {

        char x[] = {1, 1, 1, 1, 1, 2, 2, 2, 2};

        int a = 0;  // 取到的红球的数目

        int b = 0;  // 取到的白球的数目

 

        for(int j=0; j<3; j++)

        {

            int k = rand() % (9-j);

            if(x[k]==1)

                a++;

            else

                b++;

        //红球在数组的前几个,而且取一个球后总球数减一,此时白球没取,此时需要把该红球//换成白球

            ______if(x[k]==1) x[k]=2_________________;

        }

 

        if(a==1 && b==2)  n++;

    }

 

    printf("概率=%f\n", n/100000.0*100);

  1. 代码填空

数列:Sn=1+ 1/2 + 1/3 + … 1/n 被称为调和数列,它“刚好”是不收敛的。这个数列和增长的速度是惊人缓慢的。下列代码求出n至少为多大,才能保证Sn > m。试完善之。

double m = 20;

double x = 1;

int i = 2;

while(x<m)

{

     x +=  __1.0/i++____________;

}

printf("%d", i);

 

 

  1. 代码填空

扔一枚硬币,正面和反面向上的概率都是0.5,但多次仍硬币,总会出现连续多次同一面的情况。我们把每次的实验结果记录下来,形成一个串(0,1分别代表正面、反面向上)。下面的程序统计出0或1最大连续出现的次数。试完善之。

char* p = "100111000100101010001010111100000000100001111111000000";

int len = strlen(p);

int max_k = 1;

int k = 1;

for(int i=1; i<len; i++)

{

     if(p[i]==p[i-1])

         k++;

     else

     {

         ____max_k=k>max_k?k:max_k  _____________________;

         k = 1;

     }

}

printf("%d\n", max_k);

 

  1. 代码填空

计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。但有些情况下,也可以利用计算机计算速度快的特点通过巧妙的推理来解决问题。下列的程序计算了m个A,n个B可以组合成多少个不同排列的问题。请完善它。

int f(int m, int n)

{//多种递推形式(m+n)!/(m!*n!)

    if(m==0 || n==0) return 1;

    return ____(m+n)*f(m, n-1)___________________;

}

 

  1. 代码填空

因数分解是十分基本的数学运算,应用广泛。下面的程序对整数n(n>1)进行因数分解。比如,n=60, 则输出:2 2 3 5。请补充缺失的部分。

void f(int n)

{

    for(int i=2; i<n/2; i++)

    {

        ___if(n%i==0)_________________

        {

            printf("%d ", i);

            n = n / i;

        }

    }

    if(n>1) printf("%d\n", n);

}

 

  1. 代码填空

下列代码实现把一个串“轮换”拷贝。既是:把"abcdef" 拷贝为:"bcdefa"。请补充缺少的语句。

char* p = "abcdef";

char* q = (char*)malloc(strlen(p)+1);

for(int i=0, int len=strlen(p); i<len-1; i++)

     q[i] = p[i+1];

q[len-1] = p[0];

___q[len]=’\0’__________________;

printf("%s\n", q);

 

10. 代码填空

穷举法是计算机解决某些问题的重要手段。为了估算可能性的数目,经常需要计算组合或排列的数目,下面的代码输出从m个物体中任取出n个物体的不同方案的数目(此处假设:m, n>1 且 m>=n)。试完善之。

int f(int m, int n)

{

    int a = 1;

    int m1 = m;

    _ while(m1>1)_____________

    a *= m1--;

    int b = 1;

    while(n>1)

        b *= n--;

    return a / b;

}

时间: 2024-09-25 15:52:39

蓝桥杯模拟题的相关文章

2013第四届蓝桥杯 C/C++本科A组 真题答案解析【交流帖】

今年的蓝桥杯又已经结束了,做的还是不怎么样,很多题目不难但就是算不出最终的结果,很是纠结,看来路还很长,另外昨天(2013-5-7)也受到了也受到了微软的thank you letter了,哎,都是苦逼的一天.不说了,直接看题吧,如果你对我的做法有异议或者有更好的解法,请给我留言,我会及时更新~~~~~ 1.高斯日记  大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯

这题怎么做啊-蓝桥杯 搜索算法

问题描述 蓝桥杯 搜索算法 10.移动字母 2x3=6个方格中放入ABCDE五个字母,右下角的那个格空着.如图1所示. 和空格子相邻的格子中的字母可以移动到空格中,比如,图中的C和E就可以移动,移动后的局面分别是: A B D E C A B C D E 为了表示方便,我们把6个格子中字母配置用一个串表示出来,比如上边的两种局面分别表示为: AB*DEC ABCD*E 题目的要求是:请编写程序,由用户输入若干表示局面的串,程序通过计算,输出是否能通过对初始状态经过若干次移动到达该状态.可以实现输

蓝桥杯 算法问题 求解

问题描述 蓝桥杯 算法问题 求解 问题描述 给定一条标有整点(1, 2, 3, ...)的射线. 定义两个点之间的距离为其下标之差的绝对值. Laharl, Etna, Flonne一开始在这条射线上不同的三个点, 他们希望其中某个人能够到达下标最大的点. 每个角色只能进行下面的3种操作, 且每种操作不能每人不能进行超过一次. 1.移动一定的距离 2.把另一个角色高举过头 3.将举在头上的角色扔出一段距离 每个角色有一个movement range参数, 他们只能移动到没有人的位置, 并且起点和

蓝桥杯 java 操作格子-操作格子蓝桥杯java线段树也超限怎么办

问题描述 操作格子蓝桥杯java线段树也超限怎么办 如题: 问题描述 有n个格子,从左到右放成一排,编号为1-n. 共有m次操作,有3种操作类型: 1.修改一个格子的权值, 2.求连续一段格子权值和, 3.求连续一段格子的最大值. 对于每个2.3操作输出你所求出的结果. 输入格式 第一行2个整数n,m. 接下来一行n个整数表示n个格子的初始权值. 接下来m行,每行3个整数p,x,y,p表示操作类型,p=1时表示修改格子x的权值为y,p=2时表示求区间[x,y]内格子权值和,p=3时表示求区间[x

c++-蓝桥杯 高斯日记求大神指导

问题描述 蓝桥杯 高斯日记求大神指导 各位大神帮忙看一下,我觉得程序没有错误啊,为什么输出来的结果大了四个月呢???万分感谢 解决方案 你这图片的质量--看不清啊 解决方案二: 这是题目,谢谢大家的帮忙,拜托 解决方案三: 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天.这或许也是个好习惯, 它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪

蓝桥杯 历届试题 公式求值 (想了很久了,想不明白,才来请教的,麻烦各位了)

问题描述 蓝桥杯 历届试题 公式求值 (想了很久了,想不明白,才来请教的,麻烦各位了) 问题描述 输入n, m, k,输出下面公式的值. 其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如下. 输入格式 输入的第一行包含一个整数n:第二行包含一个整数m,第三行包含一个整数k. 输出格式 计算上面公式的值,由于答案非常大,请输出这个值除以999101的余数. 样例输入 3 1 3 样例输出 162 样例输入 20 10 10 样例输出 359316 数据

蓝桥杯-算法训练2 最大最小公倍数

刚做了,蓝桥杯算法训练的最大最小公倍数一题,感觉考查的是数学了,哈哈. 时间限制:1.0s   内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式 输入一个正整数N. 输出格式 输出一个整数,表示你找到的最小公倍数. 样例输入 9 样例输出 504 数据规模与约定 1 <= N <= 10^6. 思路如下: 1. n是奇数,那就最大的三个数相乘 2. n是偶数,得分两种情况了, ①如果n不是3的倍数,那就s=n*(n-1)

蓝桥杯练习系统编程-我的代码在eclipse中能够运行但是无法通过蓝桥杯练习系统

问题描述 我的代码在eclipse中能够运行但是无法通过蓝桥杯练习系统 问题描述 给定圆的半径r,求圆的面积. 输入格式 输入包含一个整数r,表示圆的半径. 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积. 说明:在本题中,输入是一个整数,但是输出是一个实数. 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误. 实数输出的问题如果没有特别说明,舍入都是按

c c++编程-求各位大神指导C++,蓝桥杯的一道题目

问题描述 求各位大神指导C++,蓝桥杯的一道题目 题目和我的源代码附上,可是为什么运行出来没有结果呢 解决方案 #include <iostream> using namespace std; int main(){ for(int i = 0; i < 40; ++i){ for(int j = 1; j < 43; ++j){ if(i > j)continue; if(i * 23 + j * 19 == 823){ cout<<i<<"