1樓:懶家大少
n 用於儲存使用者輸入的資料
m 外層迴圈的變數,用於跟n進行比較,看是否退出迴圈i 內層迴圈的變數,用以跟外層迴圈的變數進行比較和運算。
k 用於內層符合條件後的賦值,並決定外面的if是否執行j 開始就已經賦值了,用於最後的運算。
其實,你問作用,我不是很明白。我知道他的流程走向。
2樓:匿名使用者
這個程式是讀入乙個數n,然後輸出從3到n之間的所有素數首先從字面可以看出k是乙個標記,紀錄在i的迴圈中是否出現了i整除m的情況
如果沒有整除,說明m沒有1和m之外的因子,所以是素數。
j純粹是乙個控制輸出格式的變數,保證每輸出4個素數以後輸出乙個回車換行
3樓:
對於小於等於n且大於等於三的數,把它除以i,i的範圍從2到這個數-1(例如n=8,m從3開始,然後4可以被整除,然後k=1程式結束,也就是break;例如n=5,m從3開始增加,然後都不能被整除,所以就走另一條路)這個程式是看質數的吧,我學的是c++,有點區別,但是大概還是能看懂
4樓:笑遙浪子
你這個程式是用來求質素的。。輸入乙個數n,程式會依次判斷3到n是否為質素,,是,就輸出,這就是第乙個迴圈的作用,,,,,怎麼判斷是否為質素呢?對任意乙個質素,它不能被2到n-1之間的數整除,那就看i(i=2,3,4....
n)能不能整除了,這是第二個用了第二個迴圈,,,,,如果整除了就不用再判斷下面的數是否整除了,比如,8能被2整除,那就不用在迴圈判斷4了,應該退出迴圈,,,,如果沒找到能被整除的也退出迴圈,,但是問題就出來了,,,質素和合數都會退出迴圈,,那怎麼判斷它是中間退出迴圈(質素)還是迴圈執行完(合數)了呢?那就要用到乙個標記了,在判斷之前先假設它是質素(k=0)如果中間遇到能被整除就令k=1,,,,好了,,下面就判斷k的值就知道m是不是質素了,,,,再看j,,,每次找到乙個質素,j就加1;當j為4的倍數時,就輸出"\n",,也就是換行,,,所以,j的作用就是每輸出4個質素就換行,,,哎呀,,還算詳細吧,,,,嘿嘿,,應該能理解吧
5樓:匿名使用者
1、n是由使用者輸入的乙個整數,scanf("%d", &n)來實現;
2、m是最外層迴圈的索引計數,從3開始直到n,總共迴圈n - 3 + 1次;
3、k是每一次迴圈中的乙個狀態值,用於標記當前檢查的整數m是否滿足要求,檢驗方法通過內層迴圈實現;
4、i是記憶體迴圈的索引計數,從2開始直到m-1,總共迴圈m-1 - 2 + 1次;
5、j是一共找到的目標數量,由每一次迴圈中的那個if(k == 0)來更新,如果內層迴圈結束k仍然等於0,則說明當前的m是滿足要求的數,然後我們就列印出來,if(j % 4 == 0)塊是用來整理輸出的,相當於每輸出4個數,換一行,外層迴圈結束,j就是所有滿足要求的整數的數量;
補充描述一下,這個程式就是輸出所有3~n之間的素數,通過內層迴圈的if (m % i == 0)來實現的
C語言for迴圈的問題,C語言迴圈問題
一個偽 告訴你真相 我是大圈 一圈跑完,大圈還要跑嗎 要跑 繼續大圈與小圈的迴圈,不要跑 跳出迴圈 多層巢狀也是一樣 我是外圈 跑完了小圈,繼續中圈 中圈已結束 跳出中圈繼續執行外圈。中圈還沒結束 繼續中圈的迴圈 現在中圈也跑完了,再來跑大圈 如果大圈跑完了,該迴圈結束,還沒有的話繼續上面的奔跑,r...
c語言迴圈問題,禁止用陣列,C語言for迴圈中用gets輸入字元陣列的問題
c語言不能處理變數名。編譯之後變數都被用相應記憶體位址代替。因此,此類問題在c語言中都是用陣列處理。下面的辦法可以分別處理 int a1,a2,a3,a4 int i for i 1 i 5 i 高深一點的說,可以用乙個c的技巧 在程式執行時,會為變數申請記憶體空間,那麼a1,a2,a3,a4是在記...
c語言雙重for迴圈問題,C語言雙重for迴圈問題
1 雙重for迴圈就是兩個for迴圈疊加起來。2 for語句的格式為 for 初始化語句 條件語句 控制語句 for 語句的執行順序是 首先執行 初始化語句 然後測試 條件語句 若條件成立,則執行語句1到語句n 然後執行 控制 語句 接著再測試條件語句是否成立,如果成立則重複執行以上過程,直至條件不...