下列程式段的輸出結果是void fun int

2022-08-17 08:30:23 字數 4108 閱讀 3642

1樓:鍾離愛景泰水

選c啦fun(&y,

&x);把y的地址傳遞給x,把x的地址傳遞給y,即執行到printf("%d

%d",*x,*y);時x=2,y=1;

然後*x=3;*y=4;給x,y賦值,但是x,y在網下傳時,想,y的值是交換了的(即fun(&y,

&x);把y的地址傳遞給x,把x的地址傳遞給y),所以執行到x=3;*y=4;時其實主函式中的x=4,y=3的,所以,printf("%d

%d",

x,y);執行的結果是x=4,y=3,所以選b

2樓:剛晚竹菅昭

fun(&y,

&x);函式內容是什麼啊?

原題是不是:

下列程式段的輸出結果是:(

).void

fun(

int*x,

int*y)

main(

)應該選擇c

fun(&y,

&x);把y的地址傳遞給x,把x的地址傳遞給y,即執行到printf("%d

%d",*x,*y);時x=2,y=1;

然後*x=3;*y=4;給x,y賦值,但是x,y在網下傳時,想,y的值是交換了的(即fun(&y,

&x);把y的地址傳遞給x,把x的地址傳遞給y),所以執行到x=3;*y=4;時其實主函式中的x=4,y=3的,所以,printf("%d

%d",

x,y);執行的結果是x=4,y=3,所以選c

下列程式段的輸出結果是:( ). void fun( int *x, int *y) { printf("%d %d",*x,*y);*x=3;*y=4;} main( )

3樓:程式設計師殷保華

fun(&y, &x);函式內容是什麼啊?

原題是不是:

下列程式段的輸出結果是:( ).

void fun( int *x, int *y)main( )

應該選擇c

fun(&y, &x);把y的地址傳遞給x,把x的地址傳遞給y,即執行到printf("%d %d",*x,*y);時x=2,y=1;

然後*x=3;*y=4;給x,y賦值,但是x,y在網下傳時,想,y的值是交換了的(即fun(&y, &x);把y的地址傳遞給x,把x的地址傳遞給y),所以執行到x=3;*y=4;時其實主函式中的x=4,y=3的,所以,printf("%d %d", x, y);執行的結果是x=4,y=3,所以選c

void fun(int *x,int *y) {printf("%d%d", *x=3,*y=4;}

4樓:

考查的是引數傳遞,及指標應用。

fun(&y,&x); 引數為地址傳送,void fun(int *x,int *y)接收的是(x=&y,y=&x) 輸出是y x也就是2 1

將地址賦的值更改為*x=3,*y=4;相當於主函式的y=3,x=4.

返回主函式輸出的是4 3

故最後輸出結假果:2143 答案是a

5樓:

選c首先fun函式裡面的printf輸出 為1 2然後經過 *x=3,*y=4 後,x的值變為3,y的值變為4在main函式裡面的printf輸出 為3 4所以結果為1 2 3 4

其實這題目的考點就是fun(int &x, int &y) 傳過去以後,實際上在fun()函式裡面操作的x,y就是 x,y本身,所以fun()函式執行完以後,x,y的值隨之也變了

6樓:

結果3 4 4 3

先呼叫fun函式將y,x傳入,改變y,x的值為3,4首先列印fun裡面的printf語句,輸出3,4最後列印main裡面的printf語句,因為x,y的值已在傳入是改變了,所以對應輸出4,3

7樓:匿名使用者

這就是編譯的結果:2143

8樓:

很明顯是3443, 你這答案哪的啊

以下程式的輸出結果是 #define min(x, y) (x) < (y) ? (x) : (y) main() { int i , j, k; i = 10; j = 15;

9樓:匿名使用者

結果為15。

程式的第一行進行帶參巨集定義,用巨集名min表示條件表示式(x) < (y) ? (x) : (y) ,形參x,y均出版現在條件表示式中。

權程式中 min(i,j) 為巨集呼叫,實參i,j,將代換形參x,y。

巨集後該語句為: 10*(i) < (j) ? (i) : (j),運算結束的結果為15。

巨集只是做了簡單的替換操作。而函式的引數只在函式呼叫時求值一次,並將結果傳遞給函式即可。

define,無參巨集定義的一般形式為:#define 識別符號 字串define 函式定義一個常量。

常量類似變數,不同之處在於:

在設定以後,常量的值無法更改。

10樓:匿名_熱心網友

綜合下面兩個你再稍微改一下吧,現在沒時間專門弄個完全專扣題的了,見諒#include

#include

#include

struct stu

{屬int num;

int wuli;

int huaxue;

int math;

11樓:匿名使用者

把巨集定義帶入 k = 10 * min(i, j)得k=10*icopy由於算數運算子(*)的優先順序高於比較運算子(<)和三目運算子(?:),所以應該先計算10*i得100,然後進行三目運算,因為100<15為假,所以結果等於j,即k=15

12樓:匿名使用者

巨集定義是按字串完全。完全的字串替換內。

所以k = 10 * min(i, j);

是容:k=10*(i) < (j) ? (i) : (j);

i是10,10*i 是100,

100<15,是假,所以k=j 所以是15.

13樓:匿名使用者

巨集定義最重要的就是要把握原樣代入的原則,不要主觀的加括號#define min(x, y) (x) < (y) ? (x) : (y)

所以:回

10 * min(i, j)

=10*i在10*i被結合了,答

將i = 10; j = 15代入,變成:

=10*10<15?10:15

=100<15?10:15

由於100<15為假,所以k=15

14樓:馮冶

首先你要明白#define min(復x,y) (x)<(y)?(x):(y).的意思,這是制一個帶引數的

bai巨集定義,起作用就du

是一個簡單的替換。其次你要zhi明白dao ? :是一個三目運算子。問號前面的表示式為真的話表示式的值就是?後面的值,要是假的話就是:後面的值。所以有:

k=10*min(j,k)=10*min(10,15)=10*10<15?10:15=15

15樓:匿名使用者

我被繞進去了

抄半個多小時,終於清醒了,bai答案是

du15.

關鍵在 (x) < (y) ? (x) : (y)對min(x,y)進行巨集定義的時zhi候,保險起見,應該寫成((x)dao

<(y)?(x):(y))。

為什麼外面再加個大括號呢,我一開始算的時候就是按照10小於15成立,所以min(i,j)等於i等於10,所以k=100。但是這是外面加了個大括號才這麼算的。沒加的話,就是這道題,結果就是k=10*x

x:y;即k=10*i

j,先計算乘法,k=100<15?10:15,也就是說100<15不成立,所以k=j=15。

所以巨集定義的時候最外面有沒有大括號很關鍵。

16樓:匿名使用者

c.15

k = 10 * (i) < (j) ? (i) : (j) = (10 * (i) ) < (j) ?

(i) : (j) = (100) < (15) ? (10) :

(15) = 15

下面程式的執行結果是,下面程式的輸出結果是什麼?

首先這裡的for迴圈沒有打 號括起 來,所以他只是迴圈緊跟著下面的一句 也就是這句,s 10 s ch i 0 這裡的整形運算加字元還是整形 i 0,s 0,for第一次迴圈 ch 0 1 滿足for迴圈條件,s 10 s ch i 0 所以s 10 0 1 0,s的結果為1,再運算 i 2 所以i...

下述程式段的輸出結果是int x 10 int y xprintfd,dxy),y答案是

先放張圖,規律bai很容易看出來吧 du首先,逗號 zhi運算子是 dao取右邊 這裡涉及到引數的求回值順序,即確定答最右側y 輸出是5後,自增1,導致下一步中間y 輸出是6,之後再自增1,最後y的輸出自然就是7。是不是眼熟,這不就是棧嘛,後進先出,這題不太會考察,出題人估計都沒想到這一層,只是單純...

c語言題下面程式段執行後輸出結果是

c沒有錯 static的變數 系統會全部初始化為0的 j 3,實際上第三列 從來沒賦過值 當然是0 答案是對的,你想一下,在兩個for 迴圈中,a 0 0 0,a 0 1 1,a 0 2 2,a 0 3 a 0 7 都是為0的,下面以此類推,這個的原理很簡單,就是我們已經定義了一個二維陣列a 8 8...