加密/弄亂C原始碼

來源:互聯網
上載者:User

之前發表了《6個變態的C語言Hello World程式》[酷殼連結] [CSDN連結],主要是是像大家展示了一些C語言的變態玩法。也向大家展示了一下程式是可以寫得讓人看不懂的,在那篇文章中,可以看到很多人的留言,很多人都覺得很好玩,是的,那本來是用來供朋友們“消遣作樂”,供娛樂娛東而已,不必太過認真。

不過,通過這種極端的寫法,大家可以看到原始碼都可以寫得那麼複雜難懂的。大家也許在讚歎之餘一笑了之,而我則希望,大家能夠在娛樂以後認真思考一下,你不要以為咱們自己不會把代碼搞得那麼複雜,只不過沒有像那6個Hello World一樣那麼極端,不過,說句老實話,咱們每個程式都有把清晰的程式搞得一團混亂的潛能,只不過程度不一樣罷了,我並不是在這裡危言聳聽,大家好自為之。

下面是一個Step by Step的教程,教你如何把一個清晰的代碼變得複雜難懂的。當然,這隻是一個“簡明教程”了。還是那句話——“本文僅供朋友們“消遣作樂”,如果你要覺得有意思的話,頂個貼。如果你覺得沒什麼意思的話,一笑了之。僅供娛樂而已,不必太過認真。”

正常程式

下面是一個找出素數的程式:

void primes(int cap)
{
int i, j, composite;

for(i = 2; i < cap; ++i) {
composite = 0;
for(j = 2; j * j < i; ++j) {
composite += !(i % j);
}
if(!composite){
printf("%d\t", i);
}
}
}

int main()
{
primes(100);
}

下面我們來看看如何把上面這段代碼搞得複雜難懂。

第一步、把for變成while

通常來說,for循壞要以while循壞簡單一些,上面的程式有二重for迴圈,我們不但要把其變成while迴圈,而且還要把二重迴圈的變成一重的迴圈,然後使用大量的if-else語句來判斷。

void primes(int cap)
{
int i, j, composite, t = 0;

while(t < cap * cap) {
i = t / cap;
j = t++ % cap;
if(i <= 1);
else if(!j)
composite = j;
else if(j == i && !composite)
printf("%d\t",i);
else if(j > 1 && j < i)
composite += !(i % j);
}
}

int main()
{
primes(100);
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.