zoukankan      html  css  js  c++  java
  • 蓝桥杯模拟题

    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;

    }

  • 相关阅读:
    VC 中Combo Box的使用 Chars
    毕业论文摘要的书写方法和技巧 Chars
    VC调用DLL Chars
    《CLR via C#》Part1之Chapter3 共享程序集和强命名程序集(二)
    委托的使用(转)
    新概念系列之《Lesson 133 Sensational news》
    《CLR via C#》Part1之Chapter2 生成、打包、部署及管理应用程序及类型
    新概念系列之《Part2 Lesson 17 Always young》
    新概念系列之《Part2 Lesson 4 An exciting trip》
    新概念系列之《Part2 Lesson 16 A polite request》
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3053122.html
Copyright © 2011-2022 走看看