用C写一个程序,打印出所有的源程序,要求不能用文件。
2013-03-06 21:23
525 查看
方法一:
#include <stdio.h>
#define Q(x) #x
#define P(x) char * s = Q(x);
#define M main(){printf("#include <stdio.h>\n#define Q(x) #x\n#define P(x) char * s = Q(x);\n#define M %s\np(M)M", s);}
P(M)M
方法二:
此种方法是本人第一次看到这个题目时候的做法,想了将近三个小时才做出来,而且还比较复杂,不过很好理解。说明:main函数里的函数调用要在一行,与case19中打印的内容要一致。
#include <stdio.h>
void p(int i, int j = 0)
{
switch(i)
{
case 0: printf("case %d: printf(", j); break;
case 1: printf("\n"); break;
case 2: printf("\""); break;
case 3: printf("); break;"); break;
case 4: printf("\\"); break;
case 5: printf(", j"); break;
case 6: printf("{"); break;
case 7: printf("}"); break;
case 8: printf("%%"); break;
case 9: printf(": printf("); break;
case 10: printf("case "); break;
case 11: printf(": printf("); break;
case 12: printf("d"); break;
case 13: printf("n"); break;
case 14: printf("void p(int i, int j = 0)"); break;
case 15: printf("switch(i)"); break;
case 16: printf("int main()"); break;
case 17: printf("return 0;"); break;
case 18: printf("#include <stdio.h>"); break;
case 19: printf("p(18);p(1);p(14);p(1);p(6);p(1);p(15);p(1);p(6);p(1);p(0,0);p(2);p(10);p(8);p(12);p(11);p(2);p(5);p(3);p(1);p(0,1);p(2);p(4);p(13);p(2);p(3);p(1);p(0,2);p(2);p(4);p(2);p(2);p(3);p(1);p(0,3);p(2);p(3);p(2);p(3);p(1);p(0,4);p(2);p(4);p(4);p(2);p(3);(1);p(0,5);p(2);p(5);p(2);p(3);p(1);p(0,6);p(2);p(6);p(2);p(3);p(1);p(0,7);p(2);p(7);p(2);p(3);p(1);p(0,8);p(2);p(8);p(8);p(2);p(3);(1);p(0,9);p(2);p(9);p(2);p(3);p(1);p(0,10);p(2);p(10);p(2);p(3);p(1);p(0,11);p(2);p(11);p(2);p(3);p(1);p(0,12);p(2);p(12);p(2);p(3);p(1);p(0,13);p(2);p(13);p(2);p(3);p(1);p(0,14);p(2);p(14);p(2);p(3);p(1);p(0,15);p(2);p(15);p(2);p(3);p(1);p(0,16);p(2);p(16);p(2);p(3);p(1);p(0,17);p(2);p(17);p(2);p(3);p(1);p(0,18);p(2);p(18);p(2);p(3);p(1);p(0,19);p(2);p(19);p(2);p(3);p(1);p(7);p(1);p(7);p(1);p(16);p(1);p(6);p(1);p(19);p(1);p(17);p(1);p(7);p(1);");
break;
}
}
int main()
{
p(18);p(1);p(14);p(1);p(6);p(1); p(15);p(1); p(6);p(1); p(0,0);p(2);p(10);p(8);p(12);p(11);p(2);p(5);p(3);p(1); p(0,1);p(2);p(4);p(13);p(2);p(3);p(1); p(0,2);p(2);p(4);p(2);p(2);p(3);p(1); p(0,3);p(2);p(3);p(2);p(3);p(1); p(0,4);p(2);p(4);p(4);p(2);p(3);p(1); p(0,5);p(2);p(5);p(2);p(3);p(1); p(0,6);p(2);p(6);p(2);p(3);p(1); p(0,7);p(2);p(7);p(2);p(3);p(1); p(0,8);p(2);p(8);p(8);p(2);
4000
p(3);p(1); p(0,9);p(2);p(9);p(2);p(3);p(1); p(0,10);p(2);p(10);p(2);p(3);p(1); p(0,11);p(2);p(11);p(2);p(3);p(1); p(0,12);p(2);p(12);p(2);p(3);p(1); p(0,13);p(2);p(13);p(2);p(3);p(1); p(0,14);p(2);p(14);p(2);p(3);p(1); p(0,15);p(2);p(15);p(2);p(3);p(1); p(0,16);p(2);p(16);p(2);p(3);p(1); p(0,17);p(2);p(17);p(2);p(3);p(1); p(0,18);p(2);p(18);p(2);p(3);p(1); p(0,19);p(2);p(19);p(2);p(3);p(1); p(7);p(1); p(7);p(1); p(16);p(1); p(6);p(1); p(19);p(1); p(17);p(1); p(7);p(1);
return 0;
}
#include <stdio.h>
#define Q(x) #x
#define P(x) char * s = Q(x);
#define M main(){printf("#include <stdio.h>\n#define Q(x) #x\n#define P(x) char * s = Q(x);\n#define M %s\np(M)M", s);}
P(M)M
方法二:
此种方法是本人第一次看到这个题目时候的做法,想了将近三个小时才做出来,而且还比较复杂,不过很好理解。说明:main函数里的函数调用要在一行,与case19中打印的内容要一致。
#include <stdio.h>
void p(int i, int j = 0)
{
switch(i)
{
case 0: printf("case %d: printf(", j); break;
case 1: printf("\n"); break;
case 2: printf("\""); break;
case 3: printf("); break;"); break;
case 4: printf("\\"); break;
case 5: printf(", j"); break;
case 6: printf("{"); break;
case 7: printf("}"); break;
case 8: printf("%%"); break;
case 9: printf(": printf("); break;
case 10: printf("case "); break;
case 11: printf(": printf("); break;
case 12: printf("d"); break;
case 13: printf("n"); break;
case 14: printf("void p(int i, int j = 0)"); break;
case 15: printf("switch(i)"); break;
case 16: printf("int main()"); break;
case 17: printf("return 0;"); break;
case 18: printf("#include <stdio.h>"); break;
case 19: printf("p(18);p(1);p(14);p(1);p(6);p(1);p(15);p(1);p(6);p(1);p(0,0);p(2);p(10);p(8);p(12);p(11);p(2);p(5);p(3);p(1);p(0,1);p(2);p(4);p(13);p(2);p(3);p(1);p(0,2);p(2);p(4);p(2);p(2);p(3);p(1);p(0,3);p(2);p(3);p(2);p(3);p(1);p(0,4);p(2);p(4);p(4);p(2);p(3);(1);p(0,5);p(2);p(5);p(2);p(3);p(1);p(0,6);p(2);p(6);p(2);p(3);p(1);p(0,7);p(2);p(7);p(2);p(3);p(1);p(0,8);p(2);p(8);p(8);p(2);p(3);(1);p(0,9);p(2);p(9);p(2);p(3);p(1);p(0,10);p(2);p(10);p(2);p(3);p(1);p(0,11);p(2);p(11);p(2);p(3);p(1);p(0,12);p(2);p(12);p(2);p(3);p(1);p(0,13);p(2);p(13);p(2);p(3);p(1);p(0,14);p(2);p(14);p(2);p(3);p(1);p(0,15);p(2);p(15);p(2);p(3);p(1);p(0,16);p(2);p(16);p(2);p(3);p(1);p(0,17);p(2);p(17);p(2);p(3);p(1);p(0,18);p(2);p(18);p(2);p(3);p(1);p(0,19);p(2);p(19);p(2);p(3);p(1);p(7);p(1);p(7);p(1);p(16);p(1);p(6);p(1);p(19);p(1);p(17);p(1);p(7);p(1);");
break;
}
}
int main()
{
p(18);p(1);p(14);p(1);p(6);p(1); p(15);p(1); p(6);p(1); p(0,0);p(2);p(10);p(8);p(12);p(11);p(2);p(5);p(3);p(1); p(0,1);p(2);p(4);p(13);p(2);p(3);p(1); p(0,2);p(2);p(4);p(2);p(2);p(3);p(1); p(0,3);p(2);p(3);p(2);p(3);p(1); p(0,4);p(2);p(4);p(4);p(2);p(3);p(1); p(0,5);p(2);p(5);p(2);p(3);p(1); p(0,6);p(2);p(6);p(2);p(3);p(1); p(0,7);p(2);p(7);p(2);p(3);p(1); p(0,8);p(2);p(8);p(8);p(2);
4000
p(3);p(1); p(0,9);p(2);p(9);p(2);p(3);p(1); p(0,10);p(2);p(10);p(2);p(3);p(1); p(0,11);p(2);p(11);p(2);p(3);p(1); p(0,12);p(2);p(12);p(2);p(3);p(1); p(0,13);p(2);p(13);p(2);p(3);p(1); p(0,14);p(2);p(14);p(2);p(3);p(1); p(0,15);p(2);p(15);p(2);p(3);p(1); p(0,16);p(2);p(16);p(2);p(3);p(1); p(0,17);p(2);p(17);p(2);p(3);p(1); p(0,18);p(2);p(18);p(2);p(3);p(1); p(0,19);p(2);p(19);p(2);p(3);p(1); p(7);p(1); p(7);p(1); p(16);p(1); p(6);p(1); p(19);p(1); p(17);p(1); p(7);p(1);
return 0;
}
相关文章推荐
- 用1、2、3、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 要求:"4"不能在第三位,"3"与"5"不能相连。
- 用1、2、3、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 要求:"4"不能在第三位,"3"与"5"不能相连。
- 用1、2、2、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列 如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连
- 编写一个程序,一行行地读取输入行,直至到达文件尾。算出每行输入行的长度,然后把最长的那行打印出来。为了简单起见,你可以假定所有的输入行均不超过1000个字符。
- 该公司笔试题就1个,要求在10分钟内作完。 题目如下:用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列, 如:512234、412325等,要求:"4"不能在第三位,"3"与"5"不能相连。
- 【源码】用1,2,2,3,4,5这六个数字,写一个函数,打印出所有不同的排序,要求:4不能放在第三位,3与5不能相连(C语言实现)
- 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
- 1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、412345等.要求:"4"不能在第三位,"3"与"5"不能相连.
- 1.编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。 2.编写一个C语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤)。所谓“
- // 40、用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列, // 如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连.
- 1.编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。 2.编写一个C语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤)。所谓“
- 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
- 用java语言实现,一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连
- 【每天算法2】:用java语言实现,一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连。
- 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。用1、2、2、3、4、5这六
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
- python程序2(递归查找某一个文件夹下所有的文件是否含有某个特定的字符串,并打印该文件名)
- 编写一个程序,一行行地读取输入行,直至到达文件尾。算出每行输入行的长度,然后把最长的那行打印出来。为了简单起见,你可以假定所有的输入行均不超过1000个字符
- 编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 编写一个Python程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径