1樓:
c語言函式引數都是單向傳遞的,直接傳值是不可能改變原來的數值的。此題答案30,20(你的printf好像有點問題)。
#include
void fun(int *p1, int *p2, int *p3)
main()
2樓:匿名使用者
按lz所寫**輸出為30,20,因為函式的引數為所宣告變數的副本,這樣不會改變原有的變數。如果想改變原來的值可以有如下寫法:
(ps:舉一個例子,直接傳遞值相當於複製貼上操作,傳地址相當於複製貼上快捷方式)
void fun(int* a,int* b,int* c)main()
3樓:匿名使用者
這道題的結果很簡單,x,y,z都沒夠改變數值,結果是30,20,10你問的是否交換數值,涉及到了你形式引數的問題了,像這道題,形參是數值,當然你本來的變數值不會改變,因為你只是把變數的值作為引數傳給了函式;
但是如果你的引數是指標或者引用的話,那麼你對形參的改變就相當於對變數的改變,因為他們對應的是同一個地址空間;
#include
關於指標做形參的情況,下面已經有人給你舉例了
4樓:匿名使用者
你需要傳地址進去而不是一個副本。
c語言問題:以下程式的輸出結果是?
5樓:polaris北斗
陣列a中的值沒有改變,所以a[2]的值還是6,選a
c語言,以下程式執行後的輸出結果是
6樓:匿名使用者
c=(a+=a-=5)是一個
表示式,(a=b,b+3)是另一個表示式。
a=0,a=a-5=-5,a=a+a=(-5)+(-5)=-10,將值賦給c,c=-10,此時,a=-5
a=b,將b的值賦給a,a=0,執行b+3=0+3=3,這個3不對任何變數賦值。
因此最終結果a=0,b=0,c=-10
輸出a、b、c的值,輸出0,0,-10
以下程式的輸出結果是()main(){ int a=3,b=2,c=1;
7樓:莘振梅果琴
你把**這麼寫應該能看的清晰一點12
3456
78910
1112
1314
1516
1718
1920
21main()
8樓:匿名使用者
我測試出來的結果不是2,5,1,2,2,3, -2
9樓:小陸仁
我沒看明白 你宣告2個int b 是怎麼通過的
別弄的眼花繚亂了 讓人去看,我一看語法已經不對 了 就看不下去了
10樓:謊言一樣的誓言
我輸出的時18,而且我覺得也應該是18
++b之後b=3,b*=(a+b) b=b*(a+b)=3*(3+3)=18
11樓:匿名使用者
不對吧?第二個b應該是18啊
12樓:我是胡歌粉
c-=++b//b=3,c=c-(++b)=-2
b*=a+b//b=b*(a+b)=3
13樓:夏若樹森
題錯了吧,要想b=3先把題改一下,b*=a+c
b=3,是因為在c-=++b處,b自增了,++b//b=b+1=2+1=3
b*=a+c//b=b*(a+c)=3*(3-2)=3
有以下程式,程式執行後輸出結果是include《stdio h》mainint i,n 0 for i
尾爽巴澤 結果是31,因為你的程式裡面case 後面都沒有break語句跳出,所以會依次執行下去,知道迴圈結束,具體來說就是當i 1的時候先執行case1,在執行case2,在執行default 此時a 8 然後執行i i 2,然後執行case2,在執行default 此時a先加3在加5就等於16,...
下面程式輸出結果是,下面程式輸出結果是什麼?
韋榮軒喜昱 當a 14時執行do while迴圈 由於開始時對a賦值10,所以輸出a 10,y 0 堵丹彤牟萱 輸出為 a 16 y 60,分析如下 main while a 14 這裡的迴圈條件不是判斷是否滿足a等於14,而是一個賦值語句,每次執行到這裡都會將14賦值給a,因此這裡的迴圈條件始終都...
c語言,以下程式的輸出結果是,C語言問題 以下程式的輸出結果是?
輸出1 3 這是遞迴了,所以先是fun 3 進入後發現3 2 1,所以又繼續func 3 2 也就是fun 1 進入發現1 2 0,就執行prinft,輸出1,然後fun 1 就返回了 返回出去正好是fun 3 的prinft,輸出3 進入fun 3 進入fun 1 輸出1退出fun 1 輸出3退出...