C语言趣味题目

这些是我搜集到的觉得有点意思的C语言题目,都不复杂,却有些难度,有兴趣的人可以一试(有些可能也不能说难,但可能不容易想答案):

  •  a+++++b是合法的C表达式吗?为什么?
  • 如何用宏定义实现SWAP(a,b),交换a和b的值。
  • 写一个C程序,不使用分号,实现输出Hello,World这个字符串。
  • 想一个算法,判断一个链表是否成环?

相关文章


7 Responses to “C语言趣味题目”

  • rockywjj Says:

    I was glad to talk with you in the lunch time, really.
    You should hava a good impress about my road.
    I thirst for you joining us, anytime. My email is rockywjj@gmail.com
    God will give you a hand in your road of pursuing that pretty girl 

  • Dig Says:

    1.
    合法,++ 是单目运算符;

    2.
    #define SWAP(a,b) \
    (a) = (a) + (b); \
    (b) = (a) - (b); \
    (b) = (a) - (b);

    3.
    void main()
    {
    if (printf("Hello, World\n")) {}
    }

    4.
    Node *p = first;
    Node *q = first;
    while(q) {
    if ( p == q ) break;
    q = q->next;
    }

  • zhongshu Says:

    Dig同学,第1,2,4道做错了, 第一道题实际上很有难度。 第二道估计你应该做对了,但有笔误,第四道题,你只考虑了头尾相连的成环的情况,还有一种情况是从中间某个地方开始成环你没有考虑。

  • Dig Says:

    是,考虑欠缺了。中间开始有环的,最死的遍历能解决,不知道有没有优解

  • zhongshu Says:

    有优解,想知道答案的话给我发邮件好了,我不能在这里放答案。

  • Dig Says:

    试着编译了一下第一题,果然报错了,a++++这里错了,错误信息报告没有左值可以操作??
    问题应该出现在第二个++上吧?

    顺便说一下,博主起的真早啊,或者睡的很晚

  • zhongshu Says:

    呵呵,是起的有点早,已经接近答案了。

Leave a Reply