变量 find 到底在做什么?
What The variable find exactly is doing here?
这是一个比较参数并按字典顺序对它们进行排序的程序。您能否解释一下 find
在那里做了什么以及它如何影响代码?我在很多代码中看到了这种模型;它的值暂时在1和0之间变化,所以请你澄清一下。
int main(int argc, char **argv)
{
char *tmp;
int find;
int i;
find = 1;
while (find)
{
find = 0;
i = 0;
while (++i < argc - 1)
{
if (strcmp(argv[i], argv[i + 1]) > 0)
{
tmp = argv[i];
argv[i] = argv[i + 1];
argv[i + 1] = tmp;
find = 1;
}
}
}
i = 0;
while (++i < argc)
printf("%s\n", argv[i]);
return (0);
}
这段代码
find = 1;
while (find)
{
find = 0;
i = 0;
while (++i < argc - 1)
{
if (strcmp(argv[i], argv[i + 1]) > 0)
{
tmp = argv[i];
argv[i] = argv[i + 1];
argv[i + 1] = tmp;
find = 1;
}
}
}
实现冒泡排序算法。
最初,假设命令行参数未按字符串排序。
find = 1;
然后在 while 循环中,标志 find
被重置为 0。
find = 0;
如果在内部 while 循环中
while (++i < argc - 1)
{
if (strcmp(argv[i], argv[i + 1]) > 0)
{
tmp = argv[i];
argv[i] = argv[i + 1];
argv[i + 1] = tmp;
find = 1;
}
}
找到一个大于下一个参数(字符串)的参数(字符串)
if (strcmp(argv[i], argv[i + 1]) > 0)
然后交换相邻的参数并且标志 find
设置为 1
表示参数数组尚未排序(我们至少需要再迭代一次外部 while循环检查所有参数是否确实在交换后排序)。
这是一个比较参数并按字典顺序对它们进行排序的程序。您能否解释一下 find
在那里做了什么以及它如何影响代码?我在很多代码中看到了这种模型;它的值暂时在1和0之间变化,所以请你澄清一下。
int main(int argc, char **argv)
{
char *tmp;
int find;
int i;
find = 1;
while (find)
{
find = 0;
i = 0;
while (++i < argc - 1)
{
if (strcmp(argv[i], argv[i + 1]) > 0)
{
tmp = argv[i];
argv[i] = argv[i + 1];
argv[i + 1] = tmp;
find = 1;
}
}
}
i = 0;
while (++i < argc)
printf("%s\n", argv[i]);
return (0);
}
这段代码
find = 1;
while (find)
{
find = 0;
i = 0;
while (++i < argc - 1)
{
if (strcmp(argv[i], argv[i + 1]) > 0)
{
tmp = argv[i];
argv[i] = argv[i + 1];
argv[i + 1] = tmp;
find = 1;
}
}
}
实现冒泡排序算法。
最初,假设命令行参数未按字符串排序。
find = 1;
然后在 while 循环中,标志 find
被重置为 0。
find = 0;
如果在内部 while 循环中
while (++i < argc - 1)
{
if (strcmp(argv[i], argv[i + 1]) > 0)
{
tmp = argv[i];
argv[i] = argv[i + 1];
argv[i + 1] = tmp;
find = 1;
}
}
找到一个大于下一个参数(字符串)的参数(字符串)
if (strcmp(argv[i], argv[i + 1]) > 0)
然后交换相邻的参数并且标志 find
设置为 1
表示参数数组尚未排序(我们至少需要再迭代一次外部 while循环检查所有参数是否确实在交换后排序)。