您的位置:首页 > 其它

第一届蓝桥杯 部分题

2016-03-16 21:44 204 查看
/*第一题,以下函数的功能是将任意整数进行因式分解,

请完成该程序的空缺使函数能够正常运算

#include<stdio.h>

void f(int n)

{

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

{
if(n%i==0)
//———–(1)————
{
printf("%d ", i);
n = n / i;
}

 }

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

}

int main()

{
f(20);
return 0;

}

*/

/*第二题,以下函数的功能是将给定字符串进行倒序输出,

请完成该函数空缺部分。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

    char* p = "abcdef";

    char* q = (char*)malloc(strlen(p)+1);
int len=strlen(p);
for(int i=0;i<len-1;i++)
q[len-i-2] = p[i+1];

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

    q[len]="\0";
printf("%s\n", q);
return 0;

}

总结:指针就是数组 

*/

/*

第三题,(这题的题目到底是要干啥,本人到现在沿未明了,

数学学统计好,但可以确定原题给出的代码就是如此)

#include<stdio.h>

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;
}

int main()

{
printf("%d\n",f(9,8));
return 0;

}

*/ 

/*

第四题,任意给出一个四位数,

把它重新组成一个四位的最大数和一个最小数,

算出两者间的差。

例如:3721这个数,可以重组成:7321和1237,相数之差为7321-1237

请完善下面这个函数,以实现此功能

#include<stdio.h>

int f(int n)

{
int N[4];
for(int i=0; i<4; i++)
{
N[3-i] = n % 10;
n/=10;
}

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

{
for(int j=0; j<3-i; j++)
if(N[j]>N[j+1])
{
int t = N[j+1];
N[j+1] = N[j];
N[j] = t;
}

}

int n_min=0;

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

 n_min = n_min * 10 + N[i] ;

int n_max = 0;

for(int i=3; i>=0; i--)

 n_max = n_max * 10 + N[i];

 

 

 printf("%d %d\n",n_max,n_min);

return n_max-n_min;

}

int main()

{
printf("%d\n",f(3721));
return 0;

}

*/

/*

第五题,假设有m+n个人,其中,

m个人手持面额为5角的硬币,

n个人手持面额为1元的硬币,

他们都要乘车买票,

现假设售票员手中无零钞,

票价为5角,

下面这个函数就可以算出这m+n个人所有可能的买票情况,

请完善此函数。

//m: 持有5角币的人数

//n: 持有1元币的人数

//返回:所有顺利完成购票过程的购票次序的种类数*/

#include<stdio.h>

int f(int m, int n)

{

if(m < n) return 0;

 if(n==0) return 1;

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

}

int main()

{

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: