C程序以升序显示数字

时间:2017-02-05 09:54:21

标签: c loops 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;
} 

注意:我可以理解上面的内容很糟糕,应该避免。它很简单,但我很高兴知道我做错了什么。我尝试调试,它显示38 while loop

6 个答案:

答案 0 :(得分:3)

你的while循环可能如下所示:

int main(void) {
    int i = 1, number = 10; // initialize i to 1

    while(i <= number)
    {
        printf("%d\n", i);
        i++;   
    }

    return 0;
}

答案 1 :(得分:2)

您尚未将i初始化为某个值。所以它包含垃圾值

i++也应该在while循环中。否则,如果i的垃圾值小于10

,它将成为无限循环

答案 2 :(得分:2)

您尚未将i初始化为1。您还没有在循环中包含i++。 你想要做的是运行while循环,直到i等于10,所以为了做到这一点,你必须在循环的每次迭代时增加i,你也错误地完成了i = number { {1}},也许您希望printf("%d" , i)使用此代码成为

#include <stdio.h>
int main()
{
    int i = 1, number = 10;

    while (i <= number)
    {
       printf("%d", i);
       i++;
    }

    return 0;
} 

输出:1 2 3 4 5 6 7 8 9 10

10之后,i超过number(等于10),因此循环停止。

答案 3 :(得分:2)

这个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 )

答案 4 :(得分:1)

您忘记影响或初始化i。如果你没有C标准说明它的未定义行为。

int i = 0; // for example

顺便说一下,在你的情况下,main的正确原型是int main(void);

答案 5 :(得分:1)

必须将变量i初始化为1.此外,i++应该在循环中。不确定为什么要在每次迭代时为i分配编号。 您的代码已更改:

#include<stdio.h>
int main()
{
    int i =1;
    int number = 10;

    while(i <= number)
    {
       i = number;  // why are you assigning 10 to i?
       i++;
    }


    printf("%d", i);

    return 0;
}