for語句的作用范圍
正如你所說的,這個就是由于for語句的作用范圍導致的
比較這兩個:
for(j=2;j<i;j++)
if(i%j==0)break;
if(j>=i)printf("%d ",i);
和
for(j=2;j<i;j++)
{
if(i%j==0)break;
if(j>=i)printf("%d ",i);
}
前一個(正確的那個)for的作用范圍只是到if(i%j==0)break;這一句,
for語句的執行只會有兩種情況:
1.在j<i的所有j中,找不到能夠滿足i%j==0的數,當j==i時,退出for循環,
隨后判斷if(j>=i),當j==i時,說明該數是質數,輸出
2.在j<i的j中,有能夠滿足i%j==0的數,直接進行break處理,隨后判斷if(j>=i),這時候j>=i不成立,不進行輸出
后一個(錯誤的那個)for的作用范圍是到if(j>=i)printf("%d ",i); 這一句,
for語句的執行只會有兩種情況:
1.在j<i的所有j中,找不到能夠滿足i%j==0的數,當j==i時,退出for循環,
if(j>=i)的判斷不會被執行
2.在j<i的j中,有能夠滿足i%j==0的數,直接進行break處理,繼續進行最外層的for循環處理
其實,在后一種情況中,for循環中以及限定j<i,所以其內部的if(j>=i)printf("%d ",i); 這一句永遠不會被執行的,也就不會輸出任何信息
for語句的作用范圍
正如你所說的,這個就是由于for語句的作用范圍導致的比較這兩個:for(j=2;j=i)printf("%d ",i); 和for(j=2;j=i)printf("%d ",i); } 前一個(正確的那個)for的作用范圍只是到if(i%j==0)break;這一句,for語句的執行只會有兩種情況:1.在j=i),當j==i時,說明該數是質數,輸出2.在j=i),這時候j>=i不成立,不進行輸出后一個(錯誤的那個)for的作用范圍是到if(j>=i)printf("%d ",i); 這一句,for語句的執行只會有兩種情況:1.在j=i)的判斷不會被執行2.在j=i)printf("%d ",i); 這一句永遠不會被執行的,也就不會輸出任何信息。
C++用范圍for語句如何輸出2個數組的內容
#include
#include
using namespace std;
void main()
{
vectorx;
vectory;
for(int i=0;i::iterator itx=*();
vector::iterator ity=*();
for(;itx!=*();itx++,ity++)
cout
C語言 大家幫幫忙 分析一下下 每個 for語句的范圍吧
1. for(i = 0;i < 10;i++) scanf("%d",&a[i]); 管到這。
2. for(j = 0;j < 9;j++) for(i = 0;i < 9 - 1;i++) if(a[i] > a[i + 1]) { t = a[i]; a[i] = a[i + 1]; a[i + 1] = t; } 管到這。3. for(i = 0;i < 9 - 1;i++) if(a[i] > a[i + 1]) { t = a[i]; a[i] = a[i + 1]; a[i + 1] = t; } 管到這。
4. for(i = 0;i < 10;i++) printf(" %d ",a[i]); 管到這。理解了不?呵呵,C語言就是這樣,來回的繞人!樓主的補充可以理解!!。
關于FOR
FOR-NEXT循環指由FOR語句、NEXT語句的循環三者構成的循環,它是一般格式為:
FOR〈循環變量〉=〈循環變量初值〉TO〈循環變量終值〉
STEP〈循環變量增量〉
循環體
NEXT〈循環變量〉
FOR語句稱為"循環起始語句"或"循環說明語句",它的作用是確定循環變量的值如何變化,從而控制循環的次數。
"循環變量初值"、"循環變量終值"和"循環變量增量"可以是常數、變量或表達式。
NEXT語句是"循環終端語句",它的作用是標志循環結構的范圍,在FOR語句和NEXT語句之間的語句的語句組就是循環體。每次循環執行到NEXT語句時,循環變量按步長增值。
請注意:
①FOR語句與NEXT語句必須成對出現,缺一不可;
②FOR語句必須在NEXT語句之前;
③FOR語句中的"循環變量"與NEXT語句中的"循環變量"必須是同一變量。
④如果步長為1,則"STEP"可以省略。
/*-NEXT循環的執行過程
如果有以下循環:
FORi=a TO b STEP c
PRINTi
NEXTi
在執行此循環時,按以下步驟進行:
①循環變量i取初值a;
②將i的值與終值b比較,如果i未超過b,則接著執行步驟③到⑤,否則跳過步驟③到⑤,而直接執行步驟⑥;
③執行循環體(PRINTi);
④NEXT語句,循環變量i按步長c增值;即i+c->i。此時循環變量i的值已發生了變化,由一個新值取代了原來的值。"NEXTi"不是"取下一個值i"的意思:
⑤返回執行步驟②;
⑥循環執行終止,接著執行NEXT語句的下一個語句。
/3.說明:
①終止循環的條件是"循環變量的值超過終值",而不是"循環變量的值等于終值"。
②循環的次數可以直接從FOR語句中指定的參數計算出來:
循環終值-循環初值
循環次數=----------+1
步長+1
③循環變量盡量用整型變量,以免出現誤差。
雖然QBASIC允許循環變量為任何數值型變量,但由于實型量在存儲和運算過程中會出現一些小的誤差,因此可能會使循環次數多一次或少一次。
④循環變量初值和終值可以是正值、負值或零。步長可以是正值或負值。它們可以是整數或小數。但提倡用整數。
⑤當步長為零時,循環永不終止,成為"死循環"。下面程序運行時就是"死循環"。
FORx=2TOSTEP0
PRINTx
NEXTx
END
⑥循環變量的作用主要是用來對循環進行控制,根據它的值決定何時終止循環過程。循環變量可以在循環體中被引用,也可以不在循環體中出現。
⑦在循環體內一般不要對循環變量再賦值,否則將影響原有的循環控制狀況。
⑧流程可以從循環體內轉移到循環體外,但不能從循環體外轉到循環體內。
FORk=1TO10
s=s+k*k
IFs>200GOTOa:
NEXTk
a:PRINTk
END是合法的。但由于循環有兩個出口,不符合結構化原則,故不提倡使用。