c語言下列程式執行結果int a 7,b

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

1樓:岔路程式緣

下列程式的執行結果是( d)。 #include int a=7, b=3; void fun (int x, int y) main ( ) a. 4, 7 b.

7,3 c. 2,6 d. 8,6

答案選d,原因是:

1、首先程式開頭定義的a=7,b=3屬於全域性變數。它在所有函式中有效。

2、其次在main函式中又定義了兩個同名變數int a=8, b=6;,它們是區域性變數,僅僅在main函式中有效。

3、這就產生了一個很大的問題,在main函式中同時存在兩個變數a(全域性的7、區域性的8)和兩個變數b(全域性的3、區域性的6),不僅暈,而且亂!為避免矛盾和衝突,c規定:變數名稱衝突時,區域性變數優先與於全域性變數。

所以,看似高大上的"全域性變數"在區域性變數面前隱、身、了。

4、所以在,在main中提到的a和b,跟全域性變數7和3沒有半毛錢關係。它們的值一直是8和6。

5、函式void fun(a,b)雖然呼叫a和b做實參,但也只是把a和b複製了一份去參加fun的執行,複製完就沒有a和b的什麼事兒了,無論fun怎樣做,都不會影響a和b,更不會影響它們的值(8和6)。

6、最後列印a.b的值,列印是8和6了!

7、也就當然選d啦?

2樓:樓主_回頭是岸

這個傳值和傳地址的問題

他是進入了fun(a,b);這個函式

但是並沒有改變外面 a和b的值

要改變的話就要用指標

#include

int a=7, b=3;

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

c語言 42.下列程式的執行結果是( ) void fun(int *a,int *b) {int *k;

3樓:

很多答案雖然選對了,但是其實是錯的,這裡不僅a,b的值不變,指標也不變,換句話說就算printf("%d %d",*x,*y),答案也是一樣的

4樓:高中的資訊

答案是a。首先執行main()主函式,執行到fun(x,y)函式時,呼叫viod fun()函式,賦值交換,改變a,b的值,printf()輸出

5樓:哈欠聊科技

答案選b.

函式 fun(int* a,int* b)的兩個引數型別都是int*型.

也就是說,引數變數a, b本身的值不會變.

當傳入兩個實參int* x , int* y後.

儘管fun裡面作了交換操作,這種交換不會影響到原來的x,y變數值.

要象這樣定義fun函式,才有意義.

void fun(int *a,int *b){int k;

6樓:匿名使用者

b 3 6

fun裡交換的只是x,y的指向,即將y指向了b,x指向了a,而a,b本身不會變。

7樓:匿名使用者

bfun裡邊交換的只是x,y裡儲存的地址,即將x的地址指向了b,y的地址指向了a,實際上a,b並沒有參與fun函式。

8樓:好時光悄悄溜走

只不過是地址交換了,a,b不變,但是*x,*y變了

c語言執行以下程式段後變數a的值是:( ) int a=0, b=3;

9樓:匿名使用者

條件a+b&&a++&&b-a&&a是這樣執行的,a+b=3,a++先判斷在自增,判斷為0,自增後為1,因為判斷為0,所以邏輯短路,後面的也就不判斷了

switch裡面是0,所以case 0執行成功,也就是說從case 0後面的語句都要執行,知道遇到break

a++;

case 1:b++;

case 2:a+=b;

也就是這些都有執行

所以是6

選d不懂再問懂請採納

有定義語句"int a=1,b=2,c=3,x;"以下各程式段執行後,x的值不為3的是 c語言求助!!!

10樓:匿名使用者

第一題(c)

m=1;m%4=1所以s=s+m=0+1=1 k=1m=2;m%4=2; s=-1 k=0

m=3;s=-4 k=-4

m=4;s=0 k=-4

第二題(c)

a.前兩個條件不成立回,所以x=3;

b.第一個條件成立,跳過

答之後條件,x=3;

c.第一個成立,x=3,第二個成立x=2,第三個不成立,所以最終x=2

d.第一個成立,x=2,第二個成立x=3,第三個不成立,所以x=3

c語言中, 已知int a=1,b=2 ,c=3 以下語句執行後a,b,c的值是??

11樓:思念不溼

應該是看成

if (a>b)

a=b;

b=c;

if只管到c=a ; 因為a=1,b=2,不滿足if,所以執行後面的,a=b=2,b=c=3,c還是3選b

12樓:uspta鄭州站

條件a>b不成立

所以c=a執行,所以

a=2,b=3,c=3

13樓:當上帝愛上天使

a,原文中a不大於b,則不滿足if條件~則不執行下列語句~所以abc的值不變

14樓:匿名使用者

沒學過都會 不是打擊你哦 都告訴你整形常量 a b c的值了 下面的式子 如果 a>b就執行 c=a;a=b;b=c c=a是把a的值給c 下面是一個意思 把b的值給a c的值給b 你自己看選什麼吧 a>b不滿足的時候就不執行語句 結果a=1 b=2 c=3

二級C語言,下列程式的輸出結果是

迴圈條件應該是 p 0 吧 字串存的形式是 a b a b c d c d 0 所以迴圈條件就是判斷字串是否到頭了,然後if判斷p指向的字元ascii碼是否在a和z之間,由於大寫字母的ascii碼小於小寫字母,如果是小寫字母就記錄到字元陣列a中,當迴圈完成後在a最好乙個記錄的字元後加字串結束符 0 ...

c語言,下面的程式結果為啥是,c語言,下面的程式結果為啥是

恭喜你,你發現了一個非常重要的系統漏洞形式。有很多對系統的破解都是基於此原理,下面我此進行一下解釋。首先先大概指明錯誤 char buf 4 是分配了4個位元組的儲存空間,strcpy buf,aaaa 是向buf寫入5個位元組的資料,因為別忘了字串最後總隱藏著一個字串結束符 0 也就是說,strc...

程式執行後的輸出結果是,c語言,以下程式執行後的輸出結果是

32768正確 乙個整型變數只能容納 32768 32767範圍內的數,無法表示大於32767的數。遇此情況就發生溢位,但執行時並不報錯。數值達到最大值時後,從最小值計數,所以32768 32767 1,在c裡就又回到 32768了 把int b 改成long b b ld 再試試看 根據編譯器的不...