1樓:匿名使用者
你n傳值的是時候給的是5,x[n-1]=x[4]=5,在第一個fun2()執行過程中n的值是一直沒有變的,執行第二個fun2()的時候n=3指標指向的陣列變成,
此時x[0]=4,
x[n-1]=x[2]=2
交換的是a[1]和a[3]的值
2樓:匿名使用者
其實這兩個函式是相同的功能,都是將陣列首尾對應的資料進行交換。只不過fun2採用了函式的巢狀,比如說你這個陣列呼叫fun2時 將陣列的首地址和長度n傳遞到fun2裡面,第一次運算 我們將a[0](值為1)和a[4](值為5)進行了交換,然後執行到fun2(x+1,n-2); x+1是指將指向陣列的指標+1,其實就是將指標指向了a[1],然後n-2 實際就是指當前需要交換的資料的個數,當這個例子在fun2執行了2次以後 第一次n=5,第二次n=3,第三次n=1時,說明我們要交換的資料只有一個了,就是不用交換了,進入if語句,正常返回。打了這麼多 有什麼不懂的 可以再提問
c語言 s=fun(n-1)+2 我想知道 這句是什麼意思 如果n=3 s=fun(2)+2 這句表示了什麼
3樓:
s = fun( n-2 ) + 2; 表示將函式fun的返回值 + 2賦給s。函式fun的形參是 n - 2。那這樣n=3 s=fun(2)+2 即好理解了。
具體s是多少要看函式是怎樣實現的了(看函式體內容)
4樓:匿名使用者
輸入3,代入fun()中,得到
c=fun(2)+2
c=(fun(1)+2)+2
c=(10+2)+2
所以結果是14
5樓:匿名使用者
這個是c語言中比較經典的函式遞迴呼叫,就是函式呼叫了他本身,s=fun(n-1)+2是指本次呼叫的該函式的引數是在上一次函式執行結果,計算的時候不能從n=3開始,必須從初始條件開始迭代。
你說的n=3,s=fun(2)+2應該理解為,f(3)=f(2)+2即第三次執行結果應該是第二次執行結果+2,二第二次應該是第一次加2,由於當n=1是,f(n)=10,故f(1)=10,f(2)=f(1)+2=12,f(3)=f(2)+2=14.不知看清楚沒有。
6樓:々潪☆銘
fun(n)這個是個函式的
s=fun(n-1)+2
fun(n-1) 就是把
n-1 作為引數進行fun內部的運算
n=3 s=fun(2)+2
就是把 2 作為引數進行fun內部的運算
最後把fun的返回值 + 2賦給s
7樓:
fun()是某個函式,返回某個值,比如fun(n)
那fun(2)就等於3,s=3+2=5
8樓:匿名使用者
這個是遞迴:
要求出f(3),必須求出f(2),要求出f(2)就必須求出f(1),而f(1)是已知的,最後從f(1)再倒著算回去:
f(3)=f(2)+2=(f(1)+2)+2=10+2+2==14
c語言中fun(n-1)+fun(n-2)是什麼意思啊
9樓:聽不清啊
這是一個遞迴函式中的語句。
long fun(int n)
這個遞迴函式,它是用來計算菲波那契數列第n項的。
前面的 if(n==0||n==1) return 1; 說的是遞迴結束的條件。就是說菲波那契數列的前二項的值就等於1,
從n>=3起,就使用遞迴的方法來計算fun(n)的值。
比如要計算fun(4),它就等於fun(3)+fun(2);
而fun(3)=fun(2)+fun(1);
fun(2)=fun(1)+fun(0)=1+1=2所以,它呼叫fun(2)時就返回函式值2,呼叫fun(1)時直接返回函式值1,於是就計算出fun(3)的值為2+1=3。
10樓:
一個遞迴的函式,
當n<=2時,fun(n)=4
當n>2時,fun(n)=fun(n-1)+fun(n-2)也就是說
fun(1)=4,
fun(2)=4,
fun(3)=fun(2)+fun(1)=8fun(4)=fun(3)+fun(2)=12fun(5)=fun(4)+fun(3)=20
11樓:匿名使用者
fun是函式吧。就是n-1代入到函式得到的值加上n-2代入到函式得到的值
12樓:匿名使用者
fun應該是自己定義的一個函式,實現的是一個計算功能,返回計算後的結果吧,上**嘛,直觀點!
13樓:匿名使用者
遞迴!!你把1,2,3代入n自己算一邊就知道了
關於c語言中交換兩個變數的幾種做法?求詳細解釋!實際執行中fun2()可交換,fun3不行,為什麼?
14樓:匿名使用者
實際上是 fun1 ,fun3 能夠生效,而fun2沒有生效。
初始狀態下 a=3 ,b=8,
fun1 進行一次交換,a=8 b=3,
在fun2中, 只是交換了兩個地址,但是這裡函式裡面交換的地址對外面是沒有影響的,所以依然是 a=8 b=3,
如果你在fun2 內部 使用printf("%d %d\n", *x, *y);就能看到給外面不一樣的結果
,然後是fun3中 是直接修改的指標指向記憶體處的數字,成功的交換了a,b旳值 所以顯示 a=3 b=8
ps:測試時候 最好一次測試一個函式。我也看了好久才看明白
15樓:混沌亂炸老店鋪
t=*x;
*x=*y;
*y=t; 系統在你賦值的時候會給那個數字一個儲存地址,而整個指標就是指向該數的地址,你這個交換的是地址 所以數值沒有變
在c語言中,例如一個數學表示式,k=fun1(a)+fun2(b);是先執行fun1函式還是先執行
16樓:匿名使用者
首先按算符優先性,確定計算次序;優先順序相同時,按結合方向確定
c語言:(1)定義函式fun(x)計算x^2-3.14x-6,函式返回值型別是double (2)輸出一張函式表(如下表所示)
17樓:匿名使用者
看你圖上的內容,這裡的x我就當成是整數來做了#include
double fun(int x)
int main()
return 0;}
18樓:匿名使用者
測試結果:**顯示,美觀一點:
自變數 x 函式值 y
_______________________-10 125.40-9 103.26-8 83.
12-7 64.98-6 48.84-5 34.
70-4 22.56-3 12.42-2 4.
28-1 -1.860 -6.001 -8.
142 -8.283 -6.424 -2.
565 3.306 11.167 21.
028 32.889 46.7410 62.
60請按任意鍵繼續. . .
**:#include "stdio.h"
#include "stdlib.h"
#include "math.h"
double fun(double x)
main()
system("pause");}
19樓:匿名使用者
#include"stdio.h"
#include"stdlib.h"
double fun(int x)
main()
希望能幫到你
20樓:匿名使用者
#include
#include
double fun(int x)
main()
c語言問題2 請教高人
21樓:裘墨徹星酉
fun2(1.1,2.0);
這是呼叫函式2,這時。x=1.1,y=2.
0所以函式2裡面:a=fun1(x)也就是a=fun1(1.1)b=fun1(y)也就是b=fun1(2.
0)fun1(1.1)執行後是1.21,fun1(2.
0)執行後是4.0。分別賦予a,b.
所以a=1.21,b=4.0
(int)(a+b)=(int)(1.21+4.0)=(int)5.21=5
c語言中,定義了二維陣列a[n][n],當呼叫函式fun(a)時,形參為什麼不能是**a,只能是(*a)[n]或a[][n]?
22樓:加
int t[n]和int (*t)[n],表示的意義是一樣的,都是說t是一個指標,
指向一個包含n個元素的整型陣列。
現寫一小程式,作用是按行輸出二維陣列的各個元素#include
#include
#define n 5 //列數
void printarray(int (*a)[n],int rows)//執行過後再改為int a[n]試下
printf("\n");//換到下一行 }}int main()
,,};
//int **b=a;這個賦值不行,因為a是int*[5] 型別//int (*b)[5]=a;這個可以執行通過printarray(a,3);
return 0;
}我用的編譯器是c-free,希望這個解釋對你有用。
23樓:墨派
你的fun(a)中a是什麼資料型別?
無論哪種資料型別,**a這種資料型別不存在,你自然不能把它當作形參了!
24樓:神魔靈樂
**a 表示一個指向指標的指標標量a,後兩種是函式傳參的形式,是語言定義的規範。可直接將a定義為一個指標型別,直接傳參 。如
typedef a[n][m] *p2_darray;
p2_darray;
fan(p2d);
25樓:帥7嘿嘿
a表示是陣列a的首地址,(*a)[n]表示二維陣列中的一維的首地址如:a[3][3]中a[3]表示a[3][0]
*a表示陣列首地址,**a就不代表陣列中的地址了。
c語言二級指標問題,C語言二級指標問題
1 通過二級指標去訪問二維陣列需要先給二級指標分配等同於二維陣列行數的一維陣列指標,然後把二維陣列的每行首地址賦值給對應位置的一維指標上。之後就可以通過二維指標直接訪問了。2 參考 如下,可以看具體註釋輔助理解。include 輸入輸出標頭檔案。include 本程式需要用到malloc free函...
二級C語言的簡單問題
更正 不能是g,剛翻了下書,輸入沒有 g這東西。只能是 f scanf 8f c 是283.1900賦給c 小數點也算一位 而且輸入的話,不能控制小數點後面幾位,沒有 6.2f這樣的所以不能選c,如果c改成scanf 6f c 那麼也是對的 至於a,b都是明顯錯誤。什麼書上都會有錯誤的。如果方便的話...
關於國家計算機二級C語言問題,國家計算機二級C語言,後三題只儲存沒執行,有分嗎
基本要求 1.掌握演算法的基本概念。2.掌握基本資料結構及其操作。3.掌握基本排序和查詢演算法。4.掌握逐步求精的結構化程式設計方法。5.掌握軟體工程的基本方法,具有初步應用相關技術進行軟體開發的能力。6.掌握資料庫的基本知識,瞭解關聯式資料庫的設計。考試內容 一 基本資料結構與演算法 1.演算法的...