亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

有點無法理解!

#include?<stdio.h>
int?main()
{
????int?m,?n;
????for(m=2;?m<=50;?m++)
????{
		for(n=2;?n<m;?n++)
????????{
????????????if(?m%n==0???????)???????//什么條件下跳出當前循環
??????????????break;?????????????????//這里應該退出當前循環了
		}	
????????if(m?==?n)???//n循環結束后,如果m=n的話就輸出m
????????????printf("%d??",?m);
	}
	return?0;????
}
一直想不明白這句是為什么?if(m?==?n)
m==2?能勉強理解?
m==3?為什么?
外循環m=3時??for(n=2;?n<m;?n++)??是不是就等價于for(n=2;?n<3;?n++)
這時候n=2后?內循環就應該停止了啊,怎么實現的n==3的?


正在回答

2 回答

外循環m=3時??for(n=2;?n<m;?n++)? 等價于for(n=2;?n<3;?n++)

這時候n++等于3時 不符合循環條件會跳出當前內循環。

但注意,此時n就是等于3了(n++自增導致的

for循環的執行順序是先n<m判斷,執行語句,n++,再n<m判斷,執行語句,n++

所以n=2(執行語句)后,n++等于3,n<m條件不符合,跳出當前內循環。

再執行? ? ? ? if(m?==?n)???

????????????printf("%d??",?m);

所以能輸出素數3.

后面的數字同理。

故? ? ? ?

? ? ? ? ? ? if(m?==?n)???

????????????printf("%d??",?m);

是保證素數自身一定能被輸出,前面內循環語句是找出數字的能被整除的情況,跳出循環后m?==?n又限制這個因數只能是自身。

綜上,n<m和n<=m條件應該均可。




2 回復 有任何疑惑可以回復我~

#include <stdio.h>

int main()

{

? ? int m ;

? ? for (m = 2; m <50; m++)? ? ? //for(m=2;m<=50;m++)

? ? {

? ? ? ? ;

? ??

? ? }

? ? printf("%d", m);

? ? return 0;

}

我試了一下上邊代碼,輸出的是50 //51

我是不是可以這樣理解? :

for循環時? 哪怕m<50==0? ? ? m++依然會運算一次?。?/p>


0 回復 有任何疑惑可以回復我~
#1

小機靈鬼er

所有有沒有可能程序要運行到printf輸出,必須經過上面的內容
2023-07-10 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926904    人
  • 解答問題       21532    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

有點無法理解!

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號