亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無循環或有條件打印1至1000

無循環或有條件打印1至1000

C++ C
慕虎7371278 2019-09-27 16:10:03
任務:打印從1到1000的數字,而不使用任何循環或條件語句。不要只寫printf()or cout語句1000次。您將如何使用C或C ++做到這一點?
查看完整描述

3 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

編譯時間遞歸?。篜


#include <iostream>

template<int N>

struct NumberGeneration{

  static void out(std::ostream& os)

  {

    NumberGeneration<N-1>::out(os);

    os << N << std::endl;

  }

};

template<>

struct NumberGeneration<1>{

  static void out(std::ostream& os)

  {

    os << 1 << std::endl;

  }

};

int main(){

   NumberGeneration<1000>::out(std::cout);

}


查看完整回答
反對 回復 2019-09-27
?
DIEA

TA貢獻1820條經驗 獲得超3個贊

這實際上是編譯為沒有任何條件的程序集:


#include <stdio.h>

#include <stdlib.h>


void main(int j) {

  printf("%d\n", j);

  (&main + (&exit - &main)*(j/1000))(j+1);

}

編輯:添加了“&”,因此它將考慮地址,從而避免了指針錯誤。

標準C中的上述版本,因為它不依賴于函數指針的算術運算:


#include <stdio.h>

#include <stdlib.h>


void f(int j)

{

    static void (*const ft[2])(int) = { f, exit };


    printf("%d\n", j);

    ft[j/1000](j + 1);

}


int main(int argc, char *argv[])

{

    f(1);

}


查看完整回答
反對 回復 2019-09-27
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

#include <stdio.h>

int i = 0;

p()    { printf("%d\n", ++i); }

a()    { p();p();p();p();p(); }

b()    { a();a();a();a();a(); }

c()    { b();b();b();b();b(); }

main() { c();c();c();c();c();c();c();c(); return 0; }

我很驚訝似乎沒有人發布此消息-我認為這是最明顯的方法。 1000 = 5*5*5*8.


查看完整回答
反對 回復 2019-09-27
  • 3 回答
  • 0 關注
  • 606 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號