[問題] 去除重複問題[已解決]

看板C_and_CPP作者 (NMOSFET)時間9年前 (2015/04/21 05:09), 9年前編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 題目: (去除重複)使用一個意為陣列, 讀進10個A~Z之間的字元, 當每個字元讀近來時, 如果之前沒有輸入過這個字元, 便將它印出來。 請使用最壞的情況(即10個都不一樣) 盡你所能地以最小的陣列來解決這個問題。 程式碼(Code): #include <stdio.h> void main(void) { char a[10]; int n = 0; for (int i = 0; i < 10; i++) { printf("請輸入a[%d]的字元\n", i); scanf("%c", &a[i]); for (int j = 0; j < i;j++) { if (a[i] == a[j]) { n+=1; break; } } if (n == 0) printf("a[%d]的內容為%c\n", i, a[i]); else printf("a[%d]的內容出現過不輸出\n",i); n = 0; } } 補充說明(Supplement): 目前自學做書上的題目, 每次輸入都會跳過一個元素(只能輸入a[0],a[2],a[4]...) 我想好久想不到我哪裡出錯了... 懇求哪位大大能夠幫我解惑(跪 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.18.29.27 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1429564145.A.618.html ※ 編輯: NMOSFET (163.18.29.27), 04/21/2015 05:12:50 ※ 編輯: NMOSFET (163.18.29.27), 04/21/2015 05:14:01

04/21 05:33, , 1F
if (a[i] = a[j]) 改成 if (a[i] == a[j])
04/21 05:33, 1F

04/21 05:34, , 2F
if (n = 0) 改成 if (n == 0)
04/21 05:34, 2F

04/21 05:34, , 3F
您這樣做陣列會最少嗎?
04/21 05:34, 3F

04/21 05:35, , 4F
反正不超過 10 個可能就可以,不然重複的元素不必記
04/21 05:35, 4F
感謝s大大已修改,重複元素不必記已想到,可是還有一個bug 每次輸入都會跳過一個元素(只能輸入a[0],a[2],a[4]...)QAQ

04/21 08:29, , 5F
你這個是scanf常見問題 因為你按下enter也是一個字元
04/21 08:29, 5F

04/21 08:30, , 6F
再宣告一個char b; 然後那行改成scanf("%c%c", &a[i], &b);
04/21 08:30, 6F
感謝j已解決!! ※ 編輯: NMOSFET (163.18.105.48), 04/21/2015 19:22:24
文章代碼(AID): #1LDMhnOO (C_and_CPP)