c語言的一道題目,跪求大神每一步詳細解答

2021-03-06 00:28:56 字數 1468 閱讀 3231

1樓:可靠的雲朵

定義幾個變數;

外層for迴圈是n是100~200間的各數;(因為只有奇數才有可能是素數,所以n每次增2)

變數k是這個數的開方(為了簡便減少計算次數)內層for迴圈i是從2~這個數的開方k;

如果這個數n能夠整除這個數,那麼這個數n肯定不是素數,跳出內迴圈,外層n累加2,繼續進入內迴圈。。。如此計算下去,如果內迴圈結束了,還是不符合if這個判斷條件,那麼說明這個數肯定是素數,即輸出這個素數,m的作用是6個素數一換行

2樓:匿名使用者

首先main函式不用說了吧?

main函式第一行中定義了四個整形變數:n, k, i, m。

從1處可以得知,n的含義是n依次儲存從101到200的所有數字,以便程式判斷這些數字是否為素數。

在1處的for迴圈體中,將k定義為了n的平方根。從後面我們也可以看出,該程式檢驗n是否為素數的方法是依次用2, 3, 4, ..., k去除n,如果有一個數能整除n,就說明n不是素數。

那麼為什麼是一直除到k而不是除到n-1呢?這是因為:

如果我們已經證明在區間[2, sqrt(n)]之間沒有數字能夠整除n,那麼對於任意一個大於sqrt(n)的整數,要使這個整數能夠整除n,則n必然能夠找到另外一個小於sqrt(n)的因子,但是這卻與我們已經證到的結論矛盾,因此此時任意一個大於sqrt(n)的整數都必定無法整除n,因此判斷一個數是否為素數,只需要從2一直除到sqrt(n)就可以了。

那麼那個2處的i >= k+1是什麼意思呢?

從第二個for迴圈可以得出這樣一個結論:如果n為非素數,則肯定有一個整數i能夠整除n,那麼那個break語句肯定就會被執行一次。一旦執行了break語句,則i變數則永遠不可能大於k(因為最後一個i++這條語句肯定得不到執行),也就是i永遠不可能大於或等於k+1。

反過來說,如果n為素數,則執行完第二個for迴圈後,i的值必定為k+1,因此if判斷語句塊內的內容就肯定能夠被執行,從而輸出素數n的內容,並且將輸出控制變數m的值遞增1。

那個m和d我估計應該是控制輸出的格式,就是輸出來以後每一行都是d個數字。

一道非常簡單的c語言題,跪求大神解答,,,答案是quickc 謝謝了!!!!

3樓:

輸入5個字串,作比較,當輸入quickc時,strcmp<0,這時strcpy執行,

temp = "quickc",後面的strcmp返回的都是》0了,結果就是quickc

c語言裡的一道問題,求助大神,求解題過程,特別是第二個for迴圈不知道什麼意思。

4樓:匿名使用者

第一個for:把數字陣列中小於7的數置0;

第二個for:列印輸出,把陣列中所有元素輸出到螢幕上。

5樓:匿名使用者

第一個for將陣列中小於7的陣列元素置零;

第二個for是在螢幕上輸出運算結果。

一道c語言題目,一道C語言題目

就是個斐波那契數的列遞迴解法啊,k項 k 1項與k 2項的和。你可以函式慢慢算。fib 0 0,fib 1 1,fib 1 1,fib 3 fib 1 fib 2 0,1,1,2,3,5,8,13.fib 7 fib 6 fib 5 fib 5 fib 4 fib 4 fib 3 fib 4 fib...

一道c語言的小題目跪求解答,一道C語言的小題目,跪求解答!

問題在於表示式c getchar n 注意這裡的的括號 c getchar n 本質上是把子表示式getchar n 的值賦給變數c,換而言之c的值必然是表示式getchar n 注意,這裡子表示式getchar n 是一個關係表示式,即判斷輸入的字元是否是 n 也就是說其值不是真 1 就是假 0 ...

求解釋一道C語言檔案題目,一道c語言填空題,程式沒看懂 求詳細解釋!

1 輸出的結果為 123456 2 分析 void main fp fopen d3.dat wb fwrite a,sizeof int 3,fp 把陣列a的前三個元素寫入檔案 fseek fp,sizeof int 3,seek set 把檔案指標從檔案頭開始向後移動12位元組 fread a,...