看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
springman: if (a[i] = a[j]) 改成 if (a[i] == a[j]) 04/21 05:33
springman: if (n = 0) 改成 if (n == 0) 04/21 05:34
springman: 您這樣做陣列會最少嗎? 04/21 05:34
springman: 反正不超過 10 個可能就可以,不然重複的元素不必記 04/21 05:35
感謝s大大已修改,重複元素不必記已想到,可是還有一個bug 每次輸入都會跳過一個元素(只能輸入a[0],a[2],a[4]...)QAQ
ji2my: 你這個是scanf常見問題 因為你按下enter也是一個字元 04/21 08:29
ji2my: 再宣告一個char b; 然後那行改成scanf("%c%c", &a[i], &b); 04/21 08:30
感謝j已解決!! ※ 編輯: NMOSFET (163.18.105.48), 04/21/2015 19:22:24