当前位置: 代码迷 >> C语言 >> [有趣的代码] 征 求: 万花筒代码
  详细解决方案

[有趣的代码] 征 求: 万花筒代码

热度:472   发布时间:2005-02-06 23:30:00.0
char*u="]P!F+++4!<85!1+-5/-3!00////1!1/-3-/1!3C" "3!3C3!3/-1+/3!3-//--5!5++3+/5""!5""=7!57=!7+-/" "=!=/=!=/=!=/;=*!?->" "!?->!?->!@,>" "!@+?!I-4""!I+4" "q;/=!;" "/=!;/=!;75" "!73/-3!" "/-+.,-" "-11!/1" "/0+01!1/" "+4+.3!19" ",.5!" "1//5" "5!11+57!" "3=7!3/,.=!" "<.=!<.=!<." "=!<.=!<.=!" "<.=!<.=!<." "=!<,?!<+@!" "U!jj" "jj" ",*p,*q,*s," "y[1057];in" "t t=1," "o,i=" "0;f(v){while" "(p++-s<*s){i""f(" "*p" "==33)v&&(y[i" "++]=34),y[i+" "+]=10,t=1;else" "{for(o=(*p+t" "*2+!v)%43,v&&(y[i++]" "=34);o--;)(y[i""++]=" "t?*q++:32)==126&&!v&" "&(y[i-1]=34);t=!t;}}" "}main(){q=p=s=u;whil" "e(i<7)y[i++]=~char*u" "=~[i];f(1);s=p,*s-=3" "4;q=u+247;y[i++]=34;" "t=1;f(0);puts(y);}",* p,*q,*s,y[1057];int t=1 ,o,i=0;f(v){while(p++- s<*s){if(*p==33)v&&(y[i ++]=34),y[i++]=10,t=1; else{for(o=(*p+t*2+!v)% 43,v&&(y[i++]=34);o--; )(y[i++]=t?*q++:32)==126 &&!v&&(y[i-1]=34);t=!t ;}}}main(){q=p=s=u;while (i<7)y[i++]="char*u="[i ];f(1);s=p,*s-=34;q=u+247;y[i++]= 34;t=1;f(0); puts(y);} 用了个笨办法,虽然这个不能变化(原因只是我今天写这个程式时用的字模太小,加不进对换字模的语句了,但这个方法完全可以做到),类似打印自己的。 程式的前面是字模: "]P!F+++4!<85!1+-5/-3!00////1!1/-3-/1!3C3!3C3!3/-1+/3!3-//--5!5++3+/5!5=7!57=!7+-/=!=/=!=/=!=/;=*!?->!?->!?->!@,>!@+?!I-4!I+4" 这个是"甲"字 "q;/=!;/=!;/=!;75!73/-3!/-+.,--11!/1/0+01!1/+4+.3!19,.5!1//55!11+57!3=7!3/,.=!<.=!<.=!<.=!<.=!<.=!<.=!<.=!<.=!<,?!<+@!U!jjjj" 这个“申”字(未完成的半成品字模) 本想今年是甲申年,所以写个甲申两个字,结果估算错误,字模太小,对换字模的代码加不进了,算了,“工程量”太大了,这个程式前后花了差不多一天时间,明年再改了。 请用TC或win-tc测试,写的时候未考虑头文件,所以请自己加在前面.
----------------解决方案--------------------------------------------------------
顶一下,打印自己的代码……想了很久,有一点点头绪,今天回家写写看呵
----------------解决方案--------------------------------------------------------
呵呵,套用kaikai的一句名言:欢迎加入组织:)
----------------解决方案--------------------------------------------------------
其实这类程序的思想差不多,目前我能想到是:文件;虽然不能读文件,但可以把文件加进程序就可以了
#include &lt;stdio.h&gt;
int s[]={105,110,116,32,109,97,105,110,40,41,10,123,105,110,116,32,105,59,10,32,112,114,105,110,116,102,40,34,35,105,110,99,108,117,100,101,32,60,115,116,100,105,111,46,104,62,92,110,34,41,59,10,32,112,114,105,110,116,102,40,34,105,110,116,32,115,91,93,61,123,34,41,59,10,32,102,111,114,40,105,61,48,59,105,60,49,56,52,59,105,43,43,41,10,32,112,114,105,110,116,102,40,34,37,100,44,34,44,115,91,105,93,41,59,10,32,112,114,105,110,116,102,40,34,125,59,92,110,34,41,59,10,32,102,111,114,40,105,61,48,59,105,60,49,56,52,59,105,43,43,41,10,32,112,114,105,110,116,102,40,34,37,99,34,44,115,91,105,93,41,59,10,32,114,101,116,117,114,110,32,48,59,125,10,};
int main()
{int i;
printf("#include &lt;stdio.h&gt;\n");
printf("int s[]={");
for(i=0;i&lt;184;i++)
printf("%d,",s[i]);
printf("};\n");
for(i=0;i&lt;184;i++)
printf("%c",s[i]);
return 0;}
----------------解决方案--------------------------------------------------------
有点Cheat的味道
我是利用这个程序把那个数据“造”出来的,目的就是避免麻烦的引号――头疼死了;
#include &lt;stdio.h&gt;
int main()
{FILE *fi,*fo;
int c,count=0;
fi=fopen("in.c","r");
fo=fopen("out.txt","w");
fprintf(fo,"int s[]={");
while(!feof(fi))
{c=fgetc(fi);
        fprintf(fo,"%d,",c);
        count++;}
        fprintf(fo,"};");
        fclose(fi);
        fclose(fo);
        printf("count=%d\n",count);getch();
        return 0;}

[此贴子已经被作者于2005-2-26 21:28:33编辑过]



----------------解决方案--------------------------------------------------------
in.c的代码:
int main()
{int i;
printf("#include &lt;stdio.h&gt;\n");
printf("int s[]={");
for(i=0;i&lt;top;i++)
printf("%d,",s[i]);
printf("};\n");
for(i=0;i&lt;top;i++)
printf("%c",s[i]);
return 0;}
先运行一次上一楼的maker代码,生成一个out.txt拷出来并把最后一个-1去掉,看make时屏幕显示的count,这是数组的大小,我这个应该显示185去掉-1后=184,把上面的top改成184再运行一次maker,再拷出out.txt并去掉-1,拷进in.c的前面并加上“#include &lt;stdio.h&gt;完成工作
----------------解决方案--------------------------------------------------------
有一个疑问想问问kaikai,按照道理我这个应该可以AC,为什么交到TJU是PE;
----------------解决方案--------------------------------------------------------
为什么不能AC我不知道,你得问kaikai,但是你有个问题没有解决,输出的字符是一样的,格式(排列)却与原先的不同了。
----------------解决方案--------------------------------------------------------
你指的格式是int s[]={……}这里吗?
----------------解决方案--------------------------------------------------------

这里

int s[]={......0,};

你通得过编译吗?


----------------解决方案--------------------------------------------------------
  相关解决方案