我知道while回圈和for回圈有不同的布局才能作業。但我堅持如何將此代碼轉換為for回圈格式。
如何在保持相同輸出的同時更改格式?
#include<stdio.h>
int main(){
int n, i =1, sum =0;
do{
printf("enter a positive number to find whether prime or not: ");
scanf("%d",&n);
} while (n<=0);
while (i<=n){
if (n%i ==0) sum =1; //sum is the validation flag
i =1;
}
if (sum>2) printf("\nThe number %d is not prime.", n);
else
printf("\nThe number %d is prime.", n);
return 0;
}
uj5u.com熱心網友回復:
一個for回圈就像一個while回圈,只不過迭代變數的初始化和更新都放在了for頭部。
初始化是int i = 1回圈之前的宣告。更新為i = 1(通常寫為i )。所以把這些單獨的陳述句取出來放到header里。
for (int i = 1; i <= n; i ) {
if (n%i == 0) {
sum ;
}
}
uj5u.com熱心網友回復:
如果你的意思是這個 do-while 回圈
do{
printf("enter a positive number to find whether prime or not: ");
scanf("%d",&n);
} while (n<=0);
然后它可以重寫為 for 回圈,例如以下方式。
for ( n = 0; n <= 0; scanf("%d",&n) )
{
printf("enter a positive number to find whether prime or not: ");
}
注意這個代碼片段
while (i<=n){
if (n%i ==0) sum =1; //sum is the validation flag
i =1;
}
if (sum>2) printf("\nThe number %d is not prime.", n);
else
printf("\nThe number %d is prime.", n);
不能正確判斷一個數是否為素數。例如,對于等于 1 的數字,輸出將是該數字是素數。更改 if 陳述句中的條件,如
if (sum != 2) printf("\nThe number %d is not prime.", n);
至于while回圈,則可以用以下方式重寫
for ( ; i<=n; i ){
if (n%i ==0) sum =1; //sum is the validation flag
}
此外,由于變數 i 僅在回圈中使用,因此最好在 for 回圈中宣告它,例如
for ( int i = 1; i<=n; i ){
if (n%i ==0) sum =1; //sum is the validation flag
}
在這種情況下,從這里洗掉變數 i 的宣告
int n, i =1, sum =0;
至少喜歡
int n, sum =0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/319241.html
