1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
答案:
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}
程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用
户服务的,不是为我们程序员服务的!”
2) 用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:
fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!
fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!
现在用一个函数fn(int n,int flag)实现,当flag为0
时,实现fn1功能,如果flag为1时,实现fn2功能!要求的是效率
答案:定义一个二维数组 float t[2][5]存入{{2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!}}然后给出一个
循环:
for(i=0;i<5;i++)
{
temp=temp+n/t[flag];
}
最后得到计算值!
呵呵,典型的空间换时间的算法!
3) 打印如下图案,共19行,只能有一个for循环(题目已经提供)
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*****************
***************
*************
***********
*********
*******
*****
***
*
for(i=0;i<19;i++)
{
}
答案:
for(i=0;i<19;i++)
{
static char *a[] =
{
" *",
" ***",
" *****",
" *******",
" *********",
" ***********",
" *************",
" ***************",
" *****************",
" *******************",
" *****************",
" ***************",
" *************",
" ***********",
" *********",
" *******",
" *****",
" ***",
" *"
};
puts(a[i]);
}
_^_^_
一些经典的面试题及答案
最新推荐文章于 2024-10-14 20:26:31 发布