我知道如何按升序计数。在以另一种方法进行之前,我使用 for Loop
完成了以下操作:
#include<stdio.h>
int main()
{
int i;
for(i = 1; i <= 10; i++)
{
printf("%d", i);
}
return 0;
}
上面的一切正常。所以我尝试使用 while loop
来做到这一点,并坚持使用以下内容:
#include<stdio.h>
int main()
{
int i, number = 10;
while(i <= number)
{
i = number;
}
i++;
printf("%d", i);
return 0;
}
注意:我可以理解以上是不好的,应该避免。这很简单,但我很高兴知道我做错了什么。我尝试调试,它使用 while loop
显示 38。
最佳答案
这个for循环
for(i = 1; i <= 10; i++)
可以通过以下方式转换为 while 循环。表达式
i = 1;
(即变量i
的初始化)会放在while循环之前。条件
i <= 10
将用作 while 循环的条件。
最后,表达式 i++
将作为循环体中的最后一条语句使用。将所有这些结合在一起,您将得到
#include <stdio.h>
int main( void )
{
int i;
i = 1;
while( i <= 10 )
{
printf("%d ", i);
i++
}
return 0;
}
因此,如果你有一个像这样的 for 循环
for ( expression1 ; condition2 ; expression3 )
{
statements
}
那么通常你可以通过以下方式将其转换为等效的 while 循环
expression1;
while ( condition2 )
{
statements
expression3;
}
如果 for 循环包含一些 continue
语句,那么您需要在相应的 while 循环中的每个 continue 语句之前包含 expression3
..
相对于原始 while 循环的另一种方法是将条件和条件中的第三个表达式结合起来。在这种情况下,变量 i
的初始值应该等于 0。例如
#include <stdio.h>
int main( void )
{
int i;
i = 0;
while( ++i <= 10 )
{
printf("%d ", i);
}
return 0;
}
关于这个程序
include<stdio.h>
int main()
{
int i, number = 10;
while(i <= number)
{
i = number;
}
i++;
printf("%d", i);
return 0;
}
那么它有未定义的行为,因为变量 i
没有被初始化。至少这些声明
i++;
printf("%d", i);
必须在循环体和语句内
i = number;
必须删除。
请注意,根据 C 标准,不带参数的函数 main 应声明如下
int main( void )
关于C程序按升序显示数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42050659/