第一次招新考试--编程答案

四、编程题(编程题答案不唯一,以下答案仅供参考)(8+8+10+10+10+12)

1.请编写程序实现以下问题,一个整数,它加上100后是一个完全平方数,再加上168还是一个完全平方数,请问该数是多少?(完全平方数:b的平方等于aa就是一个完全平方数,意思就是如果一个数能够用另一个数的平方表示这个数就是完全平方数)

#include<stdio.h>

#include<math.h>

int main()

{

int x,y;

for(int i=1;i<100000;i++){

x=sqrt(i+100);

y=sqrt(i+168);

if(x*x==i+100&&y*y==i+168){

printf("%d\n",i);

break;

}

}

return 0;

}

2.请写出一个函数实现以下功能:对于一个整形的数字进行分析,每一位出现的偶数依次取出,构成一个新数,要求高位仍在高位,低位仍在低位。

如:685321----->682

#include<stdio.h>

void fun(long l,long *p){

int d;

long s1=1;

*p=0;

while(l>0){

d=l%10;

if(d%2==0){

*p=d*s1+*p;

s1*=10;

}

l/=10;

}

}

int main()

{

  long l,p;

  scanf("%ld",&l);

  fun(l,&p);

  printf("%ld",p);

  return 0;

 }

3.现有广义斐波那契级数的前n项为:1,1,1,3,5,9,17,31...... 则输出广义斐波那契的前15项,并且输出前15项广义斐波那契的和。要求:定义一个函数feibo(),所有的运算代码在feibo()里执行。

#include<stdio.h>

void feibo()

{

int x,sum=3;

int a=1,b=1,c=1;

printf("%d  %d  %d  ",a,b,c);

for(int j=4;j<15;j++)

{

x=a+b+c;

a=b;b=c;c=x;

sum+=x;

printf("%d  ",x);

}

printf("\n15位广义斐波那契和为:%d",sum);

}

int main()

{

feibo();

return 0;

 }

4.1234个数字,请编写程序将能组成的互不相同且无重复数字的三位数字输出出来。如123 124 134 ......

#include<stdio.h>

int main()

{

int i,j,k;

for(i=1;i<5;i++){

for(j=1;j<5;j++){

for(k=1;k<5;k++){

if(i!=k&&i!=j&&j!=k){

printf("%d,%d,%d\n",i,j,k);

}

}

        }

    }

    return 0;

}

5.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?

#include <stdio.h>

int main()

{

int day,x1,x2=1;

for(day=9;day>0;day--)

{

x1=(x2+1)*2;

x2=x1;

}

printf("第一天摘了%d个桃子",x1);

return 0;

}

6.小王同学是个爱思考问题的孩子,最近她新学习了指针,探究了字符串strcat()的奥秘后有了个新的想法,请你帮助小王同学解决这个问题吧

仅输入两个包含字母和数字的字符串,将字母连接起来,数字连接起来,先输出字母,再输出数字。

例如:

输入abc123def456 再输入qwe456tyu123  

输出:

abcdefqwetyu

123456456123

#include<stdio.h>

#include<string.h>

int main()

{

char a[100],b[100],c[100],d[100];

char *p1=a,*p2=b,*p3=c,*p4=d;

gets(a);

gets(b);

while(*p1!='\0'){

if((*p1>='A'&&*p1<='Z')||(*p1>='a'&&*p1<='z')){

*p3++=*p1;

}

p1++;

}

while(*p2!='\0'){

if((*p2>='A'&&*p2<='Z')||(*p2>='a'&&*p2<='z')){

*p3++=*p2;

}

p2++;

}

*p3='\0';

p1=a,p2=b;

while(*p1!='\0'){

if(*p1>='0'&&*p1<='9'){

*p4++=*p1;

}

p1++;

}

while(*p2!='\0'){

if(*p2>='0'&&*p2<='9'){

*p4++=*p2;

}

p2++;

}

*p4='\0';

puts(c);

puts(d);

return 0;

}

发布者:最高管理员   点击数:504   发布时间:2018-11-03   更新时间:2018-11-03