【发布时间】:2023-04-09 07:57:01
【问题描述】:
我无法理解我的一段代码中的控制流。编写代码以获取起始词(即 cat)和结束词(即 dog)一次更改原始单词的 1 个字母并到达结束词 - 检查真实单词的字典。如果到达一个非真实的单词,即cat --> dat,它应该跳出循环并尝试更改一个不同的字母。
while (strcmp (startword, endword) != FALSE)
{
change_letter(startword, endword, i++);
if ((check_dictionary(dictionary, startword)) == FALSE)
{
printf("%s --> ", startword);
printf("Bad route\n");
break;
}
if ((check_dictionary(dictionary, startword)) == TRUE)
{
printf("%s --> ", startword);
}
}
change_letter 只会做startword[i] = endword[i],其中 i 被初始化为 0(对于第一个字母,并在 i++ 出现时移动字母。
检查字典将单词与字典进行比较,如果找到该单词,则返回 1。 (#define TRUE = 1,#define FALSE = 0)。
现在它将打印(如果使用cat and dog 作为单词)
cat --> dat --> Bad route 仅此而已。
据我了解,当两个词不相等时,它不应该离开顶部的 while 循环。
【问题讨论】:
-
学习使用调试器
-
确保 startword 和 endword 为空终止字符串
-
我正在使用添加空终止符的 scanf
-
@squeamishossifrage 确实如此,但我认为 OP 将它们用作宏。
标签: c if-statement while-loop