簡體   English   中英

C程序以升序顯示數字

[英]C Program To Display Numbers In Ascending Order

我知道如何按升序進行計數。 在使用另一種方法之前,我已經使用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。

您的while循環可能如下所示:

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

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

    return 0;
}

您尚未將i初始化為某個值。 因此它包含一個垃圾值

i++也應該在while循環中。 否則,如果i的垃圾值小於10,它將變成無限循環

您尚未將i初始化為1 另外,您還沒有在循環中包含i++ 您想要做的是運行while循環,直到i等於10 ,這樣一來,您必須在每次循環中都遞增i ,同時您也錯誤地將i = number ,也許您想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 ),因此循環停止。

這個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 )

您忘記影響或初始化i 如果您沒有C標准,那就說這是未定義的行為。

int i = 0; // for example

順便說一句,在您的情況下,main的正確原型是int main(void);

變量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;
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM