一些 C 語言問題 請英雄們幫忙解決

發布 科技 2024-08-03
8個回答
  1. 匿名使用者2024-01-31

    在第乙個問題中,void fun(int,int*) 中的第乙個引數是乙個整數變數,第二個引數是乙個整數指標變數,實際上是乙個位址,所以在傳遞引數時,第乙個引數是整數,第二個引數是位址。

    在第二個問題中,將浮點型變數與浮點型(4 位元組)變數相乘將增加結果的寬度,這可能會超出浮點型可以表示的範圍。 將兩個 int(2 位元組)變數相乘不會超過浮點數的大小(書籍中通常使用 16 位機器),因此 b 是正確的。

    第三個問題,for 迴圈總共執行了 8 次。 從巨集觀定義中,我們知道 m=n+1,mun=(m+1)*m 2=(n+1+1)*n+1 2=4*2+1 2=8。 請注意,巨集定義只是巨集替換。

    第四,程式是求5以上的素數,函式isprime(m)是確定m是否為素數,如果是非零值,如果不是,則返回值0。 main 函式中的 while 用於確定質數並列印輸出。

  2. 匿名使用者2024-01-30

    fun(int,int*);第二個引數 (int*) 是指標,因此只能將引數 (&j) 傳遞給位址。

    2.我個人認為應該是精度的原因,因為在c中單個精度的精度不高,在機器中它的值是乙個近似的浮點數*浮點數的結果應該是乙個近似值,為了得到準確的值,所以用int

    #define n 2

    #define m n+1

    #define num (m+1)*m/2

    num (m+1)*m 2 替換為 n (n+1+1)*n+1 2,結果是 8

    4.按照你寫的程式,這樣。

    Isprime(M)) 通過它稱為 IsPrime

    for(i=2;m%i!=0;i++)

    return (i==m);因為 i=2 m=5 isprime 返回 0

    也就是說,while 語句不執行退回郵件。

    結果不是!5

  3. 匿名使用者2024-01-29

    這個問題測試了動態規劃的思想。

    **思路如下:

    假設我們想鋪設 10 的長度,那麼我們如何鋪設呢? 有兩種型別的鋪路。

    長度為 9,長度為 1。

    長度為 8,加上一塊長度為 2。

    由此我們可以看出,商店 n 的情況等於商店 n 1 的情況和商店 n 2 的情況。

    公式:f(n) f(n 1) + f(n-2).

  4. 匿名使用者2024-01-28

    斐波那契數列。

    f(n) = f(n-1) +f(n-2)

    覆蓋 n 個圖塊的方法數 = 覆蓋 n-1 個圖塊的方法數 + 覆蓋 n-2 個圖塊的方法數。

  5. 匿名使用者2024-01-27

    7.這是常識,選擇A,即用0-255之間的數字來表示字元。

    8.因為 while 迴圈的迴圈體只有乙個語句,sum +=a; 由於 A 在迴圈體中不自加,因此 A 的值將始終為 10,因此迴圈不會結束,因此選擇了 D

    9,!像 i 這樣的表示式意味著當 i 為 0 時表示式為 true,當 i 為非零時表示式為 false,因此它與 c 選項相同。

    陣列元素會產生溢位,並且不能將 5 個元素保留為 4 個大小的陣列。

    b:應該使用 {} 而不是 ()。

    c:正確,只賦值陣列 s 的前三個元素,後兩個元素預設為 0d:錯誤原因與 a 相同。

    6:a-=a-5,即a=a-(a-5),a的值為5,即c的值為5,然後執行(a=b,b+3); 所以 b 的值賦值給 a,所以 a 的值變為 1,而 b 沒有賦值,所以它仍然是 1,所以答案是 a

  6. 匿名使用者2024-01-26

    a 未解釋。

    d while 語句只執行它下面的大括號中的語句,或者語句 sum+=a 後面跟著乙個分號,語句到此結束,所以如果你不執行 a++,你就不能跳出迴圈。

    c i 為真,或 i 為假。 然後是比較語句,即作業。

    c 未解釋。

    答:這個問題比較麻煩,是測試的逗號表示式,逗號表示式是先計算前面的公式,再計算後面的公式,整數就是後面的公式。

    首先,這個方程不是 c= 而是 ,(a=b,b+3),因為等號的優先順序高於逗號。

    那麼對於a-=a-5,減號優先順序高於賦值,先做減法,結果為5,即c=a=5

    然後 (a=b, b+3),a=b=1,然後是 b+3,但這對整個值沒有影響。

  7. 匿名使用者2024-01-25

    基礎知識,沒有為什麼。

    A++在迴圈外執行,a在迴圈中始終為10,跳出迴圈的條件永遠不滿足。

    樓上說錯了,而(i)表示執行迴圈時i不等於0,!是乙個負號,所以它是 i==0

    A 和 D 中元素過多是違法的,將 B 括號改為大括號是合適的。

    首先看第一句c=(a-=a-5),右邊組合,先看最右邊的a-5=-4(但a還是1),相當於c=(a-=-4); 然後 a-=-4 給出 a=5(此時 a 為 5),則 c=a,c 等於 5。 然後往下看,a=b,其中 b 為 1,所以 a 再次變為 1。 然後看 b+3,結果是 4,但沒有給 b 賦值,所以 b 還是 1。

    所以最終結果是 1, 1, 5

  8. 匿名使用者2024-01-24

    7、A:字元用ASCII碼表示。

    8、a:問題條件不對,應為a=sum=0;

    9,a:!I 是在我不是 0 時形成的。

    10、C:A被定義了太多的元素,B不是乙個集合形式,D是同乙個元素被定義太多了。

    a:a、b不變,c按右繫結集計算c=1-(-4)=5;

    如果你不明白,你可以打我。

相關回答
11個回答2024-08-03

前兩個程式是 ++i 和 i++ 之間的區別。

i。就是將i加一,然後進行運算,如i = 0,j = 0; j = ++i;最後 i = 1;j = 1;因為 i 加 1 先執行,j 在執行中賦值; >>>More

15個回答2024-08-03

int a=2;

a%=4-1;相當於 2%3,<> >>>More

4個回答2024-08-03

對於 23 了解 %s 和 get %s 是輸出字串,對應的變數應該是陣列名稱,所以它應該是 not &a 或 a >>>More

7個回答2024-08-03

最後,還有兩個小問題。

1.要求 strlen(s) 將 '0'也算在內。 >>>More

14個回答2024-08-03

我在下面對此發表了評論。

先做for迴圈,完成while迴圈,最後做while迴圈do is do first再判斷,所以比第乙個for迴圈多乙個。 >>>More