c語言閱讀程式,寫出結果。。請給出詳細的思路

2021-06-25 14:51:44 字數 1032 閱讀 1614

1樓:匿名使用者

首先void de(int a,int x,int *m)函式:

void de(int a,int x,int *m) // 函式形參為陣列a,整型x,整型指標*m

該函式的作用是將陣列a從x位置起,把後面的元素向前移動,覆蓋(刪除)掉x位置的元素。

然後,主函式中static的意思:

static是將陣列a宣告為靜態區域性變數(main函式內),靜態區域性變數儲存在全域性資料區,而不是儲存在棧中,每次的值保持到下一次呼叫,直到下次賦新值。這個具體的你得看看書,瞭解下,不過在這裡可以無視掉,無特殊作用。

最後主函式:

第一層for迴圈中,讀取第一個陣列元素賦值給x。然後第二層for迴圈中,依次將x與比較後面的值比較,如果發現重複值,則利用de()函式將重複的元素刪除。最後一個for迴圈輸出。

另外需要說一下的是,de(a,j,&m)的意思,陣列做實參時直接使用陣列名即可,如a。j為普通的形參。而&m的意思是將變數m的地址作為形參,這是指標作為實參時的使用方法,地址為實參,作用是這樣de()函式中便可直接對m值進行操作。

2樓:

執行結果為:32,12,56,78,5,

void de(int a,int x,int *m) /* 這個子函式的功能是刪除一個數值,然後將後面的數值前移,陣列長度減1 */

主函式中:if (a[j]==x) de(a,j,&m); 當a[j]==x的時候呼叫子函式,即當陣列a中有重複的數值時,會呼叫子函式,然後將重複的數值刪除,陣列長度減掉重複的數量,本例運**況大致為:

x=32時,執行後,陣列a變成:32,12,12,56,78,12,78,5,12

x=12時,執行後,要迴圈3次,刪除後面的3個重複的12,陣列a變成:32,12,56,78,78,5

然後當x=78時,刪除後面一個重複的78,最終得到結果:32,12,56,78,5,

3樓:匿名使用者

陣列保持原樣,因為把他設定成了static靜態的,不會被改變的型別。

c語言看程式寫結果,C語言高手來看看,看程式寫結果,告訴我步驟

這麼基本的問題。static int a表示這個a是一個靜態變數具有靜態儲存時期 內部連線 塊作用域,因此呢它和自動變數不同,每次函式結束自動變數會被刪除但是這個a不會,所以 n fun3 k 會改變一次a的值,使a等於5n fun3 m 接著上次的改變繼續改變a,所以這裡的a就成了6至於下面這題更...

c語言程式執行,結果都是0 0000000,誰能告訴我這個程

格式控制符不對 bai,有du 的編譯系統double型資料zhi只能用 dao lf,你改一下就行版了 include include main printf 9lf n s 型別不匹配 n定義的是duoble型 但輸入是float 導致n沒有被賦值 n為隨機值 是個負值 所以迴圈也沒執行 最後s...

c語言程式顯示隨機整數相加的結果,程式要求輸入答案,判斷答案是否正確然後輸出結果

int main include include main else goto l 我啥都不想說 用rand 函式引數隨機值就可以了。c 中 隨機產生兩個數做加法運算,要求使用者輸答案判斷使用者輸入的答案是正確的,並且為使用者記一次正確數,random ran new random int corr...