C程序按升序显示数字

标签 c loops for-loop while-loop

我知道如何按升序计数。在以另一种方法进行之前,我使用 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/

相关文章:

perl - 循环遍历 perl 哈希中的匿名数组

Java比较两个字母

javascript - 难以置信的快速 JS 循环?

c - 反汇编c代码中的冗余操作

将变量与链表的变量进行比较

python - 将这两个列表过滤为一个的更好方法是什么?

c++ - 我的 for 循环怎么搞砸了?

c - Timer a在msp430中高级编译优化模式下的使用

linux - lib(libmicrohttp-dev)中 "client callback"的概念

ios - drawRect中的for循环