-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