Mar 25, 2011

变态的面试题

从下面两个地方看到的 via Google Reader ...
http://www.kernelchina.org/?q=node/961
http://coolshell.cn/articles/3961.html
int n=20;
for(int i=0; i<n; i--){
    printf("-");
}
将上面的代码,修改或添加一个字符,使程序可以输出20个减号.(据说c有三种;java有二种修改方法)
C代码:
#include <stdio.h>

int main(int argc, char *argv[])
{
    /* first way */
    int n=20;
    for(int i=0; i<n; n--){
        printf("-");
    }
    printf("\n");

    /* second way */
    n=20;
    for(int i=0; -i<n; i--){
        printf("-");
    }
    printf("\n");

    /* third way */
    n=20;
    for(int i=0; i+n; i--){
        printf("-");
    }
    printf("\n");

    return 0;
}

Java代码:
class Test
{
    public static void main(String[] args)
    {
        /*
        int n=20;
        for(int i=0; i<n; i--){
            printf("-");
        }
        */

        /* first way */
        int n=20;
        for(int i=0; i<n; n--){
            System.out.print("-");
        }
        System.out.print("\n");

        /* second way */
        n=20;
        for(int i=0; -i<n; i--){
            System.out.print("-");
        }
        System.out.print("\n");
    }
}
C中的第三种:
/* third way */
n=20;
for(int i=0; i+n; i--){
    System.out.print("-");
}
System.out.print("\n");
$ javac Test.java
Test.java:28: incompatible types
found   : int
required: boolean
        for(int i=0; i+n; i--){
                      ^
1 error

No comments:

Post a Comment

您的评论将使我blog更有动力~