蓝桥杯2011C本科组预赛题分析

题一:

/**
神秘的三位数
有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。即:abc = a! + b! + c!
下面的程序用于搜索这样的3位数。请补全缺失的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
 */
#include <iostream>

using namespace std;

int main()
{
    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(x > 0)
        {
            sum += JC[x%10];
            x /= 10;
        }
        if(i==sum) printf("%d\n", i);
    }

    return 0;
}

题二:

/**
歌赛新规则
歌手大赛的评分规则一般是去掉一个最高分,去掉一个最低分,剩下的分数求平均。当评委较少的时候,如果我们只允许去掉一个分数,该如何设计规则呢?
有人提出:应该去掉与其余的分数平均值相差最远的那个分数。即“最离群”的分数。
以下的程序用于实现这个功能。其中x存放所有评分,n表示数组中元素的个数。函数返回最“离群”的那个分数值。请补全缺失的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
 */

#include <iostream>

using namespace std;

double score(double x[], 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(j != i) 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;
}

int main()
{
    double x[7] = {7.0,1.0,8.9,9.9,6.5,5.9,8.9};
    score(x,7);
    return 0;
}

题三:

/**
反转串
我们把“cba”称为“abc”的反转串。
下面的代码可以把buf中的字符反转。其中n表示buf中待反转的串的长度。请补充缺少的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
 */

#include <iostream>

using namespace std;

void reverse_str(char* buf, int n)
{
    if(n<2) return;
    char tmp = buf[0];
    buf[0] = buf[n-1];
    buf[n-1] = tmp;
    reverse_str(buf + 1,n - 2);
}

int main()
{
    char buf[8] = "abcdefg";
    reverse_str(buf,7);
    cout << buf << endl;
    return 0;
}

题四:

/**
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
以下代
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值