2011蓝桥杯预赛若干题

简介: 1.1.    代码填空(满分3分) 假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。     if(a>b) swap(&a, &b);     if(b>c) swap(&b, &c);     if(a>b) swap(&a, &b);     int m = b; 因为经过第二次交换后b的值不一定大于a了   1.2.    代码填空(满分5分) 计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。

1.1.    代码填空(满分3分)

假设a,b,c是3个互不相等的整数。下列代码取出它们中居中的数值,记录在m中。其中的swap()函数可以交换两个变量的值。请完善代码。

    if(a>b) swap(&a, &b);

    if(b>c) swap(&b, &c);

    if(a>b) swap(&a, &b);

    int m = b;

因为经过第二次交换后b的值不一定大于a了

 

1.2.    代码填空(满分5分)

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

int f(int m, int n)

{

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

    return f(n-1,m) + f(n,m-1);

}

 

#include <iostream>

#include <cstring>

#include <cstdlib>

#include <cmath>

using namespace std;

 

/*

递推求解

(m+n)!/(m!n!) = (m+n)(m+n-1)(m+n-2)!/(m-1)!/(n-1)!

*/

int f(int m, int n)

{

    /*

    需要把 f(m-1,n-1)提到前面相乘,不能 ((m+n)*(m+n-1))/(m*n)*f(m-1,n-1),

    因为可能前面的除不尽,或者把mn改为double,或者按下面的这样

    */

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

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

}

 

int main()

{

    int i,j,k;

   

    cout<<f(2,7)<<endl;

    while(1);

    return 0;

}

1.3.    代码填空(满分6分)

此段代码的意图是把一个缓冲区中的整数重新排列,使得所有负数都在正数的左边。请分析其工作流程,补充缺失的代码。

void reorder(int *pData, int len)

{

      if(pData == NULL || len == 0) return;

      int *pBegin = pData;

      int *pEnd =pData+len-1;

      while(pBegin < pEnd)

      {

            if(*pBegin<0)

            {

                  pBegin ++;

                  if(pEnd<=pBegin) break;

            }

            if(*pEnd>=0)

            {

                  pEnd --;

                  if(pEnd<=pBegin) break;

            }

 

            int temp = *pBegin;

            *pBegin = *pEnd;

            *pEnd = temp;

      }

}

 

int main(int argc, char **argv)

{

    int a[] = {1,2,3,-5,-4,5,9,-8,-1};

    reorder(a, 9);

 

    for(int i=0; i<9; i++) printf("%d ", a[i]);

    printf("\n");

    return 0;  

}

 

1.4.    代码填空(满分9分)

给定一个字符串,其含有的字符各不相同。程序输出该字符串的所有排列(全排列)情形。例如:给定字符串“xyz”,则程序输出:

xyz

xzy

yxz

yzx

zyx

zxy

试完善程序中空缺的部分。

void f(char *str, int len, int n)

{  

    int i;  

    char tmp;  

    char *p = (char *)malloc(len+1);  

    if(n==len-1){  

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

    }else{  

        for(i=n;i<len;i++){  

            strcpy(p,str);  

 

            tmp = *(str+n);  

            *(str+n) = *(str+i);  

            *(str+i) = tmp;  

 

            f(str,len,n+1);  

            strcpy(str,p);  

        }  

    }  

    free(p);  

}  

 

int main(int argc, char **argv)

{  

    char str[] = "xyz";  

    f(str,3,0);  

    printf("\n");  

    return 0;  

}

 

2011 模拟 c语言 高职

1.5. 程序设计(满分 20 分)

任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。

比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。

 

请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:

[82962, 75933, 63954, 61974]

其中数字的先后顺序可以不考虑。

 

解:这道题很不理解题意

 

目录
相关文章
|
编解码 物联网 Android开发
|
机器学习/深度学习 PyTorch 算法框架/工具
空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch)
想直接看公式的可跳至第三节 3.公式修正 一、为什么需要SPP 首先需要知道为什么会需要SPP。 我们都知道卷积神经网络(CNN)由卷积层和全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对数据大小有要求的则是第一个全连接层,因此基本上所有的CNN都要求输入数据固定大小,例如著名的VGG模型则要求输入数据大小是 (224*224) 。
2441 0
|
9月前
|
Web App开发 前端开发 JavaScript
折腾之王:JavaScript之父Brave浏览器与BAT的诞生
2015年,JavaScript之父Brendan Eich再次创业,推出Brave浏览器和加密货币Basic Attention Token(BAT),旨在颠覆传统广告行业。Brave屏蔽广告、保护隐私,加载速度快;BAT则通过奖励机制让用户、内容创作者和广告主三方受益。尽管面临用户习惯和巨头竞争的挑战,Brave已拥有超4000万月活跃用户,成为全球增长最快的隐私浏览器,引领Web3生态发展。
325 22
折腾之王:JavaScript之父Brave浏览器与BAT的诞生
|
12月前
|
JavaScript 前端开发 应用服务中间件
Vue开发中,在实现单页面应用(SPA)前端路由时的hash模式和history模式的区别及详细介绍
Vue开发中,在实现单页面应用(SPA)前端路由时的hash模式和history模式的区别及详细介绍
390 0
Axure 多平台自适应
Axure 多平台自适应
270 0
|
Linux 数据处理
Linux中的numfmt命令:数字格式化的强大工具
**numfmt命令在Linux中用于数字格式化,如转换进制、添加千位分隔符、处理字节单位。它支持从文件读取数字并能自定义分隔符、小数位数。例如:`numfmt 12345` 输出12,345(十进制),`numfmt -b 255` 输出11111111(二进制),`numfmt --to=iec 1000000` 输出976.6K(字节单位)。使用时注意选项组合及单位标准。**
|
JavaScript Java 测试技术
基于springboot+vue.js的库存管理系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的库存管理系统附带文章和源代码设计说明文档ppt
189 0
|
设计模式 数据库 iOS开发
建站新功能上线,我用5分钟搭好一个网站!
建站新功能上线,我用5分钟搭好一个网站!
565 3
建站新功能上线,我用5分钟搭好一个网站!
|
机器学习/深度学习 数据采集 监控
PyTorch学习系列教程:三大神经网络在股票数据集上的实战
近几天的推文中,分别对深度学习中的三大神经网络——DNN、CNN、RNN进行了系统的介绍,今天本文以股票数据集为例对其进行案例实战和对比。 对这三类神经网络不熟悉的读者,欢迎查看历史推文: PyTorch学习系列教程:深度神经网络【DNN】 PyTorch学习系列教:卷积神经网络【CNN】 PyTorch学习系列教程:循环神经网络【RNN】
1705 0
PyTorch学习系列教程:三大神经网络在股票数据集上的实战
|
机器学习/深度学习 消息中间件 存储
携程实时智能检测平台建设实践
Prophet基本覆盖了携程所有业务线,监控指标的数量达到10K+,覆盖了携程所有订单、支付等重要的业务指标。
携程实时智能检测平台建设实践