for循环中的变量在同一循环中具有不同的值(C语言)
在这些循环中,我有两个不同的值,我不知道为什么会这样,因为我没有增加它的大小。我在两个循环中都打印I,但是在内部循环中打印I时,它的值更大,在外部循环中它应该具有的值也更大 编辑:删除了描述,我只用相关信息重写了它 你能告诉我为什么会这样吗for循环中的变量在同一循环中具有不同的值(C语言),c,loops,for-loop,printf,C,Loops,For Loop,Printf,在这些循环中,我有两个不同的值,我不知道为什么会这样,因为我没有增加它的大小。我在两个循环中都打印I,但是在内部循环中打印I时,它的值更大,在外部循环中它应该具有的值也更大 编辑:删除了描述,我只用相关信息重写了它 你能告诉我为什么会这样吗 int position = 0; int size = 4; for (int i = 0; i < size; i++) { for (int j = 0; j < position; j++) { prin
int position = 0;
int size = 4;
for (int i = 0; i < size; i++)
{
for (int j = 0; j < position; j++)
{
printf(" i = %d\n", i);
}
position++;
printf("i = %d\n", i);
}
printf("\n");
而所需的输出应为:
i = 0
i = 1
i = 1
i = 2
i = 2
i = 2
i = 3
i = 3
i = 3
i = 3
这是因为您已使用
位置创建了一个奇数变量循环条件。在i
for循环中的第一圈,它跳过内环,然后将位置增加1并打印i=0。然后下一圈当i
为1时,它执行内部循环,依此类推
这就是为什么在
循环中使用不断变化的条件是一个坏主意,因为这会使代码更难理解 要使循环中的代码至少执行一次,可以使用do while循环。我先给你换了。此外,在循环之前打印一个未插入的i
,可以获得所需的输出
int position = 0;
int size = 4;
for (int i = 0; i < size; i++)
{
printf("i = %d\n", i);
int j = 0;
do {
printf(" i = %d\n", i);
j++;
} while (j < position);
position++;
}
printf("\n");
int位置=0;
int size=4;
对于(int i=0;i
编辑:啊,我明白了,你又一次改变了你想要的输出!这使得至少不再需要执行代码的条件。常规的while循环可以实现以下功能:
int position = 0;
int size = 4;
for (int i = 0; i < size; i++)
{
printf("i = %d\n", i);
int j = 0;
while (j < position) {
printf(" i = %d\n", i);
j++;
}
position++;
}
printf("\n");
int位置=0;
int size=4;
对于(int i=0;i
只需将变量i
的输出置于内部循环之前
#include <stdio.h>
int main(void)
{
int position = 0;
int size = 4;
for (int i = 0; i < size; i++)
{
printf("i = %d\n", i);
for (int j = 0; j < position; j++)
{
printf(" i = %d\n", i);
}
position++;
}
printf("\n");
return 0;
}
您可以添加所需的输出吗?另外,
位置的值是多少?我正在测量输出的第一行是否没有缩进?这个程序应该打印某个字符?要在C
中打印字符,您需要使用%C
格式说明符,但在所示示例中我没有看到。如果不太大,请添加完整的代码也许在外循环的顶部添加一个打印会有所帮助,例如printf(“循环顶部;i=%d\n”,i)
。您应该将打印框(“i=%d\n”,i)代码>(没有缩进)在第二个循环之前,你建议我做什么来修复它?@AlexaN我不知道这个循环的目的是什么,所以我不能回答这个问题。看起来像是一个人工的教科书示例,而不是真实的代码。这可能是因为它删除了关于真实程序的所有内容,以找到循环失败的原因,别担心,我会修复它。我忘记了do-while循环,谢谢您的帮助!很抱歉,我在编写所需输出时出错。
#include <stdio.h>
int main(void)
{
int position = 0;
int size = 4;
for (int i = 0; i < size; i++)
{
printf("i = %d\n", i);
for (int j = 0; j < position; j++)
{
printf(" i = %d\n", i);
}
position++;
}
printf("\n");
return 0;
}
i = 0
i = 1
i = 1
i = 2
i = 2
i = 2
i = 3
i = 3
i = 3
i = 3