c語言問題?詳細解答一下,謝謝,C語言問題,詳細解答一下,謝謝

時間 2021-08-11 18:17:32

1樓:密碼忘記了

遞迴呼叫, 結果是輸出陣列中所有數的和, 對這個例子結果是6.

if(n>1) return a[0]+f(&a[1],n-1); 這句話表示如果n>1, 就以該陣列第二個數為輸出作為一個新陣列,n-1為新的n,遞迴呼叫該函式,將返回值和當前輸入陣列的第一個元素加起來的和作為返回值。

else return a[0];表示n為1時,直接返回陣列第一個元素。

所以整個程式功能是返回一個陣列所有數字之和。

具體執行步驟:

第一次執行f(int a, int n), a是, n為3這時n>1, 於是計算a[0](1)+ f(,2)類似的f(,2)= 2+ f(,1)=2+3=5於是最外層f返回6

2樓:紀景明枚書

輸出結果:cdeab

分析:只要你理解了move函式的作用你就能明白整個過程:

第一次迴圈呼叫move(char

*str,int

n)這一函式給它的引數是

s與s的長度(就是你輸入的abcde的長度5),第一步執行temp=str[5-1]=str[4],而str[4]的值為'e',所以temp的值為'e',接著執行for(i=n-1;

i>0;i--)

str[i]=str[i-1];

這個迴圈是把從str[1]開始的所有陣列的元素都後移一位,即str[2]成了str[1],str[3]成了str[2]等等,迴圈執行完後執行str[0]=temp;,也就是把e賦值給了

str[0]。所以abcde被move函式處理一次後就成了eabcd,如果再被處理一次後就被變成deabc等等也就是說move函式每呼叫一次就把相應的字串迴圈右移一位

c語言問題,詳細解答一下,謝謝~~~

3樓:聽不清啊

輸出結果是

cdeab

函式move(char *str,int n)的作用是把長度為n字串的尾字元,前移到串首。

在main()函式中連續呼叫了n次,即把字串末尾的n個字元前移到串首。

4樓:匿名使用者

輸出結 果:cdeab

分析:只要你理解了move函式

的作用你就能明白整個過程:

第一次迴圈呼叫move(char *str,int n)這一函式給它的引數是 s與 s的長度(就是你輸入的abcde的長度5),第一步執行temp=str[5-1]=str[4],而str[4]的值為'e',所以temp的值為'e',接著執行for(i=n-1; i>0;i--) str[i]=str[i-1]; 這個迴圈是把從str[1]開始的所有陣列的元素都後移一位,

即str[2]成了str[1],str[3]成了str[2]等等,迴圈執行完後執行str[0]=temp;,也就是把e賦值給了

str[0]。所以abcde被move函式處理一次後就成了 eabcd,如果再被處理一次後就被變成deabc等等

也就是說move函式每呼叫一次就把相應的字串迴圈右移一位

5樓:匿名使用者

#include

#include

void move(char *str, int n)int main()

樓主的意思 是移動字串麼?

注意scanf(“ ”); 引號中的書寫形式,不能有“,”

c語言問題,希望高手能夠幫忙解答一下,謝謝了。

6樓:鈍角111度

#include

int main()

printf("%d\n",a);

return 0;}

7樓:濮方雅

在while裡死迴圈了,你要加上一句在while的花括號裡面

c=a*b;

8樓:匿名使用者

因為你++a之後,c的值根本沒變,程式一直處於死迴圈中。加上c=a*b;吧。

9樓:匿名使用者

因為c永遠不會大於10000所以死迴圈。一直在計算。。

10樓:m_奮鬥

這個while是個死迴圈可好啊,c=a*b加到迴圈體就好了啊。

下面有一些關於c語言問題,希望大夥兒侃侃,最好解釋詳細,謝謝呢?

11樓:匿名使用者

第一題:3

這是一道位運算,a&0377等同於011&011111111的運算,這兩個與一下值為011,也就是3

第二題:11

這也是位運算,先把3,10,15化為二進位制,依次為:011,1010,1111.a|b&c先執行b&c得到1010,再跟a或運算(一位一位或)得到1011,也就是11.

第三題: d) h/2*(a+b)

h/2等於1,而代數中等於1.5.這是因為h為整型,h/2後也是整形,0.5捨去.

第四題:20 0

以上格式寫得讓人誤會,我重寫一下,你就會明白.

main() ,固if語句範圍只有第一個;為此

x=y;y=t;

printf("%d,%d\n",x,y);

}第五題:8 4

void f(int y,int*x) x是按地址傳,而y是按值傳,當值傳到函式裡時,*x可以改變x的值,而y不能返回.保持原來的值...

第六題:

這是c語言的記憶體動態分配,不是很掌握,沒有把握,希望其它好心人幫忙一下補齊.

第七題:efgh

這道我簡單說下,語言點太多,要是不明白,發訊息給我,我就這題說詳細.

return s+strlen(s)/2,返回的是一個指標,s指向首元素a,strlen(s)/2=4,固返回的指標指向第五個元素e.主函式中的 printf列印從第五個元素之後的字串.

第八題:6

這是一道遞規呼叫.主函式傳給函式時f()時,a=a[3]首元素是1;返回1+f(&a[1],2);f(&a[1],2)在呼叫函式時a=a[1],但此時首素是2而不是1;返回1+2+f(&a[1],1);最後呼叫函式,a=a[2],首元素為3,也只有一個;返回1+2+3,得到6

第九題:double max,&y

這題不需要解釋吧....還是簡單講一下,第一個空是函式宣告;要與定義的函式相符,第二個空,輸入時要加&,為什麼呢?我們要把輸入的值傳給變數對應的地址,固用地址符&

最後一題:14

位運算;12|012化簡得到:001100|001010=001110,換算成10進製得到14

其中注意,012是八進位制,1對應001,2對應010,一整個001010,因為兩個要等長,固補0;

哇,一口氣做完,真是夠累的...好久沒這麼做了...

呵呵,又來了;

我補充一下第六題,我看一下書,明白了.

p=(double *) malloc(3*sizeof(double));

12樓:

我說老兄,你到底學過程式設計沒有?

c語言問題,求詳細解答,謝謝

13樓:

break就是跳出一層迴圈,如果你在三層他就跳到二層,二層就跳到一層;

continue不跳出迴圈,而是如果你在一個迴圈的第i次中遇到了一個continue,他就不管continue後面的語句,直接執行第i+1次迴圈,還是這一層迴圈。

14樓:

個人理解

break:跳出當前所在迴圈體(指的是for\while語句一個整套迴圈結構)

continue: 結束本次迴圈,不跳出當前迴圈體,繼續下次迴圈b、break語句只能跳出最內層迴圈 其實說的就是迴圈體的意思 自己懂了意思最好

C語言問題求大神解答,求大神解答一下C語言問題?

水晶扇 a b 2,n b 4 1 計算 裡面的,b 2,n n b 5 2 1,逗號表示式返回最後一個表示式的值 賦值表示式的值就是被賦給的值,即1 所以括號裡面結果為1 2 計算a 1 4,先計算等號右邊的值 5 則a 5,等價於a a 5 12 5 2 樓主你好。b 2,n b 其實就是兩條語...

c語言問題。急求詳細解答,C語言問題。急求詳細解答!!

與影 第一個呼叫把i 2的值傳遞給fun2的形參,而形參變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數,所以呼叫結束後i的值並未改變。雖然fun2的返回值是處理後的i,但是由於並未將函式呼叫...

c語言問題,小白求詳細解答,C語言問題 小白求解答

結果是a how are you 第一次開啟檔案,以 w 方式建立乙個新檔案,寫入how 第二次開啟檔案,以 a 方式追加資訊到檔案,寫入are you c語言問題 小白求解答 問 r,s,t 三個集的關係。t 由 r,s 得出。答,r,s,2 個集 之差 得 t.理由 把 r 裡與 s 相同 的 ...