2010-09-12 170 views
0

我寫它打印本身n次C程序,但我不能得到如何扭轉打印相同的N times.Eg,如果樣本程序是:如何反向Qu??

hello 

,則所需的輸出應"olleh" for n=1。 這裏是我的奎因程序,

#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; 
} 
+0

我認爲這是考慮作弊,如果你從磁盤讀取奎因。 – 2011-05-13 22:29:32

回答

1

最簡單的方法是將文件讀入到一個數組(像這樣answer),然後就扭轉數組:

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))); 
    } 
} 
3

這不是一個純粹的奎因。見the Quine article in Wikipedia

奎因沒有輸入。允許輸入 將允許將源代碼通過鍵盤輸入 到程序, 打開 程序的源文件以及類似的機制。

2

跨越這個帖子剛來到。 這是C中的反例,我做了。您可以修改它以滿足您的需求!

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);}