| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1519 人关注过本帖
标题:极度无聊之作
只看楼主 加入收藏
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
结帖率:92.86%
收藏
 问题点数:0 回复次数:14 
极度无聊之作

#include <stdio.h> main(_){char*x="*b#**000**I#*****2***0***#-.**2*-.*-#-.**2*-4.#*****2****6#****00**0.#";while(_=*x/4)_-=8,printf("\n%*s"+!!_,_+_,"_/_/_/"+*x++%4*2);}

昨天看了CSDN一个贴子,有人拿这个程序来考别人,今天十分无聊就改了改。

搜索更多相关主题的帖子: CSDN main char include printf 
2004-09-11 22:39
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

-_-||| 果然是如题

2004-09-12 00:27
amoeba
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-8-9
收藏
得分:0 

_/ _/ _/ _/ _/_/_/ _/_/_/ _/_/_/ _/ _/ _/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/_/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/ _/_/ _/ _/ _/_/ _/_/ _/ _/ _/ _/ _/ _/_/ _/_/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/_/ _/_/_/ _/ _/ _/_/_/ _/

靠,强!


2004-09-12 10:51
忆楠
Rank: 1
等 级:新手上路
帖 子:721
专家分:0
注 册:2004-7-5
收藏
得分:0 

我晕.........


点 鼠 标 , 救 饥 民 http://www./
2004-09-12 11:52
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
眼花

2004-09-12 13:18
chengstone
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:562
专家分:226
注 册:2004-4-3
收藏
得分:0 
其实我很想知道为什么 不是很明白 谁给解释解释

qq:69558139
2004-09-12 16:40
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

靠,不好意思,自己的网名都搞错了

谢谢amoeba提醒。

改一下:

#include <stdio.h> main(_){char*x="*b#**000**I#*******2*0***#-.****5.*-#-.****54.#*******2**6#****00**0.#";while(_=*x/4)_-=8,printf("\n%*s"+!!_,_+_,"_/_/_/"+*x++%4*2);}


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-09-12 21:44
kuangjingbo
Rank: 1
等 级:新手上路
帖 子:312
专家分:0
注 册:2004-4-24
收藏
得分:0 

to chengstone

我把程序分了行,这样就有点清楚了:

#include <stdio.h> void main(int _)

{

char*x="*b#**000**I#*****2***0***#-.**2*-.*-#-.**2*-4.#*****2****6#****00**0.#"; while(_=*x/4) _-=8,printf("\n%*s"+!!_,_+_,"_/_/_/"+*x++%4*2); } 1.在c语言中,标志符号的定义是:第一个可以是下划线或字母,以后的可以是划线或字母或数字

此程序就用了一个下划线作为标志符.

2.在c语言中,有一中逗号运算符,他从左到右进行运算.返回最右面的表达式的值

经过上面的等价改造,程序变成:

#include <stdio.h> void main(int a)

{

char*x="*b#**000**I#*****2***0***#-.**2*-.*-#-.**2*-4.#*****2****6#****00**0.#"; while(a=*x/4)

{

a-=8;

printf("\n%*s"+!!a,a+a,"_/_/_/"+*x++%4*2);

} } 程序的巧妙之处就在printf的构造上.

其中"\n%*s"   *有特殊用法 ,它用来给出格式化串的长度

另外,还有"\n%*s"+!!a  的加法操作牵扯到指针的加法

以及!!a ,相当于 ((a==0)?0:1)

等内容

经鉴定,此题极其阴险,确实无聊!!


永不放弃!
2004-09-13 00:40
kuangjingbo
Rank: 1
等 级:新手上路
帖 子:312
专家分:0
注 册:2004-4-24
收藏
得分:0 

另外,我在vc的环境中编译不过去

需要把main(_)改为:

void main(int _)


永不放弃!
2004-09-13 00:42
amoeba
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2004-8-9
收藏
得分:0 

2004-09-14 10:53
快速回复:极度无聊之作
数据加载中...
 
   



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

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