我编写了一个c程序,该程序会自行打印n次,但是如果示例程序为:

hello

那么所需的输出应为 "olleh" for n=1。这是我的Quine程序,

#include <stdio.h>
int main()
{
  int n;
  char c;
  FILE *f;
  f=fopen(__FILE__,"r");
  scanf("%d",&n);
 while(n--)
 {
 while((c=getc(f))!=EOF)
 putchar(c);
 fseek(f,0,0);
 }
  return 0;
} 
有帮助吗?

解决方案

最简单的方法是将文件读为数组(这样 回答),然后扭转数组:

void swap(char* a, char* b) {
  char tmp = *b;
  *b = *a;
  *a = tmp;
}

void reverse(char* arr, int size) {
  for (int i = 0; i < size/2; ++i) {
    swap(arr+i, arr + (size - (i + 1)));
  }
}

其他提示

这不是纯quine。看 Wikipedia中的Quine文章:

Quine没有输入。允许输入将允许源代码通过键盘馈送到程序,打开程序的源文件以及类似的机制。

刚刚遇到了这篇文章。这是我制作的C中的样本反向Quine。您可以修改它以适应您的需求!

a="};)01(rahctup;)--p*(rahctup);p*;43=p*(rof;)a(ftnirp;))a,b=p(tacrts(nelrts=+p{)p*rahc(niam;}7393422{=]99[b;";b[99]={2243937};main(char*p){p+=strlen(strcat(p=b,a));printf(a);for(*p=34;*p;)putchar(*p--);putchar(10);}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top