当前位置: 代码迷 >> C语言 >> 几个小题,娱乐一下
  详细解决方案

几个小题,娱乐一下

热度:121   发布时间:2008-03-11 19:10:03.0
[bo]以下是引用 [un]永夜的极光[/un] 在 2008-3-11 18:47 的发言:[/bo]

第一题这次可以了,TC2测试通过

#define __STDIO_DEF_
#include
void printf(char *s)
{
    puts("abcdefg\nhijklmn\nopq rst\nuvw xyz\n");
}
int main(void)
{
    printf("abcdefg\n");
    return 0;
} ...

不建议这样做。
甚至你直接定义一个宏:
#define printf(x) printf("abcdefg\nhijklmn\nopq rst\nuvw xyz\n")
或者针对这个题目
#define printf(x) printf(x"hijklmn\nopq rst\nuvw xyz\n")
都可以。
但不建议修改直接printf函数的行为。
本帖最近评分记录

坚决不跟用TC的人打交道!
2008-03-11 11:10:03
spring4676

来 自:内蒙古大草原
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-12-10
  得分:0 
这么多人那
真厉害
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]永夜的极光[/un] 在 2008-3-11 18:53 的发言:[/bo]


突然想想,puts也是在stdio.h里面定义的,应该也没有了才对呀,怎么TC还能测试通过呢?

因为stdio.h是默认包含的,puts、printf等函数也是属于build-in的。
再说一点,TC能编译通过不能说明问题。
----------------解决方案--------------------------------------------------------
怎么没想到宏呢,
看来宏用的太少了。
----------------解决方案--------------------------------------------------------
第3题
int s()
{static int i=-10;
i+=10;
return i;
}
----------------解决方案--------------------------------------------------------
好像多了个括号替换一下

#define s s()
int s
{static int i=-10;
i+=10;
return i;
}
本帖最近评分记录
  • zbqf109 +4 Very Good! 2008-3-11 20:37

How are you 怎么是你?
How old are you   怎么老是你?
2008-03-11 12:33:37
lv5sky

等 级:新手上路
帖 子:76
专家分:0
注 册:2007-10-5
  得分:0 
第三题!
在if (s > 0)不成立的而 else if (s > 9)成立的条件下时输出2 的结果!
----------------解决方案--------------------------------------------------------
总结一下吧。
(1)可以参考http://hi.baidu.com/akiraww/blog/item/db1be589a4f6d5b00e2444e5
(2)几种参考答案:
a.  i = printf("  4  7 10 13 16 19 22 25")
b.  i = (printf("  4  7 10 13 16 19 22 25"), 10)
       用逗号表达式是因为预防printf执行失败之后返回一个负数
c.  i = i + (printf("\b\b\b%3d", 3 * i - 2)) * 0 + 1
d.  i = 10) ; for (i = 1; i <=25; i+=3
(3) 几种参考答案
a.  #define printf(x)  printf("2\n")
       这种方法很无耻,-_-
b.
程序代码:

int foo()
{
    static int i = -10;
    return i += 10;
}
#define  s  foo()

c.
程序代码:

  int foo()
  {
      printf("2\n");
      exit(0);
  }
  #define  s  foo()


就这些了,欢迎补充。

[[it] 本帖最后由 zbqf109 于 2008-3-11 20:52 编辑 [/it]]
----------------解决方案--------------------------------------------------------
1. 有段程序如下:复制内容到剪贴板代码:
#include <stdio.h>
#define abcdefg abcdefg
                hijklmn
                opq rst
                uvw xyz
int main(void)
{
    printf("abcdefg\n");
    return 0;
}
2. 有段程序如下:复制内容到剪贴板代码:
#include <stdio.h>
int main(void)
{
    int i = 0;
    for (i = 1; i <= 9; i = _i+3________________)
        printf("%3d", i);
    printf("\n");
    return 0;
}问:在空白处填什么使得程序输出为:
1  4  7 10 13 16 19 22 25

3. 有段代码如下:复制内容到剪贴板代码:
if (s > 0)
    printf("1\n");
else if (s > 9)
    printf("2\n");
else
    printf("3\n");
----------------解决方案--------------------------------------------------------
for (i = 1; i <= 9; i = 10, printf("  4  7 10 13 16 19 22 25"))
        printf("%3d", i);
看不懂,哪位高手告诉我
----------------解决方案--------------------------------------------------------
  相关解决方案