2011年第二届蓝桥杯(C/C++)预赛题目及个人答案(欢迎指正)

蓝桥杯C/C++预赛编程题解析与填空答案
这篇博客分享了2011年第二届蓝桥杯C/C++预赛的编程题目及作者的解答,包括代码填空和程序设计题目。涉及的编程知识点包括循环、条件判断、数组操作、字符串处理和算法应用。

第一题

代码填空 (满分3分)

神秘的三位数

有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。即:abc = a! + b! + c!

下面的程序用于搜索这样的3位数。请补全缺失的代码。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

    int JC[] = {1,1,2,6,24,120,720,5040,40320,362880};

    int i;

    for(i=100; i<1000; i++)

    {

        int sum = 0;

        int x = i;

        while(__________)

        {

            sum += JC[x%10];

            x /= 10;

        }

        if(i==sum) printf("%d\n", i);

    }


答案:x>0



第二题

代码填空 (满分4分)

歌赛新规则

歌手大赛的评分规则一般是去掉一个最高分,去掉一个最低分,剩下的分数求平均。当评委较少的时候,如果我们只允许去掉一个分数,该如何设计规则呢?

有人提出:应该去掉与其余的分数平均值相差最远的那个分数。即“最离群”的分数。

以下的程序用于实现这个功能。其中x存放所有评分,n表示数组中元素的个数。函数返回最“离群”的那个分数值。请补全缺失的代码。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

double score(doublex[], int n)

{

    int i,j;

    double dif = -1;

    double bad;

    for(i=0; i<n; i++)

    {

        double sum = 0;

        for(j=0; j<n; j++)

        {

            if(________) sum += x[j];

        }

        double t = 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]);

        }

    }

 

    return bad;

}


答案:i!=j


第三题

代码填空 (满分4分)

反转串

我们把“cba”称为“abc”的反转串。

下面的代码可以把buf中的字符反转。其中n表示buf中待反转的串的长度。请补充缺少的代码。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

void reverse_str(char*buf, int n)

{

    if(n<2) return;

    char tmp = buf[0];

    buf[0] = buf[n-1];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值