2011国信蓝点(桥)杯C语言试题


填空题:

第一题:

小李将本金1000元,存入银行,存期5年 ,年利率3%。 小王每年拿出100元资助贫困儿童

 

double money=1000;

int n=5;

int i;

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

{

          money=________;

         money-=100;

}

printf("%.2f\n",money);

 

第二题:

用迭代法求2的平方根

double n=2;

double a=0;

double b=n;

while(fabs(a-b)>1E-15)

{

a=(a+b)/2;

b=________;

}

printf("%f\n",a);

 

第三题:

求最小公倍数

int f(int a,int b)

{

  int i;

  for(i=a;;_____)

  {

     if(i%b==0) return;

  }

}

 

第四题:

求两个日期间的天数,先求每个日期距离1年1月1日天数的差值,再进一步做差

struct MyDate

{

       int year;

       int month;

       int day;

};

int GetAbsDaays(MyDate x)

{

       int i;

       int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31};

       int year=x.year-1 //因为欲求距离1年1月1日的差值

       int days=year*365+year/4-year/100+year/400;

       if(x.year%4==0&&x.year0!=0||x.year@0==0) month_day[1]++;

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

              days+=month_day[i];

       days+=x.day-1;

       return days;

}

int GetDiffDays(MyDate a,MyDate b)

{

       return GetAbsDays(b)-GetAbsDays(a);

}

int main(int argc,char *argv[])

{

       MyDate a={1842,5,18};

       MyDate b={2000,3,13};

       int n=GetDiffDays(a,b);

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

}

 

第五题:轮转数(每个字符依次向右移)

例:

字符串abcd 经过一次轮转后为dabc 此时位移记作1

字符串abcd 进过两次轮转后为 cdab 此时位移记作2

以下代码为求字符串S,经过n次位移后的新字符串

void shift(char *s,int n)

{

       char *p;

       char *q;

       int len=strlen(s);

       if(len==0) return;

       char *s2=(char *)malloc(_______);

       p=s;

       q=s2+n%len;

       while(*p)

       {

              *q++=*p++;

              if((q-s2)=len)

              {

                     *q=_____;

                     q=s2;

              }

       }

       strcpy(s,s2);

       free(s2);

}

 

第六题:

金字塔数

space 为塔底边距离左边的空白长度

x 塔底中心字母

例:当space=0,x='C'

输出:

  A

 ABA

ABCBA

当space=2,x='E'

      A

     ABA

    ABCBA

   ABCDCBA

  ABCDEDCBA

 

void h(int space,char x)

{

       int i;

       if(x<'A'||x>'Z') return;

       _________________;

       for(i=0;i<space;i++) printf(" ");

       for(i=0;i<x-'A';i++) printf("%c",'A'+i);

       for(i=0;i<=x-'A';i++) printf("%c"____);

       printf("\n");

}

 

第七题:中奖计算 函数返回所中的最大连续数字的个数

 

int g(int a,int b)

{

 char sa[]="00000000";

 char sb[]="00000000";

 int n;

 int i,j;

 sprintf(sa,"�",a);

 sprintf(sb,"�",b);

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

 {

        for(j=1;j<=8-i;j++)

        {

               char t=______;

               sa[i+j]=0;

               if(strstr(sb,sa+i))

               {

                      if(j>n) ________;

 

               }

               sa[i+j]=t;

        }

 }

 return n;

}

 

 

 

编程题:

 

第八题:字符串处理,满足以下要求:

1、首字母转换为大写

2、数字与字母,字母与数字间均用下划线(_)隔开

3、多个空格转换为一个

 

第九题:表格

例:

输入: cat,dog,good

       1,2,5

       do not use,,that

输出:

+----------+---+----+

  cat  |dog|good|

+----------+---+----+

    2|  5 |

+----------+---+-----+

|do not use|   |that |

+----------+----+----+

 

第十题:

 

有5个砝码 重量为1,3,9,27,81 可以组合成1-121之间任意整数

对于用户给定的重量,给出砝码方案

如:输入5

输出:9-3-1

输入19

输出27-9+1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值