很怪的输出问题 我们老师不会

lovekurtcobain 2003-06-15 12:40:44
用C写一个程序
要求其能完整地输出自己的源代码
一个字不多 一个字不少//

有点微妙//
...全文
57 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
qflash 2003-06-15
  • 打赏
  • 举报
回复
输出二进制还可以
bluedodo 2003-06-15
  • 打赏
  • 举报
回复
有意思,以前人没想过还能用别的办法。真笨
ilmlb 2003-06-15
  • 打赏
  • 举报
回复
今天没有时间了,学校要熄灯了。明天写给你看。
bigzhu 2003-06-15
  • 打赏
  • 举报
回复
能完整地输出自己的源代码,仔细想这句话啊!
图林大奖得主,Ken Thompson那个能输出自己的全部原代码吗?如果解释说“自己的全部原代码”只是指main及其以下的话,那我没有话说。


除了zhukeke说的 读取你的程序的源文件,然后输出 好像没有别的办法可以这样做啊
flynn27 2003-06-15
  • 打赏
  • 举报
回复
其实很简单的!
你只要多看一下书就行了
21st_centry_fox 2003-06-15
  • 打赏
  • 举报
回复
谁能解释这个程序的原理?
看上去很深奥的样子。。。
还有我发现这个程序还是不行呀?
但是程序的预处理部分它没有输出呀。
还有
我发现当我对程序作出一些改动以后它也没有能显示出来。
另外,S[]里的东东它打出来的都是 ASC II 码,也显得不尽如人意
test7979 2003-06-15
  • 打赏
  • 举报
回复
老师怎么可能不会!

这个东西在 C FAQ 里面有答案的
zhuk 2003-06-15
  • 打赏
  • 举报
回复
steedhorse(晨星)
来解释一下吧,光写出来,看不太懂。。

解释散分
yangyang123 2003-06-15
  • 打赏
  • 举报
回复
printf("char \ts[] = {\n");
printf("\r%d,\n",s[i]);
什么意思呀,偶菜,看不懂啊,哪位哥哥姐姐能告诉我嘛?
我发现我们现在学的和以前的写法都不一样,哭了~
pengzhenwanli 2003-06-15
  • 打赏
  • 举报
回复
up
好吃的肥牛 2003-06-15
  • 打赏
  • 举报
回复
收藏
dingyanwei 2003-06-15
  • 打赏
  • 举报
回复
将自己做个副本然后转换得了。
waterflier 2003-06-15
  • 打赏
  • 举报
回复
赫赫,Ken Thompson的程序不行,他没有输出main以前的东西
robertcarlos 2003-06-15
  • 打赏
  • 举报
回复
嘿嘿,别钻牛角
xiaoyige886 2003-06-15
  • 打赏
  • 举报
回复
谁来解释一向呢!
langhaixin 2003-06-15
  • 打赏
  • 举报
回复
的确如此,以前就看过了
lovekurtcobain 2003-06-15
  • 打赏
  • 举报
回复
是这样么

我们老师怎么没想到??
呆萌-鱼 2003-06-15
  • 打赏
  • 举报
回复
1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家、UNIX的鼻祖、C语言的创始人之一,图林大奖得主,Ken Thompson,上台的第一句话便是:“我是一个程序员,在我的1040表上,我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序。今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序是一个自已复制自已的C语言程序,如下
#include <stdio.h>
char s[] = {
'\t',
'0',
'\n',
'}',
';',
'\n',
'\n',
'm',
'a',
'i',
'n',
'(',
')',
'\n',
'{',
'\n',
'\t',
'i',
'n',
't',
' ',
'i',
';',
'\n',
'\n',
'\t',
'p',
'r',
'i',
'n',
't',
'f',
'(',
'\"',
'c',
'h',
'a',
'r',
' ',
'\\',
't',
's',
'[',
']',
' ',
'=',
' ',
'{',
'\\',
'n',
'\"',
')',
';',
'\n',
'\t',
'f',
'o',
'r',
'(',
'i',
'=',
'0',
';',
's',
'[',
'i',
']',
';',
'i',
'+',
'+',
')',
'\n',
'\t',
'\t',
'p',
'r',
'i',
'n',
't',
'f',
'(',
'\"',
'\\',
'r',
'%',
'd',
',',
'\\',
'n',
'\"',
',',
's',
'[',
'i',
']',
')',
';',
'\n',
'\t',
'p',
'r',
'i',
'n',
't',
'f',
'(',
'\"',
'%',
's',
'\"',
',',
's',
')',
';',
'\n',
'}',
0
};

void main()
{
int i;
printf("char \ts[] = {\n");
for(i=0;s[i];i++)
printf("\r%d,\n",s[i]);

printf("%s",s);



}
晨星 2003-06-15
  • 打赏
  • 举报
回复
#include<stdio.h>
char*s="#include<stdio.h>%cchar*s=%c%s%c;%cmain(){printf(s,10,34,s,34,10);}";
main(){printf(s,10,34,s,34,10);}
lovekurtcobain 2003-06-15
  • 打赏
  • 举报
回复
问题不是这么简单//不然我们老师不会认为棘手了

我忘了说:关键的问体就是不允许————就是楼上说的那种偷懒的办法
加载更多回复(1)

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧