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... 先放張圖,規律bai很容易看出來吧 du首先,逗號 zhi運算子是 dao取右邊 這裡涉及到引數的求回值順序,即確定答最右側y 輸出是5後,自增1,導致下一步中間y 輸出是6,之後再自增1,最後y的輸出自然就是7。是不是眼熟,這不就是棧嘛,後進先出,這題不太會考察,出題人估計都沒想到這一層,只是單純... 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...下面程式的執行結果是,下面程式的輸出結果是什麼?
下述程式段的輸出結果是int x 10 int y xprintfd,dxy),y答案是
c語言題下面程式段執行後輸出結果是