如何编写一个可以输出自身源代码的程序

要求:
1.该程序不能从外部读取输入;
2.该程序输出的源码不能为空;
3.不能使用语言与shell的特性投机取巧;
在满足以上3点要求的情况下改程序可以对外输出自身的源代码

0

1个回答

自己加载类class;文件然后反编译成类,关键的反编译自己写不了吧?我的思路,抛砖引玉

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一个有趣的问题:可以输出自己的源程序代码(quine)
UOJ#8rn就是看了玩玩的,因为上面的本弱基本都不是很会rn还是很有很有趣的问题,要求输出一段代码,这段代码的功能是打印这段代码:rn#include nnchar*s="#include %cchar*s=%c%s%c;%cmain(){printf(s,10,34,s,34,10,10);}%c";nnmain(){printf(s,10,34,s,34,10,10);}这就是一个例子。。。
Quine:输出自己的程序
题nn你需要写一份代码,这份代码的功能是:输出这份代码。nn解nn挺有意思的一道题。代码见下(可能还有更短的):nnnn#include<cstdio>nchar *s={"#include<cstdio>%cchar *s={%c%s%c};%cmain(){printf(s,10,34,s,34,10);}"};nmain(){printf(s,10,34,s,34,1...
可以输出自己的源程序代码(quine)
Quine 以哲学家 Willard van Orman Quine (1908-2000) 而命名,表示一个可以生成他自己的完全的源代码的程序。编写出某个语言中最简短的 quine 通常作为黑客们的消遣。rnrn作为真正的 quine ,有一些约定:程序不能接受输入或者是打开文件,因为那样就可以直接输入源代码或者是把源代码文件直接打开再重新打印出来,就没有什么意思了;同时,一个完全空白的程序(产
打印自身源代码的程序
无意当中看到了这样一个问题:rnrn任意选定一个语言写一个打印自身源代码的程序,这个程序不允许读取或者写其他文件的数据,程序必须是完全独立的。rnrn很有趣吧?我正在学习C语言,这个问题是我在查找其他资料时看到的,这激发了我的兴趣,我躺在床上想了很久,没有一点头绪,额,最后抱着认为不大可能实现的想法睡着了······rnrn回到正题,我在网上搜索了有关资料以后,知道了如何去写出这样的一个程序,原理
用python实现一段代码,它的功能是将自己打印
今天看到一道有趣的面试题,用python实现一段代码,然后将自己打印,其实很简单nnimport sys   首先导入 sys 模块nnf_name = sys.argv[0]              sys.argv[ ]第一个元素是程序本身,sys.argv[0]     表示本身的文件路径nn然后用 with 打开并读取,最后输出nn...
程序输出自己
看到一个挺有意思的例子,用sys实现程序自己输出自己,由于sys.argv[0]为Python的脚本名,所以在程序中将sys.argv[0]作为要读取的文件就能实现程序输出自己。以下是代码:'''n 功能:程序输出自己(out_put_self)n'''nimport sysn#读取并输出的就是该程序文件out_put_self.pynf_name = sys.argv[0]nwith ope
如何输出自己写的代码?
昨天同门问我一个问题,怎么打印输出自己写的代码。昨天由于回寝室了,没有写。今天上午来实验室想了想这个问题。思路是用open函数打开文件(自己写的代码文件),读取代码文件,然后打印就可以了。nn以下是代码实现:nnn#include <iostream>n#include <unistd.h>n#include <fcntl.h>n//一个小测试nnint mai...
计算并输出给定正整数n的所有因子(不包括1和自身)之和
国二有题目: n 请编写函数fun,该函数的功能是:计算并输出给定正整数n的所有因子(不包括1和自身)之和。规定n的值不大于1000。 n例如,在主函数中从键盘给n输入的值为856,则输出为:sum=763。代码如何完成呢? n分析: n 1.输入的数字要是整数,并且要在规定范围内。 n 2.对输入的数要进行拆分,注意1和本身不能在求和之中。 n 3.可以使用循环对输入的数(n)遍
编写函数,求正整数n的除了本身之外的最大因子。
#include<stdio.h>int main(){ int x; scanf("%d",&x); int i = x/2;  for(i; i >1; i--)  {   if(x%i == 0)break;  }   printf("最大公因子为:%d\n",i);   return 0;}
【作业】第4章:流程控制
【作业】第4章:流程控制n1. 一个足球队在寻找年龄在10岁到12岁的小女孩(包括10岁和12岁)加入。编写程序,询问用户的性别(1表示男性,0表示女性)和年龄,然后显示一条消息指出这个人是否可以加入球队,询问10次后,输出满足条件的总人数。npublic class Que1 {n public static void main(String[] args) {n Scanner sc=new...
一个计算器程序,要求用户输入两个整数和一个运算符,程序能够计算出两个数的相应加减乘除结果。(涉及到精确度的,一律保留两位小数,使用输出格式)
def my_calculate(a,b,s):nif s=="+":nres=a+bnelif s=="-":nres=a-bnelif s=="*":nres=a*bnelif s=="/":nres=a/bnprint("%.2f"%res)nmy_calculate(2,3,"/")nn
编写一个Java程序在屏幕上输出1!+2!+3!+……+10!的和。
编写一个Java程序在屏幕上输出1!+2!+3!+……+10!的和。npublic class ForTest {npublic static void main( String args[] ) {nint i,j,mul,sum=0;nfor(i=1;i<=10;i++) {nmul=1;nfor(j=1,j<=i;j++) {nmul=mul*j;n}nsum=sum+mul;...
排列组合_组合_程序实现
<!DOCTYPE html>n<html lang="en">n<head>n <meta charset="UTF-8">n <title>Title</title>n</head>n<body>n<script>n /*n * 组合即没有顺序,以 A B C中取出任意两个为例n * 结果为 AB AC BC 三种情况n * 实现:在有序排列的基础上排序去重
Python:输入一个数求它的最大约数。
9def showMaxFactor(num):n count=num//2n while count>1:n if num % count==0:n print('%d最大的约束是%d'%(num,count))n breakn count-=1n else:n print('%d是素
多个函数 (自定义函数,函数的调用)(二)
1、许多研究表明,微笑益处多多。编写一个程序,生成以下格式的输出:rnrnSmile!Smile!Smile!nSmile!Smile!nSmile!rn该程序要定义一个函数,该函数被调用一次打印一次“Smile!”,根据程序的需要使用该函数。rnrn#include nvoid tr (void);/*ANSI/ISO C函数原型*/nint main (void)n{n tr();n tr()
进程和线程的创建(linux) 源代码
1. 在linux下编写一个应用程序,命名为an_ch2_1b。这个程序不断地输出如下行: Those output come from child,[系统时间] 另外写一个应用程序,命名为an_ch2_1a。这个程序创建一个子进程,执行an_ch2_1b。这个程序不断地输出如下行: Those output come from child,[系统时间] 观察程序运行的结果,并对你看到的现象进行解释。 2。在linux环境下编写一个控制台应用程序,程序中有一个共享的整型变量shared_var,初始值为0;创建一个线程并使其立即与主线程并发执行。新创建的线程与主线程均不断地循环,并输出shared_var 的值。主线程在循环中不断地对shared_var 进行加1操作,即每次循环shared_var 被加1;而新创建的线程则不断地对shared_var 进行减1 操作,即每次循环shared_var 被减1。观察程序运行的结果,并对你看到的现象进行解释。
编译运行第一个java application程序,在屏幕上显示如下图形
博主使用了两种方法实现: nnnpublic class first_homework {n public static void main(String args[]) {n System.out.println(&quot;*&quot;);n System.out.println(&quot;**&quot;);n System.out.println(&quot;***&quot;);n System.out.println(&quot;**...
习题1.4.编写程序,输出 Hello World!
4.编写程序,输出 Hello World!n代码n/* 4.编写程序,输出 Hello World!*/ n#include &amp;lt;stdio.h&amp;gt;nint main ()n{n printf (&quot;Hello World!\n&quot;);n return 0;n}nn结果nnnn
编程作业 50 2题 编写一个程序求100以内的全部素数
求100以内的全部素数代码如下rnpublic class text{n public static void main(String args[]){n int i,j;n System.out.println("100以内的素数有:");n System.out.print("2");n for(i=3;i<=100;i=i+2){ //偶数都不是素数 所以全部都剔除,所以在前一段编码
一个简单的http服务器的实现 含源代码
EasyHttp 最简单的C语言 http服务器说明:这是一个C语言编写的http服务器简单实现,使用python语言作为cgi程序处理用户的表单输入。通过这个项目有利于理解http服务流程,以及多线程调试等诸多知识点。使用方法:n平台:centos7 编译器:gcc 4.8.4n下载项目,修改htdocs目录下easycgi.py 的运行权限 chmodncd EasyHttp && make && ./
练习 1-10 编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,把回退符替换为\b,把反斜杠替换为\\。
C语言程序设计(第二版) 练习1-10 个人设计编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,把回退符替换为\b,把反斜杠替换为\。代码块#include &lt;stdio.h&gt;main()n{n int c; while ((c = getchar()) != EOF){n if (c != '\t' &amp;&amp; c != '\b' &amp;&amp; c != '\\')
练习 1-12 编写一个程序,以每行一个单词的形式打印其输入。
C语言程序设计(第二版) 练习1-12 个人设计编写一个程序,以每行一个单词的形式打印其输入。#include &lt;stdio.h&gt;main()n{n int c; while ((c = getchar()) != EOF){ /*判断输入字符是否为文件结束符*/n if (c == ' ' || c == '\t') /*如果输入字符
素数探求(一)———题目及任务1、2实现
任务1:n采用试商法,分别用goto语句、break语句和设置标志变量并加强循环测试等三种方法编写素数判断函数IsPrime(),从键盘任意输入一个整数m,判断m是否为素数,如果m是素数,则按"%d is a prime number\n"格式打印该数是素数,否则按"%d is not a prime number\n"格式打印该数不是素数。n任务2:n用数学的方法可以证明,不能被2~m\sqrt...
linux用户态与内核态通讯及如何编写内核模块
通讯方式:procfs/socket/syscall/IOCTL常用的是socket/syscall/ioctl.ioctl机制,ioctl机制可以在驱动中扩展特定的ioctl消息,用于将一些状态从内核反应到用户态。Ioctl有很好的数据同步保护机制,不要担心内核和用户层的数据访问冲突,但是ioctl不适合传输大量的数据,通过和内存映射结合可以很好的完成大量数据交换过程。但是,ioctl的发起方一...
编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出.
题目:n    编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出n思考思路:n 1:看到“接受字符”很多人想到scanf语句,但是题设中不是只输入一次而且输入类型也不同(%c %d),那么定义就显得比较麻烦,所以getchar()函数可以帮你实现n 2:“。。。。可以一直。。。。”说明要使用循环结构,既然是
Python面试题:写一段代码,功能是将本段代码打印出来
前几日,遇到这么一道面试题,记录下来nn思路分析:nn首先需要获取文件路径,可以使用sys.argv[0],它是命令行参数List,第一个元素是程序本身路径(更多sys模块的常用方法见https://blog.csdn.net/qq_38276669/article/details/83687738)nn然后使用with语句打开文件并且读取,with语句当程序报错还可以正常关闭资源nn最后输出即可...
《Code》读书笔记12:二进制加法器
读了《Code》第12章:二进制加法器,用自己的方式来总结一下。计算机CPU本质上也就是集成电路,那么CPU是怎么实现最基本的加法的呢?在电路中,只有2种状态(开、关),对应于二进制中的1和0;但是我们可以把这2种状态组合起来,构造成多种逻辑关系。与门 AND        (通过串联实现)或门 OR           (通过并联实现)非门 N             (通过反向器实现)与非
C++ primer plus(17.8 编写一个程序,它打开两个文本文件进行输入, 打开一个文本文件进行输出)
问题: 编写一个程序,它打开两个文本文件进行输入, 打开一个文本文件进行输出。该程序将两个输入文件中对应的行并接起来,并用空格分割,然后将结果写入到输出文件中。如果一个文件比另一个短,则将较长文件中余下的行直接复制到输出文件中。例如,假设第一个输入文件的内容如下:nneggs kites donutsnnballoons hammersnnstonesnn而第二个输入文件的内容如下:nnzero ...
程序自我复制(c++)
#include #include #include using namespace std; int main(void){   LPCTSTR TargetPath = _T("C:\\X.Rabbit.exe"); // 复制到的路径   TCHAR tcBuf[_MAX_PATH]; // 缓冲区   // 取自己程序的程序名   ::GetModuleFileName(NULL, tc
利用OS模块为Python程序做一个目录
在学习Python时,少不了要多多编写程序,可是时间一长,当我们想要查找以前写过的某个程序时,少不了要好长一段时间进行查找,说不定还得挨个打开程序进行查找。那么有没有一种简单的方法,能使我们写过的Python程序像一本书的目录那样呈现出来呢?nnn首先在编写程序的时候,我们要养成一个良好的习惯,在每个程序的第一行写上注释,说明这个程序是干什么的;n 其次,可以按照自己的个人习惯将程序整理在一个(或...
C Primer Plus(第6版)第二章编程练习答案
第二章  C语言概述(P37-P38)5 编写一个程序,生成以下输出:Brazil, Russia, India, ChinaIndia, China,Brazil, Russia除了main()以外,该程序还要调用两个自定义函数:一个名为br(),调用一次打印一次&quot;Brazil, Russia&quot;;另一个名为ic(),调用一次打印一次&quot;India, China&quot;。其他内容在main()函数中完成。...
自己写的英语背单词软件
简约背单词,简约而不简单,您可靠的背单词伴侣。自由输入,想背啥背啥(包括英语以外的其他科目)、乱序模式,增加背诵难度,加深记忆印象,快来看看吧。
怎么用文本编辑器和控制台程序实现简单的JAVA程序
首先打开一个记事本,然后再上面敲上代码:然后将文件保存起来。(注意:文件名一定要和类名相同,HelloWorld.java 文件扩展名为java)之后打开控制台程序,先进入到存取这个文件的根目录,例:进入到根目录后1.输入“javac 保存的文件名.java”。例:javac HelloWorld.java。进行文件的编译,生成.class文件,这是编译之后的JAVA字节码文件。2.编译好之后,输...
既能作为Application执行,又能作为Applet程序执行
用Application和Applet程序输出字符串“My First Java!”1.Application:n代码:n//First.classnpublic class HelloWorld{n public static void main(String args[]){n System.out.println("My First Java!");
通过DLL输出对话框的例子
你可以通过这个例子学会如何使用dll输出一个对话框,同时也可以学会如何编写MFC DLL
编程程序输出2-1000000之间的所有的完全数
编写程序,输出2-1000000之间的所有的完全数,所谓"完全数"是指整数n的所有因子(不包括n)之和等于n本身。 例如28的因子为1,2,4,7,14,而 28=1+2+4+7+14,因此28是"完全数"。rn rn#include n int main()n {n n long int i,j,sum;n n for(i=2;i<1000000;i++)n { sum=0;n
JavaScript 用for循环输出1-100之间所有的质数(只能被1和自身整除的数,不包括1)
用for循环输出1-100之间所有的质数(只能被1和自身整除的数,不包括1)nn也就是说 2 3 5 7 11 。。。等只有被1和自身整除的数字。nn如何判断出1到100的字数呢?nn拿  51这个数字举例 nn我们可以用for循环记录一下nn  51%j=0的发生了几次 这里的 j表示 1到 51自身nnn for (var j = 1; j &amp;lt;= 51; j++) {n if(...
亲和数
古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为: n1+2+4+5+10+11+20+22+44+55+110=284。 n而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。 n你的任务就编写一个程序,判断给定的两个数...
用java实现猜数字小游戏
        猜数字游戏,给定4个随机不重复数字,然后玩家去猜,每次只能看见两个数字结果,一个A表示正确位置上的数字数量,另一个B表示存在但不在正确位置上的数字数量,玩家根据这两个值去猜,直到猜对为止。        比如给定‘1234’,猜1256,则得:A2B0,猜:5612,则得:A0B2,猜2143,则得:A0B4,以此类推,直到4个数字正确。        以下,介绍如何在java下实...
利用反射机制编写一个程序,这个程序能把类中所有的成员变量赋值,并把操作信息输出到控制台。
该方法通过扩大类属性的访问权限后直接操作属性,所以在Person类中并不需要写getter和setter方法,但是在实际开发中,都需要使用getter和setter方法。Person.java:nnpackage test;npublic class Person {n private String name;n private int age;n public Person(){n }n}nnD
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 如何编写区块链 区块链如何编写