读书人

一个不算作呕的面试题

发布时间: 2012-08-24 10:00:20 作者: rapoo

一个不算恶心的面试题
写一个函数,函数原型如下:

C/C++ code
void fun(int n){}

比如,当n=5时:打印
1
2
3
4
5
4
3
2
1
要求只允许使用一个循环

[解决办法]
C/C++ code
void f(int n){    int i;    for(i=1;i<n*2;i++)        printf("%d\n",(i<=n)?i:2*n-i);}
[解决办法]
C/C++ code
void f(int n){    for(int i=1;i<2*n;++i)    {        printf("%d\n",n-abs(n-i));    }}
[解决办法]
C/C++ code
return ((n==5&&printf("%d/n",n))||(printf("%d/n",n)&&p(n+1)&&printf("%d/n",n)));
[解决办法]
C/C++ code
return ((n==5&&printf("%d\n",n))||(printf("%d\n",n)&&p(n+1)&&printf("%d\n",n)));
[解决办法]
还是来个可读性好一点的吧:)
C/C++ code
void fun(int n){    for(int i = 1; i < 2 * n; ++i)    {        if(i <= n)        {            printf("%d\n", i);        }        else        {            printf("%d\n", 2 * n - i);        }    }}
[解决办法]
C/C++ code
int test(int n){    return ((n==5&&printf("%d\n",n))||(printf("%d\n",n)&&test(n+1)&&printf("%d\n",n)));}int main(){    test(1);    return 0;}
[解决办法]
for(int i=1;i<=(n*2-1);i++)
{
if(i<=n)
{
cout<<i<<endl;
}
else
{
cout<<2*n-i<<endl;
}
}
[解决办法]
C/C++ code
// 玩玩#include <stdio.h>void fun(int n);int main(void){    fun(-5);    return 0&getchar();}void fun(int n){    int av=0,n1=n>0?1:-1,nv=n1>0?1:0,i=n1;    while(((((nv?i<n:i>n)&& i)||(!av&& (av=!av, n1=-n1)))&&(printf("%d\n", i),i += n1)));}
[解决办法]
C/C++ code
void fn(int N){  for(int i=0,j=1;i<j;){    printf("%d,j-i);    j>=N?++i:++j;}}
[解决办法]
探讨

C/C++ code

return ((n==5&&printf("%d\n",n))||(printf("%d\n",n)&&p(n+1)&&printf("%d\n",n)));

更正下。

[解决办法]
for(int i=1;i<=(n*2-1);i++)
{
if(i<=n)
{
cout<<i<<endl;
}
else
{
cout<<2*n-i<<endl;
}
}

读书人网 >C++

热点推荐