求第二届“国信蓝点杯”C语言高职组的答案,给出了题目
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.year%100!=0||x.year%400==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,"%8d",a);
sprintf(sb,"%8d",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;
}
[ 本帖最后由 huwengui 于 2011-5-16 17:23 编辑 ]