作者NMOSFET (NMOSFET)
看板C_and_CPP
標題[問題]去除重複問題
時間Tue Apr 21 05:09:02 2015
開發平台(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