Re: [問題] 一個檢查array內容的功能

看板C_and_CPP作者 (想要征服的世界)時間7年前 (2017/04/20 22:52), 編輯推噓1(1010)
留言11則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《Zoxge (Zoxge)》之銘言: : 開發平台(Platform): (Ex: Win10, Linux, ...) : Linux : 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) : GCC : 問題(Question): : 有一個一維array,裡面隨機存了20個1~500之間的數字 : 現在要依序print出1~500之間的數字,但不包含那個一維array裡面的內容 : 請問除了下面網址內的方法(檢查array中每個index存放的值)之外 : 有什麼更快的方法能夠解決這個問題呢? : 謝謝 : 程式碼(Code):(請善用置底文網頁, 記得排版) : https://ideone.com/1KIzIo bool isNumberInArray[501]={0}; for(int i=0;i<20;i++) { isNumberInArray[ ARRAY[i] ]=1; } for(i=1;i<=500;i++) { if( 0 == isNumberInArray[i] ) printf("%d",i); } 用一個大小為500的bool array紀錄哪些數字不用印出來 然後依序把剩下的數字印出來即可 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.47.7 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1492699944.A.063.html

04/20 23:37, , 1F
大小不是501嗎?
04/20 23:37, 1F

04/21 01:25, , 2F
別糾結 ww 這裡宣告 isNumberInArray[500] 也可以
04/21 01:25, 2F

04/21 01:26, , 3F
但是要改成 isNumberInArray[ ARRAY[i] - 1] = 1;
04/21 01:26, 3F

04/27 13:10, , 4F
好奇 ={0} 的習慣是基於好辨識嗎 一看就知道初始0
04/27 13:10, 4F

04/27 13:11, , 5F
因為這只會初始化到第一個~還是有什麼其他原因
04/27 13:11, 5F

04/28 10:07, , 6F
不是喔, {} 初始化對後面沒寫元素的都是預設初始化
04/28 10:07, 6F

04/28 10:08, , 7F
對 primitive type 預設初始化就是 0
04/28 10:08, 7F

04/28 10:09, , 8F
所以理論上可以寫 = {}, 但寫 = {0} 看的人就很清楚是 0
04/28 10:09, 8F

04/28 10:15, , 9F
另外寫 = {} 跟不寫也有差, 不寫才是真的都沒初始化
04/28 10:15, 9F

04/28 13:03, , 10F
了解~知道會預設初始化,敘述打錯了
04/28 13:03, 10F

04/28 13:05, , 11F
原意是想表示 只會指定第一個~ 感謝說明
04/28 13:05, 11F
文章代碼(AID): #1O-Cie1Z (C_and_CPP)
文章代碼(AID): #1O-Cie1Z (C_and_CPP)