[英]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.