-1
對於補救問題感到抱歉。經過故障排除試圖找到錯誤,我已經空了。在C中添加一個列表,額外輸入
我需要編寫一個程序,將輸入列表按字母順序排列。第一個輸入是輸入數量的整數值。每個輸入以一個新的行字符結束。
int main()
{
int word_total;
char word_in[100][30], t[30];
int i, j;
printf("\nPlease the number of words you wish to sort: \n");
scanf("%d", &word_total);
printf("\nPlease enter a single word at a time. After each word, press return.\n");
for (i = 0; i < (word_total); i++)
{
scanf("%s\n", word_in[i]);
}
for (i = 1; i < (word_total); i++)
{
for (j = 1; j < (word_total); j++)
{
if (strcmp(word_in[j - 1], word_in[j]) > 0)
{
strcpy(t, word_in[j - 1]);
strcpy(word_in[j - 1], word_in[j]);
strcpy(word_in[j], t);
}
}
}
printf("\nSorted list:\n");
for (i = 0; i < (word_total); i++)
{
printf("%s\n", word_in[i]);
}
printf("\n");
}
問題:字的輸入花費word_total + 1例如,如果word_total = 5,我必須輸入6個字。輸入的最後一個字被忽略,不包含在「分類列表」中。我可以通過以下方式解決問題:
for (i = 0; i < (word_total - 1); i++)
{
scanf("%s\n", word_in[i]);
}
但是「排序列表」是短的一個單詞。我試過將「<」更改爲「< =」等,但還沒有找到修復程序。
謝謝你的幫助!
他甚至不需要吃換行符。下一個'scanf()'會自動跳過它(和任何其他前導空格),因爲'%s'就是這樣做的。 –
@JohnBollinger好點! – Jens