| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2540 人关注过本帖
标题:几个小题,娱乐一下
取消只看楼主 加入收藏
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
 问题点数:0 回复次数:4 
几个小题,娱乐一下
1. 有段程序如下:
程序代码:
#include <stdio.h>
int main(void)
{
    printf("abcdefg\n");
    return 0;
}

问:在不修改main函数的前提下,如何输出:
abcdefg
hijklmn
opq rst
uvw xyz

2. 有段程序如下:
程序代码:
#include <stdio.h>
int main(void)
{
    int i = 0;
    for (i = 1; i <= 9; i = _________________)
        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");

问:在什么情况下,这段代码输出为:
2
收到的鲜花
  • 永夜的极光2008-03-11 18:19 送鲜花  8朵   附言:有意思
搜索更多相关主题的帖子: 娱乐 
2008-03-11 16:41
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
[bo]以下是引用 [un]cosdos[/un] 在 2008-3-11 18:22 的发言:[/bo]
/* 第二题如下 */
#include <stdio.h>
int main(void)
{
    int i = 0;
    for (i = 1; i <= 9; i = 10, printf("  4  7 10 13 16 19 22 25"))
        printf("%3d", i);
    printf("\n");
    return 0;
}
 

这个是可以的。其实,直接在空上写 printf("  4  7 10 13 16 19 22 25")也是可以的,因为printf的返回值就是一个int类型整数,含义是打印的字符的个数。
还有其它多种办法。:-)

坚决不跟用TC的人打交道!
2008-03-11 18:45
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分: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函数的行为。
收到的鲜花
  • 永夜的极光2008-03-11 19:13 送鲜花  8朵   附言:有道理
  • cosdos2008-03-11 19:20 送鲜花  6朵   附言:我很赞同
  • cosdos2008-03-11 19:20 送鲜花  2朵   附言:我很赞同

坚决不跟用TC的人打交道!
2008-03-11 19:10
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
[bo]以下是引用 [un]永夜的极光[/un] 在 2008-3-11 18:53 的发言:[/bo]


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

因为stdio.h是默认包含的,puts、printf等函数也是属于build-in的。
再说一点,TC能编译通过不能说明问题。

坚决不跟用TC的人打交道!
2008-03-11 19:16
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
总结一下吧。
(1)可以参考http://hi.baidu.com/akiraww/blog/item/db1be589a4f6d5b00e2444e5.html
(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]]

坚决不跟用TC的人打交道!
2008-03-11 20:49
快速回复:几个小题,娱乐一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044671 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved